基础环境准备
节点规划:
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.conf
将 MySQL_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
ⅱ. 客户端
- 配置脚本
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的动作中设置额外操作: