Use o zabbix para monitorar o serviço nginx (15)

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

Insira a descrição da imagem aqui

3.3.2. Preencha as informações do modelo

Nome: modelo de status nginx

Insira a descrição da imagem aqui

3.3.3. Criar Conjunto de Aplicativos

Nome: nginx status

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

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
Insira a descrição da imagem aqui

Configuração da condição do gatilho

Insira a descrição da imagem aqui

3.3.6. Criar gráficos

Clique para criar gráficos

Insira a descrição da imagem aqui

Nome: monitoramento de status do nginx

Selecione todos os itens de monitoramento nginx e, finalmente, clique em Adicionar
Insira a descrição da imagem aqui

3.3.7. Criação do modelo concluída

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

Clique em atualizar

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

SMS de alarme
Insira a descrição da imagem aqui

7. Use grafana para gerar gráficos de monitoramento de status nginx

7.1. Criar gráficos

Clique para criar gráficos

Insira a descrição da imagem aqui

Selecione o gráfico de barras

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

7.3. Defina o nome do gráfico

Insira a descrição da imagem aqui

7.4. Salvar gráficos

Insira a descrição da imagem aqui

7.5. Ver os gráficos

Insira a descrição da imagem aqui

Você pode definir a hora no canto superior direito

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_44953658/article/details/114686070
Recomendado
Clasificación