Instalando Zabbix Agent no CentOS/RHEL 6 e 7

Olá amigos.

O agente Zabbix concentra as informações locais sobre o dispositivo monitorado para posterior envio ao servidor ou proxy Zabbix (dependendo da configuração). Em caso de falhas (como um disco cheio ou a interrupção de um processo) o servidor Zabbix pode alertar .

Existe inúmeros agentes como (FreeBSD, OpenBSD, Windows, Centos, Debian, openSUSE, Ubuntu, Ipmi, Jmx e SNMP).

Abaixo vamos realizar a simples instalação do Zabbix Agente .

Adicionar repositórios
Vamos executar os comandos abaixo conforme o seu SO para adicionar o Zabbix agente ao repositório

CentOS 6 execute o comando abaixo:

rpm -Uvh http://repo.zabbix.com/zabbix/4.0/rhel/6/x86_64/zabbix-release-4.0-1.el6.noarch.rpm

CentOS 7 execute o comando abaixo:

rpm -Uvh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

Instalando o Zabbix Agente

yum install zabbix-agent

Definindo o arquivo de configuração
Minha sugestão é deletar o arquivo original de configuração e criar um arquivo novo somente com as informações necessárias :

rm /etc/zabbix/zabbix_agentd.conf

Agora vamos criar o novo arquivo e informar as configurações necessarias:

vim /etc/zabbix/zabbix_agentd.conf

