ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

zabbix实现对nginx监控并实现nginx服务自愈

2019-07-19 19:55:29  阅读:297  来源: 互联网

标签:pid nginx zabbix fd proxy 自愈 root


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端创建一个主动模式的代理

zabbix实现对nginx监控并实现nginx服务自愈

5.zabbix-server的web端创建nginx模板

1)nginx_status模板创建

zabbix实现对nginx监控并实现nginx服务自愈

2)监控项创建

zabbix实现对nginx监控并实现nginx服务自愈

3)创建好的所有的nginx监控项

zabbix实现对nginx监控并实现nginx服务自愈

4)创建触发器

zabbix实现对nginx监控并实现nginx服务自愈

5)创建好的两个nginx触发器

zabbix实现对nginx监控并实现nginx服务自愈

6)创建当前状态图形

zabbix实现对nginx监控并实现nginx服务自愈

7)创建累计状态图形

zabbix实现对nginx监控并实现nginx服务自愈

8)再创建一个nginx监听端口状态图

zabbix实现对nginx监控并实现nginx服务自愈

9)创建聚合图形

zabbix实现对nginx监控并实现nginx服务自愈

10)将前面的监控图形添加聚合图形里,点击构造函数

zabbix实现对nginx监控并实现nginx服务自愈

11)点击更改进入添加界面

zabbix实现对nginx监控并实现nginx服务自愈

12)可以看到已成功添加监控图形到聚合图形里

zabbix实现对nginx监控并实现nginx服务自愈

13)查看创建好的图形

zabbix实现对nginx监控并实现nginx服务自愈

14)nginx_status状态模板创建完成

zabbix实现对nginx监控并实现nginx服务自愈

6.zabbix-server的web端添加监控主机

1)添加监控主机zabbix-agent并添加一个主动模式的代理

zabbix实现对nginx监控并实现nginx服务自愈

2)添加一个模板

zabbix实现对nginx监控并实现nginx服务自愈

3)添加完成

zabbix实现对nginx监控并实现nginx服务自愈

7.web端查看监控主机zabbix-agent采集数据图形

1)nginx状态页累积状态图

zabbix实现对nginx监控并实现nginx服务自愈

2)nginx状态页当前状态图

zabbix实现对nginx监控并实现nginx服务自愈

3)查看nginx监听端口状态图,显示正常

zabbix实现对nginx监控并实现nginx服务自愈

8.web端建立邮件通知和创建nginx服务自愈动作

1)点击创建媒介类型

zabbix实现对nginx监控并实现nginx服务自愈

2)创建媒介类型,填写媒介类型信息,要求qq邮箱预先开启smtp服务

zabbix实现对nginx监控并实现nginx服务自愈

3)可以查看到已成功添加媒介类型

zabbix实现对nginx监控并实现nginx服务自愈

4)进入用户界面选择admin账户

选择admin账户

zabbix实现对nginx监控并实现nginx服务自愈

5)在选择报警媒介

zabbix实现对nginx监控并实现nginx服务自愈

6)添加创建好的媒类型到此用户

zabbix实现对nginx监控并实现nginx服务自愈

7) 创建一个动作

zabbix实现对nginx监控并实现nginx服务自愈

8)在动作栏下添加触发条件

zabbix实现对nginx监控并实现nginx服务自愈

9)在操作栏添加一远程命令

zabbix实现对nginx监控并实现nginx服务自愈

10)操作栏再添加一个宕机通知信息,以及指定邮件的接收方

zabbix实现对nginx监控并实现nginx服务自愈

11)恢复操作栏添加恢复消息,同样指定邮件的接收者

zabbix实现对nginx监控并实现nginx服务自愈

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端触了发仪表盘报警

zabbix实现对nginx监控并实现nginx服务自愈

4)接收到报警邮箱通知,nginx服务器断开连接

zabbix实现对nginx监控并实现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监听图形,数值从超出警戒线到下降恢复到正常值

zabbix实现对nginx监控并实现nginx服务自愈

7)仪表盘又自动恢复正常

zabbix实现对nginx监控并实现nginx服务自愈

8)接收到故障自动恢复成功的邮箱通知

zabbix实现对nginx监控并实现nginx服务自愈

标签:pid,nginx,zabbix,fd,proxy,自愈,root
来源: https://blog.51cto.com/14234542/2421845

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有