zabbix监控实战

Zabbix

zabbix官网:Zabbix:企业级开源监控解决方案

部署手册:下载Zabbix

产品手册:产品手册

以下企业都在用:

当前支持版本

生命周期

Zabbix概述

Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 积极开发和维护。Zabbix 是一款企业级开源分布式监控解决方案。

Zabbix 是一款用于监控网络众多参数、服务器/虚拟机/应用程序/服务/数据库/网站/云平台等健康状态和完整性的软件。 Zabbix 提供灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警,从而实现对服务器问题的快速响应。基于存储数据, Zabbix 提供出色的报表和数据可视化功能,使其成为容量规划的理想选择。

Zabbix 同时支持轮询和捕获两种方式。所有 Zabbix 报表、统计信息及配置参数均可通过基于 Web 的前端界面访问。该 Web 前端确保您可以从任何位置评估网络状态和服务器健康状况。经过适当配置, Zabbix 可在 IT 基础设施监控中发挥重要作用,无论是对拥有少量服务器的小型组织,还是对拥有众多服务器的大型企业都同样适用。

Zabbix 完全免费。 Zabbix 基于 GNU 通用公共许可证 version 第 2 版编写和分发,这意味着其源代码可自由分发并面向公众开放。

zabbix核心组件

1. Zabbix Server(核心)

  • 整个系统的大脑,负责数据接收、处理、存储、告警判断、任务调度。
  • 功能:接收 Agent/Proxy/SNMP 数据、触发告警、管理配置、提供 Web 后端。
  • 部署:生产环境建议独立服务器,支持 HA 高可用。

2. Zabbix Agent/Agent 2(被监控端)

  • 部署在被监控主机,采集本地数据(系统、应用)并上报。
  • Agent:C 语言开发,轻量、单线程,适合基础监控。
  • Agent 2(6.x + 推荐):Go 语言,多线程、插件化(MySQL/Redis/K8s),性能更强。
  • 模式:主动(Agent→Server)、被动(Server→Agent)。

3. Zabbix Proxy(可选,分布式)

  • 代理 Server 采集数据,减轻 Server 负载、跨地域 / 跨网络监控、网络隔离。
  • 不存储数据,仅转发,适合大规模、多机房场景。

4. 数据库(Database)

  • 存储配置(主机、模板、触发器)、历史数据、趋势数据。
  • 支持:MySQL/MariaDB(最常用)、PostgreSQL、Oracle。

5. Web 界面(Web Interface)

  • 基于 PHP 的可视化控制台,用于配置、查看监控、告警管理、报表。
  • 路径:http://<ServerIP>/zabbix 。

6. 其他工具

  • Zabbix Sender:手动 / 脚本向 Server 推送自定义数据。
  • Zabbix Get:Server 端手动测试获取 Agent 数据(调试用)。

Zabbix核心定义

  • 监控项(Item):采集的具体指标(如 CPU 使用率、内存占用、网卡流量),是数据采集的最小单元。
  • 触发器(Trigger):基于监控项设置的阈值规则(如CPU使用率>90%持续5分钟),触发异常状态。
  • 动作(Action):触发器异常后执行的操作(发邮件、短信、执行脚本、告警升级)。
  • 模板(Template):预定义的监控项、触发器、图形集合,可批量应用到主机,简化配置。
  • 主机(Host):被监控的设备(服务器、交换机、虚拟机),需关联模板才能监控。
  • 主动模式:Agent 主动向 Server 推送数据(适合跨网络、降低 Server 负载)。
  • 被动模式:Server 主动向 Agent 拉取数据(默认模式,配置简单)。

使用场景

  1. 服务器监控

Linux/Windows 服务器:CPU、内存、磁盘、网络、进程、负载、日志。

  1. 网络设备监控

交换机、路由器、防火墙:端口流量、状态、CPU、内存(SNMP)。

  1. 应用服务监控

Web(Nginx/Apache)、数据库(MySQL/PostgreSQL/Oracle)、中间件(Redis、Kafka、Tomcat)、容器(Docker/K8s)。

  1. 云平台监控

阿里云、AWS、VMware、OpenStack 虚拟机与资源状态。

  1. 业务指标监控

接口响应时间、订单量、用户在线数、API 成功率(自定义脚本 / Zabbix Sender)。

  1. 分布式 / 跨机房监控

多地域机房、网络隔离环境(用 Zabbix Proxy 代理采集)。

  1. 告警与自愈

异常自动通知、执行恢复脚本、服务重启、故障升级通知。

