Zabbix 分布式监控系统

基础环境准备

节点规划:

IP节点主机名
192.168.15.10服务端zabbix-server
192.168.15.20客户端zabbix-agent
# 更改主机名
hostnamectl set-hostname zabbix-server
bash
hostnamectl set-hostname zabbix-agent
bash
# 关闭防火墙及安全规则(两个节点都执行)
systemctl disable firewalld --now
sed -i "s/SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config 
setenforce 0
# 测试网络
[root@zabbix-server ~]# ping baidu.com
# 配置host映射
[root@zabbix-server ~]# vi /etc/hosts
192.168.15.10 zabbix-server
192.168.15.20 zabbix-agent
scp /etc/hosts zabbix-agent:/etc/hosts

一键化部署 Lnmp 环境

# 上传下载的LNMP环境部署包
lnmp1.6-full.tar.gz
# 解压LNMP环境部署包
tar -zxvf lnmp1.6-full.tar.gz
# 一键部署LNMP环境
[root@zabbix-server ~]# cd lnmp1.6-full
# 修改 MYSQL 数据目录
[root@zabbix-server lnmp1.6-full]# vi lnmp.confMySQL_Data_Dir='/usr/local/mysql/var'
改为  MySQL_Data_Dir='/data/mysql'
# 执行脚本
[root@zabbix-server lnmp1.6-full]# ./install.sh lnmp
# 选择MySQL版本
5.7.26
# 设置MySQL密码
000000  `默认六个零`
# 选择InnoDB引擎是否开启
y
# 选择PHP版本
7.0.33
# 选择不安装内存分配器
1
# 按Enter 键开始安装

测试访问页面:

在这里插入图片描述

Zabbix服务端部署及配置

