Um dashboard para monitoramento e acompanhamento das atividades do servidor Zimbra usando Graylog e Grafana
ATENÇÃO – Para instalação do servidor Graylog+Grafana+Elasticsearch, estamos partindo de um Ubuntu 18.04 LTS (pelos relatos, em um Ubuntu 16.04 LTS também funciona sem problemas)
Instalação do java oracle 8
add-apt-repository ppa:webupd8team/java
apt-get update
apt install oracle-java8-set-default
#verifique a versão do java
root@graylog2:/etc/ansible# java -version
java version “1.8.0_191”
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
Instalação do MongoDB
apt install mongodb
# Verifique se o mongodb está rodando
systemctl status mongodb
Instalação do Elasticsearch
cd /tmp
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.12.deb
dpkg -i elasticsearch-5.6.12.deb
Agora, edite o arquivo /etc/elasticsearch/elasticsearch.yml e remova o comentário “#” do cluster.name: e modifique o my-application para o nome do seu cluster. Irei utilizar o nome graylog
Antes
#cluster.name: my-application
Depois
cluster.name: graylog
Salve e saia.
#Reinicie o elasticsearch
systemctl restart elasticsearch
# Verifique se o elasticsearch foi iniciado corretamente:
root@graylog2:/tmp# ps aux|grep -i elasticsearch
elastic+ 8998 11.9 28.2 4593768 2308560 ? Ssl 16:33 0:11 /usr/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/usr/share/elasticsearch -cp /usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -p /var/run/elasticsearch/elasticsearch.pid –quiet -Edefault.path.logs=/var/log/elasticsearch -Edefault.path.data=/var/lib/elasticsearch -Edefault.path.conf=/etc/elasticsearch
# Verifique se a porta 9200 está aberta e recebendo conexões
root@graylog2:/tmp# netstat -nap |grep 9200
tcp6 0 0 127.0.0.1:9200 :::* LISTEN 8998/java
tcp6 0 0 ::1:9200 :::* LISTEN 8998/java
Instalação do Graylog 2.4.x
wget https://packages.graylog2.org/repo/packages/graylog-2.4-repository_latest.deb
apt update
apt install graylog-server
#Habilite o graylog-server na inicialização
systemctl enable graylog-server.service
#Configurando o Graylog
#instale o pwgen
apt install pwgen
# Precisamos gerar uma senha randomica usada para criptografar as senhas dos usuarios.
sudo -E sed -i -e “s/password_secret =.*/password_secret = $(pwgen -s 128 1)/” /etc/graylog/server/server.conf
# para verificar a senha gerada, execute o comando abaixo
root@graylog2:/tmp# grep password_secret /etc/graylog/server/server.conf
#O resultado será algo como o abaixo:
password_secret = MJsbRKtgjtHL9dwQYV9rmL5CR7icnTnOMBARynAGmLhNUvDuyrOlHBEl887drBypXOoFhwSpKpPVk9sieWk3Ml6m4SaSc7GOj2vxkCgs4gPIq6xDRCZqvTksTBGCEsxT
# Agora iremos gerar para o root_password_sha2 -> Altere o valor de ZimBrasil por uma senha que você escolher
sudo sed -i -e “s/root_password_sha2 =.*/root_password_sha2 = $(echo -n ‘ZimBrasil’ | shasum -a 256 | cut -d’ ‘ -f1)/” /etc/graylog/server/server.conf
# para verificar a senha criptografada do usuário root, verifique com o comando abaixo
root@graylog2:/tmp# grep root_password_sha2 /etc/graylog/server/server.conf
#O resultado será algo como o abaixo:
root_password_sha2 = f08a994ad0e0e691a89fff7e73d6a278c7ba682c0661c98a2b74db81b87c5774
# Agora, vamos editar o arquivo /etc/graylog/server/server.conf e modificar os valores abaixo:
rest_listen_uri = http://ip_do_servidor_ou_hostname:9000/api/
e
web_listen_uri = http://ip_do_servidor_ou_hostname:9000/
# No caso do servidor que estou montando para este tutorial, o resultado será::
# Api para acesso local
rest_listen_uri = http://10.0.0.4:9000/api/
web_listen_uri = http://10.0.0.4:9000/
Salve e saia.
# Reinicie o servidor graylog
systemctl restart graylog-server
# Verifique se o graylog-server está rodando
systemctl status graylog-server.service
root@graylog2:/tmp# systemctl status graylog-server.service
● graylog-server.service – Graylog server
Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-10-19 16:55:29 UTC; 26s ago
Docs: http://docs.graylog.org/
Main PID: 12415 (graylog-server)
Tasks: 102
Memory: 766.6M
CPU: 40.792s
CGroup: /system.slice/graylog-server.service
├─12415 /bin/sh /usr/share/graylog-server/bin/graylog-server
└─12419 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX:+CMSClassUnloadingEnabled –
Oct 19 16:55:29 graylog2 systemd[1]: Started Graylog server.
#Agora, acesse o graylog pelo browser: http://ip_do_servidor_ou_hostname:9000/
Logue com o usuário admin e a senha informada no root_password_sha2 – no exemplo que fizemos, setei a senha como ZimBrasil
# Vamos criar o indice para o zimbra.
Vá até o Menu “System” em seguida vá em “Indices”
Clique no botão “Create index set”
Na sua máquina local, faça o download do repositório https://github.com/opc40772/Zimbra-Graylog – o arquivo é o https://github.com/opc40772/Zimbra-Graylog/archive/master.zip
Descompacte e volte para o Graylog.
Vá até o Menu “System” em seguida vá em “Content Packs”
Vá em “Import content pack”
Escolha o arquivo “content_pack_zimbra.json” que está dentro da pasta descompactada (Zimbra-Graylog-master/Content\ Pack/content_pack_zimbra.json
Clique no botão Upload.
Haverá uma nova tab chamada Zimbra.
Clique nela, selecione a opção “Zimbra Content Pack” e clique em “Apply Content”
Filebeat e Zimbra – Esse procedimento deverá ser realizado somente no servidor Zimbra!!!
Acesse o servidor zimbra e instale o filebeat
Vá até a página de downloads do filebeat e baixa a versão para o seu Zimbra (DEB ou RPM)
Para debian/ubuntu 64-bits
cd /tmp
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.2-amd64.deb
dpkg -i filebeat-5.6.2-amd64.deb
Para CentOS ou RHEL 64-bits
cd /tmp
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.2-x86_64.rpm
rpm -ivh filebeat-5.6.2-x86_64.rpm
Agora, com o filebeat configurado, iremos adicionar os logs do zimbra para enviar para o nosso Graylog.
Guarde o arquivo filebeat.yml como backup.
mv /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml_ORIGINAL
Agora, crie o arquivo /etc/filebeat/filebeat.yml com o conteúdo abaixo
Veja o exemplo válido em: https://pastebin.com/XAye0gVQ
Muito cuidado ao copiar por causa da identação do tipo de arquivo YAML
#=================== Filebeat prospectors ======================
filebeat.prospectors:
– input_type: log
document_type: postfix
paths:
#No caso de ubuntu é mail.log e no do CentOS é maillog no caminho abaixo
– /var/log/mail.log
– input_type: log
document_type: zimbra_audit
paths:
– /opt/zimbra/log/audit.log
– input_type: log
document_type: zimbra_mailbox
paths:
– /opt/zimbra/log/zmmailboxd.out
– input_type: log
document_type: nginx
paths:
– /opt/zimbra/log/nginx.access.log
#——- Logstash output ——-
output.logstash:
hosts: [“ip_do_servidor_ou_hostname:5045”]
bulk_max_size: 2048
template.name: “filebeat”
template.path: “filebeat.template.json”
template.overwrite: false
### Salve o arquivo e saia.
Reinicie o filebeat
systemctl restart filebeat.service
ou
service filebeat restart
Volte para o graylog e vá até o menu “Streams” e selecione o stream “Zimbra”
Você já deve estar recebendo os logs do seu zimbra.
Para testar, envie alguns emails do seu zimbra para usuários externos (fora do seu zimbra) e o inverso também.
Para testar as regras do “content_pack_zimbra.json” que instalamos no Graylog, vamos supor que:
o meu email joaozinho@gmail.com envio um email para o ananias@zimbrasil.com.br
Basta fazer a query a seguir:
from:adervanrodrigues123@gmail.com AND to:ananias@zimbrasil.com.br
E o resultado será como o apresentado na imagem abaixo
<<add img query teste>>
Instalação do Grafana
Agora vamos ao dashboard com o grafana.
Na máquina do Graylog, vá até o terminal para que possamos instalar o Grafana e suas dependências.
cd /tmp
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.1.4_amd64.deb
dpkg -i grafana_5.1.4_amd64.deb
Instale os plugins adicionais rodando os comandos abaixo:
/usr/sbin/grafana-cli plugins install briangann-datatable-panel
/usr/sbin/grafana-cli plugins install grafana-piechart-panel
/usr/sbin/grafana-cli plugins install grafana-worldmap-panel
Habilite o grafana-server na inicizalização
systemctl enable grafana-server.service
Inicie o grafana-server
systemctl start grafana-server.service
Agora, acesse pelo browser/navegador a url http://ip_do_servidor_ou_hostname:3000
Usuário: admin
Senha: admin
Após o login, a primeira coisa a se fazer, é criar uma datasource de conexão com o elasticsearch.
Vamos lá!
Salve e verifique se o teste ocorreu com sucesso.
Faça o Download do arquivo aqui https://www.zimbrasil.com.br/wp-content/FILES_UPLOAD/Zimbra-Graylog-ZimBrasil.json
Troque tudo que tem no conteúdo do arquivo json de meudominio.com.br paraseudominio.com.br
Se foi tudo bem, clique no menu direito, Dashboards, Home.
Clique em “New Dashboard”
Agora no menu superior “New Dashboard” e em seguida “Import Dashboard”
Selecione o botão “Upload .json File” e escolha o arquivo “Zimbra_Grafana_Zimbrasil.json”
e clique em “Import”
Aguarde e seu painel já estará pronto!
Comentários