搭建LNMP架构

Zabbix基于LNMP架构部署

zabbix-server通过Centos-7-template模板克隆产生

mysql001通过mysql01克隆产生

主机名 IP 功能
zabbix-server 192.168.108.50 安装zabbix
mysql001 192.168.108.51 被监控

安装nginx

bash 复制代码
#创建nginx的yum源
[root@zabbix-server ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
enabled=1
gpgcheck=0
bash 复制代码
#安装nginx
[root@zabbix-server ~]# yum install nginx -y

#开启服务;start 立即启动,enable 设置开机自启
[root@zabbix-server ~]# systemctl start nginx

[root@zabbix-server ~]# systemctl enable nginx
bash 复制代码
#防火墙添加通过http;--add-service=http 放行 http 服务,--zone=public 指定公共区域,--permanent 永久生效
[root@zabbix-server ~]# firewall-cmd --add-service=http --zone=public
success                                          # 输出 success 表示临时规则添加成功

[root@zabbix-server ~]# firewall-cmd --add-service=http --zone=public --permanent
success                                          # 输出 success 表示永久规则添加成功

#重载防火墙,使永久规则立即生效
[root@zabbix-server ~]# firewall-cmd --reload
success                                          # 输出 success 表示重载成功
[root@zabbix-server ~]# 

先测试nginx环境

安装mariadb

配置yum源

bash 复制代码
#配置Mariadb10.x yum源(zabbix6.0必须使用该版本,低版本不支持)
[root@zabbix-server ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/rhel7-amd64/
enabled = 1
gpgcheck = 0

下载mariadb

mysql 复制代码
#安装 mariadb 数据库服务端与客户端;-y 安装过程中自动回答 yes
[root@zabbix-server ~]# yum -y install mariadb-server mariadb

#开启服务;enable 设置开机自启,--now 同时立即启动
[root@zabbix-server ~]# systemctl enable mariadb --now

#设置root密码;直接执行 mysql 以空密码 root 身份进入数据库
[root@zabbix-server ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.   # 进入 MariaDB 监视器的欢迎提示,命令以 ; 或 \g 结束
Your MariaDB connection id is 3                                # 本次连接的 id 为 3
Server version: 10.6.19-MariaDB MariaDB Server                 # 数据库服务端版本
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)]> DELETE FROM mysql.user WHERE User='';        # 删除空用户(无用户名)的账号,消除匿名登录隐患
Query OK, 2 rows affected (0.010 sec)                          # 影响 2 行,删除成功

MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED BY 'root123';   # 将本机 root 的登录密码改为 root123
Query OK, 0 rows affected (0.005 sec)                          # 0 行受影响,密码修改成功
连接数据库测试
mysql 复制代码
#用 root 账号和新密码登录数据库,验证密码是否设置成功;-u 指定用户,-p 指定密码
[root@zabbix-server ~]# mysql -uroot -proot123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.6.19-MariaDB MariaDB Server
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)]> 

安装php

bash 复制代码
#安装 EPEL 扩展软件源,为后续 php 依赖提供仓库
[root@zabbix-server ~]# yum -y install epel-release

#将 epel.repo 中被注释的 #baseurl 改为生效的 baseurl
[root@zabbix-server ~]# sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo

#将生效的 metalink 地址注释掉
[root@zabbix-server ~]# sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo

#把 epel 源中官方下载地址统一替换为华为云镜像地址,加速下载
[root@zabbix-server ~]# sed -i "s@https\?://download.[a-z]*\.\?[a-z]*/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo

