Use o zabbix para monitorar o serviço nginx
1. Ative o monitoramento de status do nginx
1.安装nginx
[root@192_168_81_220 ~]# yum -y install nginx
2.开启状态监控页面
[root@192_168_81_220 ~]# vim /etc/nginx/nginx.conf
location /nginx_status {
stub_status;
}
3.重启nginx
[root@192_168_81_220 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@192_168_81_220 ~]# systemctl start nginx
4.访问
[root@192_168_81_220 ~]# curl 192.168.81.220/nginx_status
Active connections: 1
server accepts handled requests
4 4 9
Reading: 0 Writing: 1 Waiting: 0
2. Explicação detalhada do valor do status de monitoramento do nginx
Conexões ativas: 1 // O número de conexões ativas no momento, quantas conexões estão me acessando no momento
aceita 4 // Quantas solicitações foram recebidas desde que o nginx foi iniciado
tratada 4 // Quantas solicitações foram processadas desde o início do nginx
solicitações // Número total de solicitações http
Reading: 0 // Número de cabeçalhos de solicitação de conexão atualmente lidos
Escrevendo: 1 // Atualmente respondendo ao número de solicitações do cliente
Em espera: 0 // Número atual de solicitações em espera
O valor de escrita + espera deve ser igual ao valor de conexões ativas
3. Use o zabbix para monitorar o valor de status do nginx
Ideias:
1. Primeiro escreva o script para obter o valor, porque é uma página da web, ela pode ser capturada pelo comando curl
2. Uma função pode ser definida no script. Cada valor corresponde a uma função. Por fim, use o caso para determinar se o $ 1 passado como parâmetro corresponde a essa função. Se a correspondência estiver correta, a função será executada.
3. Defina a chave do item de monitoramento na forma de parâmetros de passagem, para que você possa definir um valor de chave e escrever um $ 1 diferente.
3.1. Escreva um script para obter valores de monitoramento
Idéia de escrita de script: primeiro salve os dados obtidos pelo comando curl em um arquivo, então defina as variáveis da hora atual e a hora do arquivo, e compare-as, se a hora atual for maior que 60s que a hora do arquivo, exclua o arquivo do comando curl e re-curl Obtenha os dados e importe-os para o arquivo e, finalmente, por meio da função de definir vários estados, a função é principalmente obter o valor do estado por meio do arquivo e, em seguida, julgar qual parâmetro passar pelo caso, e finalmente execute o comando do parâmetro correspondente para obter o valor de monitoramento
Finalmente, para monitorar se o processo está ativo, você pode verificar o processo por meio de ps e, em seguida, obter o número por meio de wc -l e, finalmente, ecoar esse valor e, em seguida, criar um acionador. O último valor é igual a 0 para indicar que o processo não existe.
1.编写脚本
[root@192_168_81_220 ~]# cd /etc/zabbix/scripts/
[root@192_168_81_220 scripts]# vim tcp_zabbix.sh
#!/bin/bash
#这是一个简单的监控nginx状态值的脚本
#20201030 ---jxl
comm_para=$1
cachefile=/tmp/nginx_status.txt
port=80
cmd="/usr/bin/curl 127.0.0.1:$port/nginx_status"
file_time=`stat -c %Y $cachefile`
now_time=`date +%s`
rm_file=$(($now_time - $file_time))
if [ ! -f $cachefile ];then
$cmd > $cachefile 2>/dev/null
fi
if [ $rm_file -gt 60 ];then
rm -rf $cachefile
fi
if [ ! -f $cachefile ];then
$cmd > $cachefile 2>/dev/null
fi
active() {
cat $cachefile | awk '/Active/{print $NF}'
exit 0;
}
accepts() {
cat /tmp/nginx_status.txt | awk '{if(NR==3){print $1}}'
exit 0;
}
handled(){
cat /tmp/nginx_status.txt | awk '{if(NR==3){print $2}}'
exit 0;
}
requests(){
cat /tmp/nginx_status.txt | awk '{if(NR==3){print $3}}'
exit 0;
}
reading() {
cat /tmp/nginx_status.txt | awk '{if(NR==4){print $2}}'
exit 0;
}
writing() {
cat /tmp/nginx_status.txt | awk '{if(NR==4){print $4}}'
exit 0;
}
waiting() {
cat /tmp/nginx_status.txt | awk '{if(NR==4){print $6}}'
exit 0;
}
check() {
nginx_pro_count=`ps aux | grep nginx | grep -v grep | grep -v nginx_status.sh | wc -l`
echo $nginx_pro_count
}
case "$comm_para" in
active)
active
;;
accepts)
accepts
;;
handled)
handled
;;
requests)
requests
;;
reading)
reading
;;
writing)
writing
;;
waiting)
waiting
;;
check)
check
;;
*)
echo "invalid status"
exit 2;
esac
2.给执行权限并测试
[root@192_168_81_220 scripts]# chmod a+x tcp_zabbix.sh
[root@192_168_81_220 scripts]# sh tcp_zabbix.sh active
1
3.2. Grave um arquivo de configuração de item de monitoramento personalizado
1.写配置文件
[root@192_168_81_220 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@192_168_81_220 zabbix_agentd.d]# vim nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/scripts/nginx_status.sh $1
2.重启
[root@192_168_81_220 zabbix_agentd.d]# systemctl restart zabbix-agent
3.用zabbix_server测试监控key
[root@zabbix-server ~]# zabbix_get -s 192.168.81.220 -k nginx_status[active]
1
[root@zabbix-server ~]# zabbix_get -s 192.168.81.220 -k nginx_status[check]
4
成功
3.3. Criar um modelo de monitoramento
3.3.1. Clique em Configure-Template-Create Template
3.3.2. Preencha as informações do modelo
Nome: modelo de status nginx
3.3.3. Criar Conjunto de Aplicativos
Nome: nginx status
3.3.4. Criar itens de monitoramento
Nome: status Nginx ativo
Valor-chave: nginx_status [ativo]
Intervalo de atualização: 60s, porque o tempo de julgamento no script é 60s
Seleção de conjunto de aplicativos: status nginx
A configuração de outros itens de monitoramento é a mesma, mas o valor da chave do parâmetro é diferente
Valor-chave de todos os itens de monitoramento
nginx_status[active]
nginx_status[accepts]
nginx_status[handled]
nginx_status[requests]
nginx_status[reading]
nginx_status[writing]
nginx_status[waiting]
nginx_status[check]
Todos os itens de monitoramento são criados
3.3.5. Criar gatilho
Não é necessário acionar o valor do status de monitoramento, mas acionar o processo nginx
Clique em criar gatilho
Preencha as informações do gatilho
Nome: o processo nginx não existe
Gravidade: severa
Expressão: {modelo de status nginx: nginx_status [verificar] .last ()} = 0
Configuração da condição do gatilho
3.3.6. Criar gráficos
Clique para criar gráficos
Nome: monitoramento de status do nginx
Selecione todos os itens de monitoramento nginx e, finalmente, clique em Adicionar
3.3.7. Criação do modelo concluída
4. Monitoramento do modelo de monitoramento nginx do aplicativo host
Tome 192.168.81.220 como exemplo, a configuração de 192.168.81.230 é a mesma
Clique em Configurar - Host - Modelo - Selecionar modelo - Adicionar
Clique em atualizar
192.168.81.230 deve scp todos os scripts e arquivos de configuração antes de vincular o modelo
[root@192_168_81_220 ~]# scp /etc/zabbix/scripts/nginx_status.sh [email protected]:/etc/zabbix/scripts/nginx_status.sh
[root@192_168_81_220 ~]# scp /etc/zabbix/zabbix_agentd.d/nginx_status.conf [email protected]:/etc/zabbix/zabbix_agentd.d/
[root@192_168_81_220 ~]# ssh [email protected] "systemctl restart zabbix-agent"
5. Visualize os dados mais recentes
Clique para monitorar os dados mais recentes
Ja tem valor
6. Acione a existência de processo nginx e alerta
[root@192_168_81_220 ~]# systemctl stop nginx
[root@192_168_81_220 ~]# ps aux | grep nginx | grep -v grep | grep -v nginx_status.sh | wc -l
0
坐等报警即可
Visor do painel
SMS de alarme
7. Use grafana para gerar gráficos de monitoramento de status nginx
7.1. Criar gráficos
Clique para criar gráficos
Selecione o gráfico de barras
Depois de selecionar o gráfico, clique em editar duas vezes para adicionar itens de monitoramento
7.2. Adicionar itens de monitoramento
Clique em adicionar consulta - preencha as informações de monitoramento
Grupo: Plataforma de gestão do conhecimento
Host : $ host
Aplicativo: status do nginx
Item: O status do Nginx aceita
Todos os itens de monitoramento são adicionados desta forma, basta clicar em adicionar consulta
7.3. Defina o nome do gráfico
7.4. Salvar gráficos
7.5. Ver os gráficos
Você pode definir a hora no canto superior direito