# apt-get install zabbix-agent
# systemctl start zabbix-agent
# apt-get enable zabbix-agent
# apt-get install zabbix-agent
# systemctl start zabbix-agent
# apt-get enable zabbix-agent
Hoje vamos falar de monitoração, mais precisamente de monitoração com a ferramenta Zabbix.
Além disso é possível criar regras de relacionamento para análise de causa raiz para problemas que ocorram.
Sem contar a possibilidade de monitorar recursos por agente, sem agente, SNMP, IPMI e JMX. É realmente uma grande quantidade de opções.
Bem, vamos lá, para parte prática!
Nosso cenário será o seguinte:
# wget https://repo.zabbix.com/zabbix/5.2/debian/pool/main/z/zabbix-release/zabbix-release_5.2-1+debian10_all.deb
# dpkg -i zabbix-release_5.2-1+debian10_all.deb
# apt-get update
# apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
# apt-get install mariadb-common mariadb-server mariadb-client
# systemctl start mariadb ; systemctl enable mariadb
# mysql_secure_installation
Enter current password for root (enter for none): Pressione Enter
Set root password? [Y/n]: Y
New password: <Enter root DB password>
Re-enter new password: <Repeat root DB password>
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
- Criando o database -
# mysql -uroot -p'Senha-do-Banco-de-Dados' -e "create database zabbix character set utf8 collate utf8_bin;"
- Permitindo conexão -
# mysql -uroot -p'Senha-do-Banco-de-Dados' -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'Senha-do-usuario-zabbix';"
- Importando o schema e data-
# mysql -uroot -p'Senha-do-Banco-de-Dados' zabbix -e "set global innodb_strict_mode='OFF';"
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p'Senha-do-usuario-zabbix' zabbix
- Habilitando o strict mode -
# mysql -uroot -p'Senha-do-Banco-de-Dados' zabbix -e "set global innodb_strict_mode='ON';"
DBPassword=Senha-do-usuario-zabbix
Até mesmo no ambiente produção (fora este lab que estamos fazendo) é bom já deixar anotado para solicitar ou fazer as liberações no firewall.
3 - Agora vamos fazer o start e enable do serviço Zabbix Server e Agent Processes
# systemctl restart zabbix-server zabbix-agent ; systemctl enable zabbix-server zabbix-agent
php_value date.timezone America/Sao_Paulo
# systemctl restart apache2 ; systemctl enable apache2
Fala pessoal, beleza?
Espero que estejam todos bem!
Conforme meu post sobre Jenkins e pipeline para deploy de uma aplicação, vamos para segunda parte.
A primeira parte foi apenas para instalação e a segunda agora é para criação e uso de um pipeline.
Vamos definir pipeline como uma sequência de instruções que serão executadas até finalizar e prover uma entrega.
Nosso cenário será o seguinte:
Uma observação importante: Eu não sou um expert e nem estou falando que este modelo de pipeline que estou propondo é o melhor e que não podemos fazer de outra forma. Essa foi uma forma que achei para ajudar em uma necessidade do meu dia-a-dia, OK? Cada um deve avaliar a melhor forma de usar a estrutura de funcionalidade e adaptar para o seu uso.
Agora vamos a criação do pipeline na console do Jenkins.
Para isso clicar em New Job - Insira um nome - Clique em pipeline - OK
pipeline {
agent none
environment {
IP = "xx.xx.xx.xx"
}
stages {
stage ('Copia o pacote da aplicacao para o servidor') {
agent any
steps {
sh '''#!/bin/bash
scp /home/jenkins/repoapp/mon-java.tar.gz root@$IP:/opt
'''
}
}
stage ('SSH + desccompacta pacote do aplicacao') {
agent any
steps {
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no root@$IP << EOF
tar xzvf /opt/mon-java.tar.gz -C /opt
exit
EOF
'''
}
}
stage ('Adiciona usuario banco Postgres e muda permissao do data e tmp'){
agent any
steps {
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no root@$IP << EOF
useradd -m -d /opt/ManageEngine/OpManager/pgsql/ postgres
chown -R postgres:postgres /opt/ManageEngine/OpManager/pgsql/tmp/
chown -R postgres:postgres /opt/ManageEngine/OpManager/pgsql/data/
exit
EOF
'''
}
}
stage ('Cria o serviço e incia a aplicacao'){
agent any
steps {
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no root@$IP << EOF
cd /opt/ManageEngine/OpManager/bin/
./linkAsService.sh
systemctl daemon-reload
systemctl start OpManager.service
exit 0
EOF
'''
}
}
stage ('Alguns tunings na aplicacao'){
agent any
steps {
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no root@$IP << EOF
sed -i 's/wrapper.java.initmemory=512/wrapper.java.initmemory=600/g' /opt/ManageEngine/OpManager/conf/wrapper.conf
sed -i 's/wrapper.java.maxmemory=1024/wrapper.java.maxmemory=1500/g' /opt/ManageEngine/OpManager/conf/wrapper.conf
sed -i 's/24MB/1024MB/g' /opt/ManageEngine/OpManager/pgsql/data/postgres_ext.conf
sleep 4m
exit
EOF
'''
}
}
}
}
Um dica rápida para quem usa Ubuntu Server ou até mesmo para quem está estudando as possibilidades de utilizá-lo depois do anúncio do fim do CentOS.
Bem, pra quem trabalha com monitoração é comum ter que configurar o serviço SNMP no servidor para que ele possa envitar traps ou até mesmo para que a monitoração faça consultas e assim gerar a coleta do consumo de recursos e/ou disponibilidade.
Bem, vou tentar explicar brevemente algumas coisas antes de continuar:
SNMP
Exemplo da estrutura de uma MIB:
Acontece que fazendo uma "varredura" em um equipamento por toda estrutura do SNMP que ele responde, pode não ser muito amigável a saída de cada OID. Isso mesmo! Podemos ter saída apenas no formato número e para saber o que é cada item, ter que pegar o número, consultar na internet ou documentação da MIB para verificar qual componente/monitor ele se refere.
Existe algumas opções de comando que fazem a tradução destes OIDs para nomes mais amigáveis e assim podermos ter uma noção melhor do monitor ao qual o OID se refere.
No Ubuntu Server, encontrei um problema onde essa tradução não estava funcionando e por isso resolvi fazer este post para compartilhar.
Para os testes vamos utilizar o comando:
# snmpwalk -t -2 -v2c -c servers IP-DO-DEVICE .1.3.6.1.2.1.25.2.3.1.2
Como podemos ver na imagem acima, não temos a menor ideia do que é cada OID ou cada monitor por assim dizer, quando fazemos uma consulta específica por um bloco da estrutura da MIB.
No Ubuntu Server para resolver isso, precisamos comentar a linha "mibs :" no arquivo /etc/snmp/snmp.conf
Após comentar a linha e salvar o arquivo, devemos fazer o restart do serviço do SNMP
# systemctl restart snmpd.service
E ao fazer o mesmo teste novamente, a saída deve ser semelhate à abaixo:
Apenas como comparativo, quando utilizava CentOS isso não era necessário, pois a configuração que vinha "padrão" na instalação funcionava dessa forma.
Mas é isso ...
Nem tudo é igual no mundo Linux quando falamos de uma distribuição para outra, alguns ajustes requerem mais interação nossa, etc...
Espero que isso ajude.
Até a próxima.
Abs
:wq!