#安装 webtatic 源(提供 php7.2 软件包);rpm -Uvh 升级/安装该 rpm 包
[root@zabbix-server ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

#安装 php7.2 及 zabbix 所需的全部扩展包
[root@zabbix-server ~]# yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath

#参数说明
- php72w:主程序
- php72w-cli:命令行模式 PHP
- php72w-fpm:php-fpm 进程服务,web 调用 php 用
- php72w-mysqlnd:mysql 数据库驱动
- php72w-gd:图片处理库
- php72w-mbstring:多字节字符串,zabbix 必选
- php72w-opcache:php 代码缓存,提升性能
- php72w-ldap:ldap 认证模块
- php72w-bcmath:高精度数学运算
配置nginx支持php
bash 复制代码
#修改php-fpm配置文件,把apache改为nginx
[root@zabbix-server ~]# vim /etc/php-fpm.d/www.conf
  8 user = nginx
 10 group = nginx
bash 复制代码
#配置location,在index中添加index.php。以支持index.php的首页
[root@zabbix-server ~]# vim /etc/nginx/conf.d/default.conf
  9         index index.php index.html index.htm;
bash 复制代码
#配置php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改
#把fastcgi_param中的/scripts改为$document_root。root是配置php程序放置的根目录。
 29     location ~ \.php$ {
 30         root           /usr/share/nginx/html;            #改成/usr/share/nginx/html
 31         fastcgi_pass   127.0.0.1:9000;
 32         fastcgi_index  index.php;
 33         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;   #修改这
 34         include        fastcgi_params;
 35     }
配置php
bash 复制代码
 #修改PHP配置文件
[root@zabbix-server ~]# vim /etc/php.ini
 202 short_open_tag = On     #支持php短标签
 359 expose_php = Off        #隐藏php版本
 
#以下为zabbix优化配置要求
 368 max_execution_time = 300       #执行时间
 378 max_input_time = 300           #接收数据等待时间
 389 memory_limit = 128M            #每个脚本占用内存
 656 post_max_size = 16M            #POST数据大小
 799 upload_max_filesize = 2M       #上传文件大小
 800 always_populate_raw_post_data = -1  #原来空的,需要添加
 877 date.timezone = Asia/Shanghai  #时区
bash 复制代码
#启动php-fpm服务;enable 设置开机自启,--now 同时立即启动
[root@zabbix-server ~]# systemctl enable php-fpm --now

#重启nginx,使 php 相关配置生效
[root@zabbix-server ~]# systemctl restart nginx
测试

测试php首页

bash 复制代码
#新建 php 测试页 info.php,调用 phpinfo() 输出 php 环境信息
[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
 phpinfo();
?>

测试连接数据库

bash 复制代码
#编写 info.php,用 mysqli 连接本机 mysql,成功输出 success,失败输出 fail
[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
 $link=mysqli_connect('127.0.0.1','root','root123');
 if ($link) echo "success";
 else echo "fail";
?>
# $link=mysqli_connect('127.0.0.1','root','root123');   设置变量$link,连接数据库
# if ($link) echo "success";                             如果连接上输出success
# else echo "fail";                                      连接不上输出fail

注:mysql_connect扩展自 PHP 5.5.0 起已废弃,改用mysqli或pdo_mysql

bash 复制代码
# 创建zabbix用的数据库及账号
[root@zabbix-server ~]# mysql -uroot -proot123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.5.10-MariaDB MariaDB Server
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)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;   # 创建 zabbix 库,字符集 utf8,排序规则 utf8_bin
Query OK, 1 row affected (0.001 sec)                          # 1 行受影响,数据库创建成功

MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';   # 授权 zabbix 用户可从任意主机(%)以密码 zabbix123 访问所有库表
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';   # 授权 zabbix 用户可从本机以密码 zabbix123 访问所有库表
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> flush privileges;                          # 刷新权限表,使授权立即生效
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> quit                                       # 退出数据库
Bye
[root@zabbix-server ~]# 

collate的作用

对于mysql中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知mysql如何对该列进行排序和比较。COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCT 、GROUP BY 、HAVING语句的查询结果。另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。

测试连接zaabix数据库

bash 复制代码
#把 info.php 中的账号密码改为 zabbix 用户,验证 zabbix 账号能否连接数据库
[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
 $link=mysqli_connect('127.0.0.1','zabbix','zabbix123');
 if ($link) echo "Zabbix数据库连接成功";
 else echo "Zabbix数据库连接失败";
?>

测试

zabbix-server

导入数据库

bash 复制代码
#解压zabbix源码包
[root@zabbix-server ~]# tar zxvf zabbix-6.0.6.tar.gz

#导入数据库;进入源码包的 mysql 数据库脚本目录,将该目录的数据库导入zabbix数据库
[root@zabbix-server ~]# cd /root/zabbix-6.0.6/database/mysql/

#查看目录下的 sql 脚本文件
[root@zabbix-server mysql]# ls
data.sql  double.sql  history_pk_prepare.sql  images.sql  Makefile.am  Makefile.in  schema.sql

#按顺序导入表结构、图片数据、初始数据、双精度主键预处理脚本
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < schema.sql

[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < images.sql

[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < data.sql

[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < double.sql

[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < history_pk_prepare.sql

#进入zabbix数据库查看
[root@zabbix-server mysql]# mysql -uroot -proot123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.5.10-MariaDB MariaDB Server
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)]> use zabbix;                               # 切换到 zabbix 数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed                                            # 提示数据库已切换

MariaDB [zabbix]> show tables;                              # 查看该库下所有数据表
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
......
| widget_field               |
+----------------------------+
178 rows in set (0.002 sec)        #是178条
MariaDB [zabbix]> 

安装软件包

bash 复制代码
#安装zabbix环境包;编译 zabbix 所需的开发库、SNMP、SSH、IPMI、LDAP、curl、fping 及编译工具
[root@zabbix-server ~]# yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make

#参数说明
- mysql-devel:MySQL 数据库开发库
- pcre-devel:正则库
- openssl-devel:加密 ssl 库
- zlib-devel:压缩库
- libxml2-devel:xml 解析库
- net-snmp /net-snmp-devel:snmp 监控相关
- libssh2-devel:ssh 协议支持
- OpenIPMI-devel:硬件 IPMI 监控
- libevent-devel:事件驱动库
- openldap-devel:LDAP 认证
- libcurl-devel:http 请求库
- fping:ip 探测工具,zabbix 主机可用性检测
- gcc、gcc-c++、make:C/C++ 源码编译工具链

# 创建zabbix系统用户;-s /sbin/nologin 禁止登录,-M 不创建家目录
[root@zabbix-server ~]# useradd -s /sbin/nologin -M zabbix

#使得编译器在编译 C 代码时使用 GNU C99 标准
[root@zabbix-server ~]# export CFLAGS="-std=gnu99"

#执行configure脚本;进入源码目录
[root@zabbix-server ~]# cd zabbix-6.0.6/

#配置编译参数;--sysconfdir 指定配置文件目录,--enable-server 编译 server 端,各 --with 选项启用 mysql、snmp、xml2、ssh2、openipmi、zlib、多线程、libevent、openssl、ldap、curl、pcre 等支持
[root@zabbix-server zabbix-6.0.6]# ./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre

#安装;make 编译后 install 安装到系统目录
[root@zabbix-server zabbix-6.0.6]# make install

#检查版本;能输出版本号说明编译安装成功
[root@zabbix-server ~]# zabbix_server --version

修改zabbix-server配置文件

bash 复制代码
#编辑 zabbix_server 主配置文件
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
 38 LogFile=/var/log/zabbix_server.log
123 DBPassword=zabbix123

#创建日志文件并修改属组和属主

#创建日志文件
[root@zabbix-server ~]# touch /var/log/zabbix_server.log

#将日志文件属主属组改为 zabbix
[root@zabbix-server ~]# chown zabbix.zabbix /var/log/zabbix_server.log
bash 复制代码
#创建并添加systemctl服务管理zabbix-server
[root@zabbix-server ~]# vim /usr/lib/systemd/system/zabbix-server.service
#添加下面这段话,直接复制
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix

[Install]
WantedBy=multi-user.target
bash 复制代码
#启动zabbix
[root@zabbix-server ~]# systemctl start zabbix-server

#查看 10051 端口是否被 zabbix_server 监听;-n 数字地址、-t tcp、-a 全部、-p 显示进程
[root@zabbix-server ~]# netstat -ntap | grep 10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN
 2610/zabbix_server                              # 输出显示 zabbix_server 已监听 10051 端口,进程号 2610

前端页面复制到站点

bash 复制代码
#把源码 ui 目录下的前端文件全部复制到 nginx 站点目录;提供网站前端
[root@zabbix-server ~]# cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/

#把站点目录属主属组递归改为 nginx,保证 web 可读写
[root@zabbix-server ~]# chown -R nginx:nginx /usr/share/nginx/html/

#重启 nginx,加载前端页面
[root@zabbix-server ~]# systemctl restart nginx

http://192.168.108.50

默认登陆用户名:Admin

默认登陆密码:zabbix

被监控端

安装agent

通过前面mysql章节的mysql01克隆mysql001

bash 复制代码
#关闭防火墙
[root@mysql001 ~]# systemctl stop firewalld.service

#临时关闭 SELinux 强制访问控制(0 表示宽容模式)
[root@mysql001 ~]# setenforce 0

#将主机名设置为 mysql001
[root@mysql001 ~]# hostnamectl set-hostname mysql001

#更新CA;更新系统 CA 证书,避免访问 https 源时证书校验失败
[root@mysql001 ~]# yum update ca-certificates -y

#安装软件包;rpm -ivh 安装 zabbix 6.0 官方 yum 源(提供 zabbix-agent2 软件包)
[root@mysql001 ~]# rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm

#通过 zabbix 源安装 agent2 客户端
[root@mysql001 ~]# yum install zabbix-agent2 -y

#启动服务;enable 设置开机自启,--now 同时立即启动
[root@mysql001 ~]# systemctl enable zabbix-agent2.service --now

#修改配置文件
[root@mysql001 ~]# vim /etc/zabbix/zabbix_agent2.conf
 13 PidFile=/var/run/zabbix/zabbix_agent2.pid
 32 LogFile=/var/log/zabbix/zabbix_agent2.log
 43 LogFileSize=0
 82 Server=192.168.108.50           #指向监控服务器(zabbix---server)
135 ServerActive=192.168.108.50  #指向监控服务器(zabbix-server)
146 Hostname=mysql001     #名称
283 Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf

#重启服务(先不重启看看配置生效不)
[root@mysql001 ~]# systemctl restart zabbix-agent2

zabbix管理

http://192.168.108.50

zabbix首页登录后

监控主机

配置->模板

定义模板新名称

添加数据库信息

$MYSQL.DSN 写被监控端数据库IP

配置->主机->创建主机

群组>选择

模板>选择

被监控主机配置

Inteerfaces: 添加>客户端

端口是10050,是zabbix客户端插件监听端口

添加后直接生成

可用性:绿色正常,一开始灰色等一会

停止,启动mysql服务观察现象

停止mysql服务,观察zabbix

bash 复制代码
#在被监控端停止 mysql 服务,观察 zabbix 是否产生告警
[root@mysql001 ~]# systemctl stop mysqld

发现告警了,mysql001这个主机服务down了

跑到mysql001,恢复服务运行

bash 复制代码
#重新启动 mysql 服务,恢复业务
[root@mysql001 ~]# systemctl start mysqld

问题已经解决

邮件服务

记录下来

lmsbtquhuzhqcage

在zabbix-server服务器上安装邮箱服务

bash 复制代码
#安装 mailx 邮件发送工具;-y 自动回答 yes
[root@zabbix-server ~]# yum install mailx -y

配置邮箱服务

bash 复制代码
#编辑 mailx 全局配置文件,在末尾添加 QQ 邮箱 SMTP 相关配置
[root@zabbix-server ~]# vim /etc/mail.rc
----文件末尾新增---
set from=6946630@qq.com                         #用自己的邮箱
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=6946630@qq.com
set smtp-auth-password=lmsbtquhuzhqcage         #用自己的邮箱授权码
set smtp-auth=login
#set smtp-use-starttls 这里是不需要配置的,很多地方没说明,配置了反而会验证失败,所以注释掉了;
set ssl-verify=ignore
set nss-config-dir=/root/.certs     #制定的存放QQ邮箱SSL证书的位置。
set nss-config-dir=/etc/pki/nssdb/

#给 nss 证书库目录授予 755 权限,保证 mailx 能读取证书
[root@zabbix-server ~]# chmod -R 755 /etc/pki/nssdb/

因为需要QQ邮箱的SSL证书,所以我们还需要手动的获取QQ邮箱的证书保存到本地指定的目录里以备调用和验证,具体命令如下:

bash 复制代码
#创建证书存放目录
[root@zabbix-server ~]# mkdir -p /root/.certs/

#连接 QQ 邮箱 465 端口,用 openssl 取出服务器证书,再用 sed 截取证书内容保存为 qq.crt
[root@zabbix-server ~]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt

#把证书以 "GeoTrust SSL CA" 别名加入证书库;-A 添加,-n 指定别名,-t "C,," 设置信任标记,-d 指定证书库,-i 指定证书文件
[root@zabbix-server ~]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt

#把证书以 "GeoTrust Global CA" 别名加入证书库
[root@zabbix-server ~]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt

#列出证书库中的证书,验证是否导入成功
[root@zabbix-server ~]# certutil -L -d /root/.certs

为了防止出现前文所说的发送邮件警告提示,还需要进入邮箱SSL证书存放目录/root/.certs 里执行如下命令:

bash 复制代码
#进入证书存放目录
[root@zabbix-server ~]# cd /root/.certs/

#把 G3 根证书以 "Pu,Pu,Pu" 信任标记加入当前目录证书库,完成信任标记
[root@zabbix-server .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt

返回如下提示即可:

bash 复制代码
Notice: Trust flag u is set automatically if the private key is present.   # 提示私钥存在时会自动设置 u 信任标记

这是为了信任证书的标记操作。

至此,已经完成了mailx结合QQ邮箱发送系统邮件的部署了,通过命令行发送测试邮件试试吧:

bash 复制代码
# 执行命令后,进入交互式编辑,输入正文后按 Ctrl+D 结束并发送;-s 指定邮件主题
[root@zabbix-server ~]# mailx -s "邮箱测试" 6946630@qq.com
你真帅啊
哈哈哈
EOT                               #ctrl_d
[root@zabbix-server ~]#

前往QQ邮箱查收测试邮件

创建脚本目录,并重启zabbix服务

bash 复制代码
#编辑 zabbix_server 配置,指定告警脚本存放目录
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
548 AlertScriptsPath=/usr/lib/zabbix/alertscripts

#创建告警脚本目录;-p 递归创建
[root@zabbix-server ~]# mkdir -p /usr/lib/zabbix/alertscripts

#把脚本目录属主属组递归改为 zabbix,保证 server 能调用脚本
[root@zabbix-server ~]# chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts

#重启 zabbix-server,使 AlertScriptsPath 配置生效
[root@zabbix-server ~]# systemctl restart zabbix-server.service

编写邮件发送脚本

bash 复制代码
#编辑告警邮件脚本 mailx.sh
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/mailx.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

权限设置

bash 复制代码
#创建邮件日志文件
[root@zabbix-server ~]# touch /tmp/mailx.log

#把日志文件属主属组改为 zabbix
[root@zabbix-server ~]# chown -R zabbix.zabbix /tmp/mailx.log

#给脚本添加可执行权限
[root@zabbix-server ~]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh

测试脚本发送邮件

bash 复制代码
#进入告警脚本目录
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/

#手动执行脚本测试:$1 收件人、$2 主题、$3 正文
[root@zabbix-server alertscripts]# ./mailx.sh 6946630@qq.com "hello mailx.sh" "This is test"

已收到邮件

告警服务

管理->报警媒介类型>创建媒体类型

创建媒体类型

脚本参数

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

添加成功

管理->用户

点击Admin进入

点击Admin进入

选择报警媒介

添加

类型选择刚刚创建的mail-test

设置完成后点击添加

收件人:填写自己邮箱地址

一定要进行更新

配置->动作->Trigger actions

先删除默认动作,然后创建动作

定义操作

bash 复制代码
主题 : {TRIGGER.STATUS}:{TRIGGER.NAME}
消息:
告警主机:{HOST.NAME}
告警  IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件  ID:{EVENT.ID}
bash 复制代码
主题 : {TRIGGER.STATUS}:{TRIGGER.NAME}
消息:
恢复主机:{HOST.NAME}
恢复  IP:{HOST.IP}
恢复时间:{EVENT.DATE}-{EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
恢复  ID:{EVENT.ID}

恢复操作

最后点击添加

动作添加完成

监视主页面仪表盘

在被监控端关闭数据库服务

bash 复制代码
#在被监控端停止 mysql 数据库服务,触发告警
[root@mysql001 ~]# systemctl stop mysqld

等待一段时间后

检查接收告警邮件

mysql其他监控信息

监控mysql001 系统资源使用

加压看效果

bash 复制代码
#读取/dev/zero 生成 3 个 1G 的文件占满内存,制造内存压力观察监控曲线;if 指定输入源,of 指定输出文件,bs 指定块大小,count 指定块数
[root@mysql001 ~]# dd if=/dev/zero of=/mnt/memoryfile bs=1G count=3
相关推荐
fengkai45451 天前
十三、Zabbix 监控
运维·服务器·zabbix·监控·网络设备
陈聪.3 天前
Zabbix 监控系统知识总结
zabbix
暖核4 天前
企业级开源监控解决方案:Zabbix 6.0 部署与配置全流程详解
开源·zabbix
木子欢儿5 天前
Zabbix 7.4 Alpine 版 Docker Compose 部署
android·运维·docker·容器·zabbix
云运维笔记1 个月前
Zabbix 分布式监控搭建实战:基于 Proxy 实现 MySQL、Java、Nginx 监控
java·mysql·zabbix
happymade1 个月前
7000 台网络设备批量纳管 & 自动拓扑生成实战——MSRM3 完整操作流程与关键要点复盘
运维·服务器·网络·zabbix·grafana·msrm3
云运维笔记1 个月前
Zabbix 监控实战:Nginx、MySQL 与 Java 程序配置指南
mysql·nginx·zabbix
姚永强2 个月前
zabbix安装教学
笔记·zabbix
姚永强2 个月前
zabbix实际运用(有图片教学)
zabbix