Adicione as linhas abaixo, lembrando de substituir o endereço do servidor zabbix e o nome do servidor monitorado:

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
DebugLevel=3
Server=IP DO SERVIDOR ZABBIX
StartAgents=5
ServerActive=IP DO SERVIDOR ZABBIX
Hostname=HOSTNAME DA MAQUINA MONITORADA
Timeout=3
Include=/etc/zabbix/zabbix_agentd.d/*.conf

Iniciando o serviço do Zabbix Agent

CentOS 6 execute o comando abaixo para habilitar a inicialização e subir o serviço:

# service zabbix-agent start
# chkconfig zabbix-agent on

CentOS 7 execute o comando abaixo para habilitar a inicialização e subir o serviço:

# systemctl start zabbix-agent
# systemctl enable zabbix-agent

Liberando as portas no iptables

Caso o firewall do servidor esteja habilitado é necessário executar o comando abaixo para liberação da porta de comunicação:

iptables -A INPUT -p tcp -s 192.168.1.100 --dport 10050 -m state --state NEW,ESTABLISHED -j ACCEPT

Lembrando que é necessario subistituir o ip do comando pelo o ip do seu server Zabbix.

Validando a Execução do Agente

Execute o comando abaixo para validar a execução do Zabbix Agent :

systemctl status zabbix-agent

Conforme a imagem abaixo você pode ver que o serviço do Zabbix está rodando.

Bom pessoal o procedimento é simples e qualquer duvida estou a disposição.

Abraços

Continue Reading

Como monitorar MYSQL/MariaDB com Zabbix

Olá amigos.

Estaremos configurando o Zabbix server para realizar o monitoramento de um servidor de aplicação Linux com o Centos 7 que atualmente está executando uma aplicação WEB no MariaDB.

MariaDB instalado no Centos 7

Preparação do Banco de Dados

Primeiro teremos que executar as querys abaixo no banco para preparação do mesmo para monitoramento:

Conectar no banco de dados:

mysql -u root -p

Criando usuário no banco para o Zabbix poder executar as querys de monitoramento:

create user 'zabbix_admin'@'localhost' IDENTIFIED BY 'Password';

Rodando o comando para conceder os privilégios ao usuário:

GRANT USAGE ON *.* TO 'zabbix_admin'@'localhost' IDENTIFIED BY 'Password';

Atualizando as liberações realizadas:

flush privileges;

Após executado os comandos acima basta aplicar o comando abaixo para desconectar do banco e voltar ao SO. Lembrete, faça a definição da sua senha para o usuario zabbix_admin no campo ‘Password’ informado no Script.

exit

Configurando o Cliente

Lembrete, é necessário ter o Zabbix Agent instalado no servidor .

Para monitorar o MySql / MariaDB nós temos que criar um arquivo chamado userparameter_mysql.conf em /etc/zabbix/zabbix_agentd.conf.d/

O arquivo conterá as configurações para coletar os dados:

vim /etc/zabbix/zabbix_agentd.conf.d/userparameter_mysql.conf

Adicione as linhas abaixo dentro do arquivo criado:

# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.
#
# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax is mysql.status[variable].
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}' # My line
#
# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
# Key syntax is mysql.size[<database>,<table>,<type>].
# Database may be a database name or "all". Default is "all".
# Table may be a table name or "all". Default is "all".
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
# Database is mandatory if a table is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[$
#
#Default below
UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive 
#
#My line
UserParameter=mysql.uptime,HOME=/etc/zabbix mysqladmin status | cut -f2 -d ":" | cut -f1 -d "T" | tr -d " "
UserParameter=mysql.threads,HOME=/etc/zabbix mysqladmin status | cut -f3 -d ":" | cut -f1 -d "Q" | tr -d " "
UserParameter=mysql.questions,HOME=/etc/zabbix mysqladmin status | cut -f4 -d ":"|cut -f1 -d "S" | tr -d " "
UserParameter=mysql.slowqueries,HOME=/etc/zabbix mysqladmin status | cut -f5 -d ":" | cut -f1 -d "O" | tr -d " "
UserParameter=mysql.qps,HOME=/etc/zabbix mysqladmin status | cut -f9 -d ":" | tr -d " "
UserParameter=mysql.version,mysql -V

Em seguida, precisamos fornecer ao Zabbix as informações de login para nosso novo usuário. Crie um arquivo chamado .my.cnf em /etc/ zabbix/

vim /etc/zabbix/.my.cnf

Adicione as linhas abaixo, lembrando de substituir o password pela senha definida.

#
[mysql]
user=zabbix_admin
password=Password
[mysqladmin]
user=zabbix_admin
password=Password

Reinicie o serviço do agente zabbix usando o seguinte comando:

systemctl restart zabbix-agent

Pronto, até este momento a parte do cliente e agente estão prontas. Agora precisamos preparar o Zabbix Server para monitorar este host.

Configurando o Zabbix Server

É necessário que seja selecionado o template do MYSQL no host monitorado conforme imagem abaixo:

Após a inclusão do template é importante lembrar que a primeira coleta e visão dos dados pode demorar até uma hora dependendo das configurações do ambiente. Abaixo um exemplo da visão do servidor monitorado com a configuração que realizamos

O setup foi simples e creio que seja interessante utilizar nos servidores que possuem banco de dados local .

Qualquer duvida estou a disposição. Abraços

Continue Reading

Script para automatizar a instalação do Zabbix Agente

Olá Amigos.
Recentemente venho trabalhando bastante com o Zabbix que me surpreendeu pela eficiência e facilidade que a ferramenta tem de se moldar ao seu ambiente.

O agente Zabbix é instalado no dispositivo a ser monitorado, também monitora ativamente os recursos e aplicações locais (discos e partições, memória, estatísticas do processador, etc).
O que mais me chama atenção é que o agente Zabbix são muito eficientes pois utilizam chamadas nativas do sistema operacional para obter as informações estatísticas.

O agente Zabbix é suportado por:
• Linux
• IBM AIX
• FreeBSD
• NetBSD
• OpenBSD
• HP-UX
• Mac OS X
• Solaris: 9, 10, 11
• Windows: 2000, Server 2003, XP, Vista, Server 2008, 2012, 2016 , 7 , 8 10

O problema:

Há alguns dias tive o problema de ter que publicar para todos os servidores da empresa o Zabbix, e a ideia que tive foi fazer um script para copiar os executáveis do monitoramento e criar o arquivo de configuração pegando o nome do servidor e passando para o arquivo de configuração.
Depois do script criado a minha ideia foi utilizar um GPO para aplicar esse script para OU que contem os servidores. Basicamente uma solução rápida.

Segue abaixo o script:

@echo off
REM #
REM #versao mark-v0.2#
REM #
REM #NOME#
REM #instala_zabbix.exe#
REM #
REM #DESCRICAO#
REM #Instalao Zabbix via rede nos servidores Windows#
REM #
REM #
REM #GERALDO LUCAS POLI (27/07/2018)#
REM # Verifica existencia diretório Zabbix #

REM #MODULO 1#
IF EXIST "c:\Zabbix\zabbix_agentd.exe" (exit) ELSE (echo "Iniciando a instalacao do Zabbix Agent")
REM #
REM # Exibe mensagem na tela#
echo Copiando Arquivos

REM #MODULO 2 - Criar o diretório na máquina#
mkdir c:\zabbix
echo Pasta zabbix criada no C:

REM #MODULO 3 - Realiza a cópia dos binários para o sistema#
xcopy \\192.168.2.12\zabbix\zabbix_agents_3.4.6.win\bin\win64\zabbix_agentd.exe c:\zabbix\
xcopy \\192.168.2.12\zabbix\zabbix_agents_3.4.6.win\bin\win64\zabbix_get.exe c:\zabbix\
xcopy \\192.168.2.12\zabbix\zabbix_agents_3.4.6.win\bin\win64\zabbix_sender.exe c:\zabbix\

REM #MODULO 4 *PUNK* - Cria arquivo de configuração e define nome do servidor #
echo Criando Arquivos de configuracao
echo Server=192.168.1.26 > c:\zabbix\zabbix_agentd.conf
echo Hostname=%COMPUTERNAME% >> c:\zabbix\zabbix_agentd.conf
echo StartAgents=5 >> c:\zabbix\zabbix_agentd.conf
echo DebugLevel=3 >> c:\zabbix\zabbix_agentd.conf
echo LogFile=c:\zabbix\zabbix_agentd.log >> c:\zabbix\zabbix_agentd.conf
echo Timeout=5 >> c:\zabbix\zabbix_agentd.conf
echo EnableRemoteCommands=1 >> C:\zabbix\zabbix_agentd.conf

REM #MODULO 4 - Ajustes Finais #
echo Instalando o Serviço
C:\zabbix\zabbix_agentd.exe -i -c C:\zabbix\zabbix_agentd.conf
C:\zabbix\zabbix_agentd.exe -s -c C:\zabbix\zabbix_agentd.conf
echo As configuracoes para o servidor %COMPUTERNAME% foram criadas em %date% as %time%
echo As configuracoes para o servidor %COMPUTERNAME% foram criadas em %date% as %time% > c:\Zabbix\inst_agent.log
pause

 

Link do código sempre atualizado no GIT:

GitHub

Considerações:

Podemos ver que o script é bem simples.
Dividi ele em  4 módulos para ficar mais fácil o entendimento, qualquer duvida estou a disposição.

Até a próxima.

Continue Reading

Set Timezone in PHP

Some applications in PHP, can give a problem if you do not find the variable timezone set in php.ini, because they do not consult local timezone of the server.

To solve this, we set the timezone in PHP configuration file: php.ini.

Look for your php.ini file:

# Find / -name php.ini

Generally, it is located in /etc/php.ini.

Edit and change the timezone setting:

Find the date.timezone line and leave it below:

From:; date.timezone =
For:

date.timezone = America / Sao_Paulo

If your timezone is another, just change the America / Sao_Paulo parameter to your timezone.

The timezones list can be found here:

 

That’s All!.

Continue Reading