# 配置阿里源 
[root@zabbix-server ~]# curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 安装依赖包
[root@zabbix-server ~]# yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel
[root@zabbix-server ~]# yum install -y mysql-devel
# 创建 zabbix 用户
[root@zabbix-server ~]# useradd -s /sbin/nologin zabbix
# 上传 zabbix-4.0.3.tar.gz 包 到 /usr/local/src 目录下
[root@zabbix-server ~]# cd /usr/local/src
# 解压 zabbix-4.0.3.tar.gz 包
[root@zabbix-server src]# tar -zxvf zabbix-4.0.3.tar.gz
# 创建目录
[root@zabbix-server src]# mkdir /usr/local/zabbix
# 将解压文件迁移到安装目录
mv /usr/local/src/zabbix-4.0.3/* /usr/local/zabbix
# 编译
cd /usr/local/zabbix
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2
# 参数解释
--prefix         指定安装目录
--enable-server  安装Zabbix server
--enable-agent   安装Zabbix agent
--eith-mysql     用MySQL来存储

编译完成结果:

在这里插入图片描述

#$ 报错
configure: error: MySQL library not found
# 找到文件所在的目录
find / -name mysql_config
# 重新编译
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2

# 编译安装
make -j 4  (4核编译)
make install
# 配置环境变量
vi /etc/profile
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
# 生效
source /etc/profile
echo $PATH
# 查看zabbix_server 版本
zabbix_server --version

zabbix_server (Zabbix) 4.0.3
Revision 87993 20 December 2018, compilation time: Dec 21 2023 19:45:40

Copyright (C) 2018 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

# 配置启动脚本
cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_server /etc/init.d/
cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/

vi /etc/init.d/zabbix_server
(第22行)      BASEDIR=/usr/local/zabbix   //zabbix 安装目录

vi /etc/init.d/zabbix_agentd
(第22行)      BASEDIR=/usr/local/zabbix   //zabbix 安装目录
# 添加权限
chmod 755 /etc/init.d/zabbix_*
# 启动Zabbix服务
chkconfig --add zabbix_server
chkconfig zabbix_server on
chkconfig --list
chkconfig --add zabbix_agentd
chkconfig zabbix_server on
chkconfig --list

`或者`

/etc/init.d/zabbix_server start
Reloading systemd:                                         [  OK  ]
Starting zabbix_server (via systemctl):                    [  OK  ]
/etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl):                    [  OK  ]
# 启动zabbix相关服务并设置为开机自启
systemctl start zabbix_server
systemctl enable zabbix_server
systemctl status zabbix_server
systemctl start zabbix_agentd
systemctl enable zabbix_agentd
systemctl status zabbix_agentd
# 创建Zabbix用户并导入Zabbix库
mysql -h 127.0.0.1 -uroot -p000000
#创建Zabbix 库和设置格式
create database zabbix character set utf8 collate utf8_bin;   
#创建 Zabbix 用户并分配
grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix';  
grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
# 刷新配置
flush privileges;
# 配置字符集
set names utf8;
# 切换到 Zabbix 库中 
use zabbix       
# 把/usr/local/zabbix/database/mysql/安装路径下的3个sql文件导入数据库
source /usr/local/zabbix/database/mysql/schema.sql
source /usr/local/zabbix/database/mysql/data.sql
source /usr/local/zabbix/database/mysql/images.sql
# 查看导入的表格
show tables;    
# 退出
exit
# 编辑 Zabbix server 的配置
# 备份配置文件
cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak}     
# 编辑配置文件
vi /usr/local/zabbix/etc/zabbix_server.conf
(第38行)    LogFile=/tmp/zabbix_server.log
(第85行)    DBHost=127.0.0.1                   #指定数据库信息(需配合参数 DBSocket 使用)
(第94行)    DBName=zabbix                      #服务端连接数据库的库名
(第110行)   DBUser=zabbix                      #连接数据库的用户
(第118行)   DBPassword=zabbix                  #连接数据库的密码
(第133行)   DBPort=3306                        #指定连接数据库的端口
(第465行)   Timeout=30                         #与AGNET和其它外部设备通信超时设置,单位为秒
(第125行)   DBSocket=/tmp/mysql.sock           #用于服务端数据库慢查询功能,单位是毫秒
(第549行)   LogSlowQueries=3000                #指定MYSOL的SOCK连接路径
# 修改Zabbix目录权限
chown zabbix:zabbix -R /usr/local/zabbix
# 重启服务
systemctl restart zabbix_server

Zabbix Web 界面部署

# 备份nginx配置文件
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
# 编辑配置文件
vi /usr/local/nginx/conf/nginx.conf

server
{
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /data/nginx/zabbix; 

location ~ [^/]\.php(/|$)
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/data/nginx/zabbix$fastcgi_script_name;
include fastcgi_params;
}
# 创建zabbix目录
mkdir -p /data/nginx/zabbix
# 源码安装包路径下的文件 cp 到 Zabbix Web 文件目录当中
cp -rf /usr/local/zabbix/frontends/php/* /data/nginx/zabbix
# 生效服务
/etc/init.d/nginx reload

Reload nginx...  done
# 修改 php.ini 配置文件
vi /usr/local/php/etc/php.ini

(第656行)    post_max_size = 32M
(第368行)    max_execution_time = 350
(第378行)    max_input_time = 350
(第924行)    date.timezone = Asia/Shanghai
# 修改 php-fpm.conf 配置文件
vi /usr/local/php/etc/php-fpm.conf

[www]
listen = 127.0.0.1:9000` # 注释掉
# 重启 php-fpm 服务
/etc/init.d/php-fpm restart

Gracefully shutting down php-fpm . done
Starting php-fpm  done
# 查看端口是否启动
netstat -ntpl | grep php-fpm

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 # 将zabbix.conf.php 文件移到/data/nginx/zabbix/conf/zabbix.conf.php 下
 mv zabbix.conf.php /data/nginx/zabbix/conf/zabbix.conf.php
 # 查看文件是否存在
 cd /data/nginx/zabbix/conf/
 ls
 maintenance.inc.php  zabbix.conf.php  zabbix.conf.php.example

刷新界面,可以看到下面视图,报错消除

在这里插入图片描述

在这里插入图片描述

可以看到首页仪表盘配置

在这里插入图片描述

Zabbix 客户端部署

# 关闭防火墙及selinux
# 基础环境配置时,已经关闭,以防万一,查看一下状态,没有关闭时,继续关闭
systemctl status firewalld
systemctl disable firewalld --now
sed -i "s/SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
# 下载 wget 工具
yum install -y wget
# 下载Zabbix 客户端安装包
wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.3-1.el7.x86_64.rpm
# 安装 Zabbix客户端相应包
rpm -ivh zabbix-agent-4.0.3-1.el7.x86_64.rpm
# 备份配置文件
cp /etc/zabbix/zabbix_agentd.conf{,.bak}
egrep -v '^$|#' /etc/zabbix/zabbix_agentd.conf.bak > /etc/zabbix/zabbix_agentd.conf
# 修改配置文件
vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0                                #指定日志文件的大小,单位 MB | 0 表示禁用日志轮转
ListenPort=10050                             #指定监听端口
StartAgents=3                                #Zabbix 启动之后开启被动监控的进程数量,如果设置为 0,那么 Zabbix被动监控被用
ListenIP=0.0.0.0                             #监听 IP 地址,默认为
Server=192.168.15.10                         #允许哪个 Zabbix server 的 IP 地址监控本机
#ServerActive=192.168.15.20                  #Zabbix 主动监控 server 的 ip
Hostname=zabbix agent
Include=/etc/zabbix/zabbix_agentd.d/*.conf   #自定义配置文件
# 启动生效
systemctl restart zabbix-agent
# 开机自启
systemctl enable zabbix-agent
# 查看日志
tail -f /var/log/zabbix/zabbix_agentd.log
# 查看端口是否启动正常
netstat -ntpl | grep zabbix

tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      10207/zabbix_agentd

Zabbix Web 界面的使用管理操作

更改语言为中文

在这里插入图片描述

解决中文乱码问题

# 从 Windows 控制面板找到字体,选择字体文件,(C盘/Windows/Fonts)
# 拷贝到 Zabbix 服务器的 /data/nginx/zabbix/fonts 目录下
 mv simhei.ttf /data/nginx/zabbix/fonts
# 验证 
cd /data/nginx/zabbix/fonts
ls
DejaVuSans.ttf  simhei.ttf

在这里插入图片描述

创建客户端监控主机

创建主机群组

在这里插入图片描述

在这里插入图片描述

创建主机

在这里插入图片描述

在这里插入图片描述

配置主机链接模板

选择 Template OS Linux,单击“添加”

在这里插入图片描述

之后在最新数据中查看结果:

在这里插入图片描述

在这里插入图片描述

创建模板

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. 监控nginx状态

ⅰ. 服务端
  • 编辑nginx配置文件
vim /etc/nginx/conf.d/default.conf 
  • 添加以下字段
location /nginx_status {
 stub_status on;
}
  • 重启生效并查看
systemctl reload nginx && systemctl restart nginx 
curl http://192.168.15.110/nginx_status
# 出现如下
Active connections: 1
server accepts handled requests
 6 6 5
Reading: 0 Writing: 1 Waiting: 0

img

ⅱ. 客户端
  • 配置脚本
vi /scripts/nginx_status
#!/bin/bash
function active {
/usr/bin/curl "http://192.168.15.10/nginx_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://192.168.15.10/nginx_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://192.168.15.10/nginx_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://192.168.5.10/nginx_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://192.168.15.10/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://192.168.15.10/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://192.168.15.10/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
  • 脚本授权
chmod 755 /scripts/nginx_status

执行检查是否有语法问题

/scritps/nginx_status
# 不报错则为语法正确
  • 创建监控文件
vi /etc/zabbix/zabbix_agentd.d/nginx_statuts

添加参数

UserParameter=nginx[*], /scripts/nginx_status $1

修改配置文件包含参数

vi /etc/zabbix/zabbix_agentd.conf
# 第333行
Include=/etc/zabbix/zabbix_agentd.d/*

重启服务

systemctl restart zabbix_agent
ⅲ. 服务端
  • 查看客户端脚本
zabbix_get -s 192.168.15.10 -k 'nginx[accepts]'
  • 没有报错则为成功

Zabbix 自定义监控项

# zabbit-agent 节点
# 配置自定义监控脚本,修改 agent配置文件
vi /etc/zabbix/zabbix_agent.d/users.conf
UnsafeUserParameters=1
UserParameter=users,/bin/bash /scripts/user.sh        #存放脚本位置
# 配置监控脚本
mkdir /scripts
vi /scripts/user.sh
#!/bin/bash
user=$(who |wc -l)
if [ $user -gt 3 ];then
          echo '1'
else
          echo '2'
fi          
  
# 添加权限
cd /scripts
chown -R zabbix.zabbix /scripts/
chmod 777 /scripts/user.sh
# 测试脚本
./user.sh
如果返回值为 1 说明在线用户超过 3 个,如果返回值为 2,说明在线用户不超过 3# 生效配置
systemctl restart zabbix-agent
systemctl status zabbix-agent
netstat -ntpl | grep zabbix
# 服务端测试
[root@zabbix-server ~]# zabbix_get -s 192.168.15.10 -k users
zabbix_get [13781]: Check access restrictions in Zabbix agent configuration
# 查看zabbix支持参数
zabbix_get -p

# zabbix_get 命令是在 server 端用来检查 agent 端的一个命令,在添加完主机
或者触发器后,不能正常获得数据,可以用 zabbix_get 来检查能否采集到数据,
以便判断问题症结所在。
Zabbix_get 参数说明:
● -s --host:指定客户端主机名或者 IP。
● -p --port:客户端端口,默认 10050。
● -I --source-address:指定源 IP,写上 Zabbix server 的 IP 地址即可,一般
留空,服务器如果有多 IP 的时候,指定一个。
● -k --key:用户想获取的 key
至于使用长参数还是短的,自己选择,我经常使用-s 而不是-host,
如果不知道 key 参数可以使用 zabbix_agentd -p 命令寻找自己想要找的参
数,如下
[root@zabbix-server ~]# zabbix_agentd -p | grep users
system.users.num                              [u|3]

Zabbix Web 配置

流程:配置→主机→监控项→创建监控项;配置→主机→触发器→创建触发器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

验证:

当客户端主机多于三个用户,就会触发报警

在这里插入图片描述

Zabbix 自定义报警媒介

关于 Zabbix 报警媒介

所谓的报警媒介,就是要监控的设备出问题了,要通过邮件、短信等通知管 理员。那邮件短信等就是报警媒介了。作为一个监控工具的基本功能,如无法提 供报警功能,那就算不上是一个好的监控工具了。今天对 Zabbix 媒介做一个详 细介绍:

● E-mail 邮件。常用,目前多数都已经配置了这个功能,而且免费。

● Custom alertscripts 常用。自定义脚本,把信息传递给脚本,我们在脚本 里使用 sendEmail(不要和 sendmail 搞混了)、飞信发短信、调用短信接口发送 短信等等。

● SMS。 短信设备,了解就可以了,一些公司应该有购买使用的

安装sendMail-->创建邮件发送脚本-->创建报警媒介类型
# 安装sendMail
[root@zabbix-server ~]# yum install -y sendmail mailx
# 配置邮件发送配置
[root@zabbix-server ~]# vi /etc/mail.rc
set from=*********@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=*********@qq.com
set smtp-auth-password=****************
set smtp-auth=login

## 标题
# 重启服务
systemctl restart sendmail
# 授权码方式获取:打开 QQ 邮箱→设置→帐户→开启 IMAP/SMTP 服务
# 定义告警脚本存放路径
[root@zabbix-server ~]# vi /usr/local/zabbix/etc/zabbix_server.conf

AlertScriptsPath=/scripts
# 创建存放目录
[root@zabbix-server ~]# mkdir /scripts
# 编写邮件发送脚本
[root@zabbix-server ~]# vi /scripts/mail.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n''\n'`  #定义邮件内容变量
subject=`echo $2 | tr '\r\n' '\n'`  #定义邮件主题变量
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
# 对脚本以及日志输出文件授权
[root@zabbix-server ~]# touch /tmp/mailx.log
[root@zabbix-server ~]# chown zabbix.zabbix /tmp/mailx.log
[root@zabbix-server ~]# chown -R zabbix.zabbix /scripts/
[root@zabbix-server ~]# chmod +x /scripts/mail.sh
# 测试脚本发送是否成功
[root@zabbix-server ~]# sh /scripts/mail.sh *********@qq.com "hello" "test mail"
[root@zabbix-server ~]# sh -x /scripts/mail.sh *********@qq.com "hello" "test mail"

Zabbix Web 界面设置告警媒介

管理→报警媒介类型→创建报警媒介

在这里插入图片描述

脚本参数:

{ALERT.SENDTO} 收件人

{ALERT.SUBJECT} 邮件标题

{ALERT.MESSAGE} 邮件内容

创建完报警媒介后,会发现你的媒介类型就多了一个邮件报警:

在这里插入图片描述

Zabbix 自定义邮件告警的使用

配置告警接收用户,选择告警等级

步骤如下:管理→用户→编辑 Admin 用户→报警媒介→单击“添加”

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9b13495d9b8a497984667fc71cd176cf.png
创建邮件发送动作:

步骤如下:配置→动作→创建动作→添加触发条件→添加操作内容→添加恢复操 作内容

在这里插入图片描述

在这里插入图片描述

告警标题:

Problem: {EVENT.NAME}故障{TRIGGER.STATUS} 服务 器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

告警内容:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件 ID:{EVENT.ID}

在操作中勾选 Pause operations for suppressed problems→新的 添加一下内容:选择“添加”按钮

在这里插入图片描述

添加成功后:

在这里插入图片描述

恢复操作与操作那边一样

添加恢复标题→添加恢复内容→添加新的

在这里插入图片描述

恢复标题:

恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已 恢复!

恢复内容:

恢复告警设备: {HOSTNAME1}

触发名称: {TRIGGER.NAME}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

恢复详情: {ITEM.NAME}:{ITEM.VALUE}

恢复当前状态为:{TRIGGER.STATUS}

事件 ID : {EVENT.ID}

事件 ID:{EVENT.ID} 之后单击“添加”按钮,创建动作就完成了

在这里插入图片描述

邮件报警与恢复通知测试

首先让客户端监控项报警

# 多开几个进程
[root@zabbix-agent ~]# who
# 等待几分钟收到报警信息
# 将多余的进程杀掉
[root@zabbix-agent ~]# who
# 收到恢复告警信息

Nginx自动化流量监控以及告警自启

部署nginx
# zabbix-agent 节点
# 配置nginx源
vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=[http://nginx.org/packages/centos/$releasever/$basearch/](http://nginx.org/packages/centos/$releasever/$basearch/)
gpgcheck=0
enabled=1
# 下载 nginx 服务
yum install -y nginx
systemctl start nginx
# 开机自启
systemctl enable nginx
# 修改配置文件
vim /etc/nginx/conf.d/default.conf 

server {
    listen       80;
    server_name  localhost;
 
 #access_log  /var/log/nginx/host.access.log  main;

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}
location /nginx_status {
stub_status on;
access_log off;
}	
#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}
}

# 重启服务
systemctl restart nginx
# 浏览器访问  
http://192.168.15.20/nginx_status/
参数说明:

Active connections:当前活动的客户端连接数,包括Waiting连接数
accepts:接受的客户端连接总数
handled:已处理的连接总数
requests:客户端请求总数
Reading:Nginx正在读取请求头的当前连接数
Writing:请求已经接收完成,处于响应过程的连接数
Waiting:保持连接模式,处于活动状态的连接数

编写监控脚本
# zabbix-agent 节点
# 创建目录
mkdir /home/scripts
# 编辑脚本
vim /home/scripts/nginx_status.sh

#!bin/bash
#date: 2020-01-18
# Description:Zabbix4.0监控Nginx1.16.1性能以及进程状态
# Note:此脚本需要配置在被监控端

HOST="192.168.15.20"
PORT="80"

# 检测Nginx进程是否存在
function ping {
    /sbin/pidof nginx | wc -l
}

# 检测Nginx性能
function active {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}

$1

# 赋予执行权限
chmod 755 /home/scripts/nginx_status.sh 
# 本地测试
sh /home/scripts/nginx_status.sh  active
1
# 定义监控脚本key
vim /etc/zabbix/zabbix_agentd.conf
# 添加以下内容
UnsafeUserParameters=1 UserParameter=nginx.status[*],/home/scripts/nginx_status.sh $1
# 重启zabbix agent
systemctl restart zabbix-agent.service
# 服务端获取数据
rpm -Uvh [https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm](https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm)

yum clean all
yum install -y zabbix-get
zabbix_get -s 192.168.15.10 -k nginx.status[active]
1
创建nginx模板
创建模板

配置 ----->> 模板 ---->> 创建模板

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

为监控的主机添加模板:

在这里插入图片描述

查看最新数据:

在这里插入图片描述

设置nginx邮件告警
# agent安装killall工具
[root@agent ~]# yum install -y psmisc
[root@agent ~]# chmod 755 /usr/bin/killall
# 编辑脚本
[root@agent ~]# mkdir -p /data/sh
[root@agent ~]# vim /data/sh/1.sh 
#!/bin/bash
fdy=`ps -ef |grep nginx|grep -v grep|wc -l`
if [ $fdy -ge 2 ];then
        echo 1
else
        echo 0
fi

# 配置zabbix_agent.conf
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf 
UnsafeUserParameters=1
UserParameter=nginx.killall, sh /data/sh/1.sh
# 重启服务
[root@agent ~]# systemctl restart zabbix-agent.service
# server段测试
[root@server ~]# zabbix_get -s 192.168.15.20 -k nginx.killall
1

在agent主机上添加监控项:

在这里插入图片描述

创建触发器:

在这里插入图片描述

在Mailx上添加额外动作:

在这里插入图片描述

# 关闭客户端nginx服务等待邮件通知
[root@agent ~]# systemctl stop nginx
设置nginx宕机自启

在Mailx的动作中设置额外操作:

在这里插入图片描述

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值