Skip to content

Commit

Permalink
aguia-pescadora-bravo (#16), monit (#44): configuracao basica do monit
Browse files Browse the repository at this point in the history
  • Loading branch information
fititnt committed May 25, 2019
1 parent 64ebf5b commit a731544
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 4 deletions.
35 changes: 35 additions & 0 deletions logbook/aguia-pescadora-bravo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -957,6 +957,41 @@ sudo apt install r-base
# https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-monit
sudo apt install monit

sudo systemctl enable monit
sudo systemctl start monit

vim /etc/nginx/sites-available/monit.abp.etica.ai.conf
# Adicione as configurações do monit...
sudo vim /etc/nginx/sites-available/monit.apb.etica.ai.conf
# Adicione todas as customizacoes deste usuario no arquivo acima...

# Aqui criamos uma pasta "compartilhada" para depois permitir que usuarios
# possam editar algumas coisas no que o monit monitora
sudo mkdir -p /home2/_compartilhado

sudo vim /home2/_compartilhado/ips-aceitavelmente-confiaveis.conf
# NOTA: restrição baseada apenas em IPs deve ser feita com muito cuidado.
# no nosso caso qualquer pessoa poderia acessar o monitoramento do Monit
# via localhost, o que implica todos que tem acesso de conta SSH comum.
# Isso não chega a ser um problema se confiamos nas pessoas, mas é algo
# que precisa aplicações que eles e que dão acesso simulando localhost
# podem dar problema. (fititnt, 2019-05-25 09:56 BRT)

sudo ln -s /etc/nginx/sites-available/monit.apb.etica.ai.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

sudo certbot --nginx -d monit.apb.etica.ai

# Copia alguns arquivos padroes do monit e os habilita
sudo ln -s /etc/monit/conf-available/nginx /etc/monit/conf-enabled

sudo systemctl reload monit

# Aqui criamos uma pasta "compartilhada" para depois permitir que usuarios
# possam editar algumas coisas no que o monit monitora
sudo mkdir -p /home2/_compartilhado/monit/conf-enabled/

#------------------------------------------------------------------------------#
# SEÇÃO: AJUDA AO USUARIO #
# TL;DR: Lista como é documentado ao usuario final o que este servidor #
Expand Down
10 changes: 6 additions & 4 deletions logbook/aguia-pescadora-bravo/etc/monit/monitrc
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,10 @@
## commands to a running Monit daemon. See the Monit Wiki if you want to
## enable SSL for the HTTP interface.
#
# set httpd port 2812 and
# use address localhost # only accept connection from localhost
# allow localhost # allow localhost to connect to the server and
# allow admin:monit # require user 'admin' with password 'monit'
set httpd port 2812 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
# allow admin:monit # require user 'admin' with password 'monit'
# #with ssl { # enable SSL/TLS and set path to server certificate
# # pemfile: /etc/ssl/certs/monit.pem
# #}
Expand Down Expand Up @@ -305,4 +305,6 @@
#
include /etc/monit/conf.d/*
include /etc/monit/conf-enabled/*

include /home2/_compartilhado/monit/conf-enabled/*
#
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# FILE: /etc/nginx/sites-available/monit.apb.etica.ai.conf

server {

server_name monit.apb.etica.ai;

include /home2/_compartilhado/ips-aceitavelmente-confiaveis.conf;

location / {
proxy_ignore_client_abort on;
proxy_pass http://127.0.0.1:2812;
}

listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/monit.apb.etica.ai/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/monit.apb.etica.ai/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
if ($host = monit.apb.etica.ai) {
return 301 https://$host$request_uri;
} # managed by Certbot

include /home2/_compartilhado/ips-aceitavelmente-confiaveis.conf;

listen 80;
listen [::]:80;

server_name monit.apb.etica.ai;
return 404; # managed by Certbot


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# FILE: /home2/_compartilhado/ips-aceitavelmente-confiaveis.conf
#
# AVISO: NÃO É UMA PRÁTICA IDEAL CONFIGURAR ACESSO POR IPS.
# ESTE AQUIVO AQUI É UMA FORMA PREGUIÇOSA DE SEGURANÇA.
# Note que se um app seu der acesso de localhost para
# uma pessoa estranha, ele pode trollar o servidor inteiro.
# (fititnt, 2019-05-25 09:43 BRT)
#
# Esta lista contém IPs, além de localhost, usados para permitir acesso remoto a paineis
# administrativos sem necessidade de senha. Por exemplo:
#
# https://monit.apb.etica.ai/
#
# Ou seja, sim, você que tem Acesso SSH ao servidor, mesmo sem ter root
# poderia configurar uma VPN e iniciar/reiniciar sistemas mesmo não sendo
# root.
#
# Administradores: nao é preciso enviar para o Git esse arquivo atualizado com
# seu IP real. Mas se enviar sem querer, não seria o fim do mundo
#

# Admin: edite /etc/nginx/conf.d/admin-ips.conf, de 'sudo systemctl reload nginx' e acesse
# https://monit.apb.etica.ai/.
allow 123.456.789.101;
allow 123.456.789.102;
allow 123.456.789.103;


# Permite acesso de localhost
allow 127.0.0.1;

# Ignore todo resto
deny all;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
check system $HOST
if loadavg (1min) > 4 then alert
if loadavg (5min) > 2 then alert
if cpu usage > 95% for 10 cycles then alert
if memory usage > 75% then alert
if swap usage > 25% then alert

0 comments on commit a731544

Please sign in to comment.