zabbix实现对nginx监控并实现nginx服务自愈
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix实现对nginx监控并实现nginx服务自愈相关的知识,希望对你有一定的参考价值。
1.zabbix-server端(ubuntu1804)
1)必要的软件包
zabbix-server-mysql
zabbix-frontend-php
2)启动的服务
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:10051 0.0.0.0:*
users:(("zabbix_server",pid=3991,fd=4),("zabbix_server",pid=3990,fd=4),("zabbix_server",pid=3989,fd=4)……
……
LISTEN 0 80 192.168.1.14:3306 0.0.0.0:*
users:(("mysqld",pid=1461,fd=20))
……
LISTEN 0 128 *:80 *:*
users:(("apache2",pid=4105,fd=4),("apache2",pid=4100,fd=4),("apache2",pid=4091,fd=4),("apache2",pid=3904,fd=4),
("apache2",pid=3900,fd=4),("apache2",pid=3801,fd=4),("apache2",pid=3576,fd=4),("apache2",pid=3501,fd=4),("apache2",
pid=3404,fd=4),("apache2",pid=1620,fd=4),("apache2",pid=1587,fd=4))
……
3)创建proxy代理端的授权数据库
MariaDB [(none)]> create database zabbix_proxy_active character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy_active.* to zabbix_proxy_active@192.168.1.20 identified by ‘zabbix_proxy_active‘;
2.zabbix-proxy代理服务端(ubuntu1804)
1)必要的软件包
zabbix-proxy-mysql
2)配置proxy配置文件
root@ubuntu1804:/etc/zabbix# grep ‘^[a-Z]‘ /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #主动模式
Server=192.168.1.14
Hostname=zabbix_proxy_active
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
EnableRemoteCommands=1 #开启允许远程命令
LogRemoteCommands=1
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBHost=192.168.1.14
DBName=zabbix_proxy_active
DBUser=zabbix_proxy_active
DBPassword=zabbix_proxy_active
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=30
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
3)测试是否登录数据库
root@ubuntu1804:~# mysql -uzabbix_proxy_active -pzabbix_proxy_active -h192.168.1.14
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 6951
Server version: 10.1.40-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]> show databases;
+---------------------+
| Database |
+---------------------+
| information_schema |
| zabbix_proxy_active |
+---------------------+
2 rows in set (0.00 sec)
4)数据库初始化
zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz | mysql -uzabbix_proxy_active -pzabbix_proxy_active
-h192.168.1.14 zabbix_proxy_active
5)启动服务
root@ubuntu1804:~# systemctl restart zabbix-proxy
root@ubuntu1804:~# systemctl enable zabbix-proxy
6)查看启动的服务
root@ubuntu1804:~# ss -tnlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:10051 0.0.0.0:*
users:(("zabbix_proxy",pid=3559,fd=4),("zabbix_proxy",pid=3558,fd=4),("zabbix_proxy",pid=3557,fd=4),("zabbix_proxy",pid=3556,fd=4),("zabbix_proxy",pid=3555,fd=4),("zabbix_proxy",pid=3554,fd=4),("zabbix_proxy",pid=3553,fd=4),("zabbix_proxy",pid=3552,fd=4),("zabbix_proxy",pid=3551,fd=4),("zabbix_proxy",pid=3550,fd=4),("zabbix_proxy",pid=3549,fd=4),("zabbix_proxy",pid=3548,fd=4),("zabbix_proxy",pid=3547,fd=4),("zabbix_proxy",pid=3546,fd=4),("zabbix_proxy",pid=3545,fd=4),("zabbix_proxy",pid=3544,fd=4),("zabbix_proxy",pid=3543,fd=4),("zabbix_proxy",pid=3542,fd=4),("zabbix_proxy",pid=3541,fd=4),("zabbix_proxy",pid=3540,fd=4),("zabbix_proxy",pid=3539,fd=4),("zabbix_proxy",pid=3538,fd=4),("zabbix_proxy",pid=3537,fd=4),("zabbix_proxy",pid=3536,fd=4),("zabbix_proxy",pid=3525,fd=4))
LISTEN 0 80 0.0.0.0:3306 0.0.0.0:*
users:(("mysqld",pid=4094,fd=17))
……
3.zabbix-agent客户端(centos7.6)
1)安装必要的包
zabbix-agent
nginx
2)配置agent配置文件
[root@nginx zabbix_agentd.d]# grep ‘^[a-Z]‘ /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 #一定要开启,否则导致无法执行远程命令
Server=192.168.1.14,192.168.1.20 #同时指定server端和proxy代理端
ServerActive=192.168.1.20 #指定主动模式的proxy代理端
Hostname=192.168.1.16 #给本机指定一个主机名,web端上天添加的主机名必须和此处主机名相同,否则会导致数据采集失败
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1 #支持远程命令传输的特殊字符,也必须开启
3)启动agent和nginx两个服务
[root@nginx ~]# systemctl restart zabbix-agent
[root@nginx ~]# systemctl enable zabbix-agent
[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl enable nginx
4)查看启动的服务
[root@nginx ~]# ss -tnlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 511 *:8080 *:*
users:(("nginx",pid=50295,fd=6),("nginx",pid=50294,fd=6),("nginx",pid=50293,fd=6),("nginx",pid=50292,fd=6),
("nginx",pid=50291,fd=6))
LISTEN 0 128 *:10050 *:*
……
users:(("zabbix_agentd",pid=43802,fd=4),("zabbix_agentd",pid=43801,fd=4),("zabbix_agentd",pid=43800,fd=4),
("zabbix_agentd",pid=43799,fd=4),("zabbix_agentd",pid=43798,fd=4),("zabbix_agentd",pid=43797,fd=4))
……
5)将zabbix用户提升为sudo超级用户
[root@nginx ~]# vim /etc/sudoers
#Defaults requiretty #一定要注释掉此行,会导致sudo超级用户无法执行远程命令
……
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zabbix ALL=(ALL) NOPASSWD: ALL
……
4.zabbix-server的web端创建一个主动模式的代理
5.zabbix-server的web端创建nginx模板
1)nginx_status模板创建
2)监控项创建
3)创建好的所有的nginx监控项
4)创建触发器
5)创建好的两个nginx触发器
6)创建当前状态图形
7)创建累计状态图形
8)再创建一个nginx监听端口状态图
9)创建聚合图形
10)将前面的监控图形添加聚合图形里,点击构造函数
11)点击更改进入添加界面
12)可以看到已成功添加监控图形到聚合图形里
13)查看创建好的图形
14)nginx_status状态模板创建完成
6.zabbix-server的web端添加监控主机
1)添加监控主机zabbix-agent并添加一个主动模式的代理
2)添加一个模板
3)添加完成
7.web端查看监控主机zabbix-agent采集数据图形
1)nginx状态页累积状态图
2)nginx状态页当前状态图
3)查看nginx监听端口状态图,显示正常
8.web端建立邮件通知和创建nginx服务自愈动作
1)点击创建媒介类型
2)创建媒介类型,填写媒介类型信息,要求qq邮箱预先开启smtp服务
3)可以查看到已成功添加媒介类型
4)进入用户界面选择admin账户
选择admin账户
5)在选择报警媒介
6)添加创建好的媒类型到此用户
7) 创建一个动作
8)在动作栏下添加触发条件
9)在操作栏添加一远程命令
10)操作栏再添加一个宕机通知信息,以及指定邮件的接收方
11)恢复操作栏添加恢复消息,同样指定邮件的接收者
9.测试nginx服务是否能接收到邮件通知以及实现自愈功能
1)先在在zabbix-agent客户端将nginx服务关闭
[root@nginx zabbix_agentd.d]# systemctl stop nginx
2)再zabbix-agent客户端快速查看nginx服务的状态,服务已经被关闭
[root@nginx ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: inactive (dead)
3)nginx服务关闭后,在web端触了发仪表盘报警
4)接收到报警邮箱通知,nginx服务器断开连接
5)间隔3-5秒后,发现nginx服务自动重启,实现自愈
[root@nginx zabbix_agentd.d]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2019-07-19 16:43:10 CST; 12min ago
Process: 50272 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 50245 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 50243 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
……
6)在web端查看nginx-8080监听图形,数值从超出警戒线到下降恢复到正常值
7)仪表盘又自动恢复正常
8)接收到故障自动恢复成功的邮箱通知
以上是关于zabbix实现对nginx监控并实现nginx服务自愈的主要内容,如果未能解决你的问题,请参考以下文章