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 [email protected] identified by ‘zabbix_proxy_active‘;

2.zabbix-proxy代理服务端(ubuntu1804)

1)必要的软件包

zabbix-proxy-mysql

2)配置proxy配置文件

[email protected]:/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)测试是否登录数据库

[email protected]:~# 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)启动服务

[email protected]:~# systemctl restart zabbix-proxy
[email protected]:~# systemctl enable zabbix-proxy

6)查看启动的服务

[email protected]:~# 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配置文件

[[email protected] 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两个服务

[[email protected] ~]# systemctl restart zabbix-agent
[[email protected] ~]# systemctl enable zabbix-agent
[[email protected] ~]# systemctl start nginx
[[email protected] ~]# systemctl enable nginx

4)查看启动的服务

[[email protected] ~]# 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超级用户

    [[email protected] ~]# 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服务关闭

[[email protected] zabbix_agentd.d]# systemctl stop nginx

2)再zabbix-agent客户端快速查看nginx服务的状态,服务已经被关闭

[[email protected] ~]# 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服务自动重启,实现自愈

[[email protected] 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)接收到故障自动恢复成功的邮箱通知

原文地址:https://blog.51cto.com/14234542/2421845

时间: 2024-11-09 09:26:22

zabbix实现对nginx监控并实现nginx服务自愈的相关文章

zabbix实现对mysql数据库主从监控

1.主从关系建立 配置mysql-master端: 1)修改mysql-master的配置文件 [[email protected] ~]# vim /etc/my.cnf [mysqld] server_id=1 innodb_file_per_table datadir=/data/mysql socket=/var/lib/mysql/mysql.sock log-bin=/data/log-bin/bin binlog_format=row -- 2)启动mysql服务,并授权从服务用户

zabbix监控安装及实现对tomcat服务器监控

一.zabbix监控安装配置实现对本机的监控 监控端ip 192.168.1.11 被监控端ip 192.168.1.12 1.zabbix相关包的安装 1)zabbix的仓库源配置 [email protected]:~# wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb 2)安装zabbixx-release_4.0-2+b

网站集群架构实战(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken>下面是项目的一些简单介绍. WEB集群项目简介 随着网站访问量的激增,势必会导致网站的负载增加,现需求搭载一套高性能,高负载,高可用的网站集群架构以保障网站的持续.高效.安全.稳定的运行. 针对以上需求,我们采用了如下的技术: 使用负载均衡技术来实现网站请求的调度分发,减小后端服务器

keepalived结合nginx状态检测脚本实现对web服务器集群的高可用

实验环境 两台CentOS-7.5虚拟机web1:10.0.11.203web2:10.0.11.204VIP :10.0.11.210web类型:nginx客户端:自用笔记本(win10)nginx状态检测脚本:ck_nginx.sh 实验一.使用keepalived简单实现web集群的高可用功能 1.准备两台web服务器 1)web1网卡情况[[email protected] ~]# [[email protected] ~]# ip a 2)web2网卡情况[[email protect

02-keepalived实现对nginx服务的高可用(主备)

实验环境:controller3,controller4为后端web服务器,controller1,controller2为nginx负载均衡服务器,用keepalived实现主备模式的高可用 controller1  IP:9.110.187.120 10.1.1.120 controller2  IP:9.110.187.121 10.1.1.121 controller3  IP:10.1.1.122 controller4  IP:10.1.1.123 1.controller3,con

zabbix监控mysql,nginx

刚开说mysql监控的时候 很容易遇到问题 而问题大部分出现在mysql的配置上面,看到我下面做的希望对你们有所帮助,哈哈 不聊了 好好学习 现在开始 1.创建mysql用户[[email protected] ]# groupadd mysql[[email protected] ]# mkdir -pv /data/mysql[[email protected] ]# useradd -r -g mysql -d /data/mysql/ -s /sbin/nologin mysql2.获取

zabbix管理七之监控nginx性能

说明: 使用zabbix监控nginx,首先nginx需要配置ngx_status 在编译安装nginx时需要使用--with-http_stub_status_module参数 在nginx的配置文件nginx.conf里添加如下:         location /nginx_status {              stub_status on;              access_log off;              allow 127.0.0.1;            

zabbix 通过status模块监控nginx

1.编辑nginx的配置文件,在server下添加如下内容: location /status {stub_status on;access_log off;allow 127.0.0.1;deny all;} 保存退出并重启nginx 2.创建监控nginx的脚本目录 mkdir /usr/local/zabbix/libexec 3.vim /usr/local/zabbix/libexec/nginx.sh && chmod +x /usr/local/zabbix/libexec/

Zabbix配合fpmmm(mpm)实现对Mysql的全面监控

Zabbix使用fpmmm(mpm)模块实现对Mysql的全面监控(Performance Monitor for MySQL) fpmmm is the FromDualPerformance Monitor for MySQL and MariaDB and the counterpart to the MySQL EnterpriseMonitor from Oracle.With fpmmm you can monitor your MySQL/MariaDB databases and