zabbix监控
Zabbix
Zabbix 简介
Zabbix 由 Alexei Vladishev 于 1998 年创建,现由 Zabbix SIA 公司维护。它采用 C 和 PHP 编写,遵循 GPLv2 开源协议,广泛应用于企业级 IT 运维场景。
🧱 核心组件
Zabbix Server:系统核心,负责接收数据、存储配置和执行告警。Zabbix Agent:部署在被监控主机上,采集本地数据并上报。Zabbix Proxy:可选组件,用于分布式部署,缓解 Server 压力。数据库:存储所有监控数据和配置,支持 MySQL、PostgreSQL 等。Web 前端:基于 PHP 的管理界面,展示监控图表、配置项和告警信息。
功能亮点
多协议支持:SNMP、IPMI、JMX、SSH、Telnet 等。灵活告警机制:支持邮件、短信、微信、钉钉等通知方式。图形化展示:内置图表、仪表盘、地图等可视化工具。自动发现:支持主机、服务自动发现与注册。模板机制:快速批量部署监控项与触发器。
应用场景
企业服务器与网络设备监控云平台与虚拟化环境监控Web 服务性能与可用性监控数据中心容量规划与故障预警
Zabbix是基于LNMP架构部署
搭建LNMP架构
安装nginx
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm#创建nginx的yum源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1#安装nginx
yum install nginx -y#开启服务
systemctl start nginx
systemctl enable nginx#防火墙添加通过http
firewall-cmd --permanent --add-service=http --zone=public
firewall-cmd --reload

安装mariadb
配置yum源
#配置Mariadb10.5 yum源(zabbix6.0必须使用该版本,低版本不支持)
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF
#备用源
cat > /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = https://archive.mariadb.org/mariadb-10.5.23/yum/centos7-amd64/
gpgcheck = 0
enabled = 1
EOF
下载mariadb
yum -y install mariadb-server mariadb
#开启服务
systemctl enable mariadb --now#自定义设置root密码,默认密码为空,直接回车
mysql_secure_installation#如果解决出现密码未知,需要重置密码
systemctl stop mariadb
mysqld_safe --skip-grant-tables &
连接数据库执行
mysql -u rootFLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc123';
EXIT;
正常重启服务
pkill mysqld_safe
systemctl start mariadb#如果启动失败
ps aux | grep mysqlkill -9 进程号
安装php
yum -y install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmyum -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
配置nginx支持php
#修改php-fpm配置文件,把apache改为nginx
vim /etc/php-fpm.d/www.conf8行 user = nginx
10行 group = nginx#配置location,在index中添加index.php。以支持index.php的首页
vim /etc/nginx/conf.d/default.conf9行 index index.php index.html index.htm;#配置php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改
#把fastcgi_param中的/scripts改为$document_root。root是配置php程序放置的根目录。
#29~35行 location ~ \.php$ {root /usr/share/nginx/html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
配置php
vim /etc/php.ini #修改PHP配置文件359 expose_php = Off #隐藏php版本
202 short_open_tag = On #支持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 #需要添加可以用 $HTTP_RAW_POST_DATA 接收post raw data(原始未处理数据)
877 date.timezone = Asia/Shanghai #时区#启动php-fpm服务
systemctl enable php-fpm --now#重启nginx
systemctl restart nginx
测试
测试首页
vim /usr/share/nginx/html/info.php<?phpphpinfo();
?>

测试连接数据库
<?php$link=mysqli_connect('127.0.0.1','root','abc123');if ($link) echo "success";else echo "fail";
?>
注:mysql_connect扩展自 PHP 5.5.0 起已废弃,改用mysqli或pdo_mysql

mysql -u root -pCREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';
GRANT all privileges ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
collate的作用
对于mysql中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知mysql如何对该列进行排序和比较。COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCT、GROUP BY、HAVING语句的查询结果。另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。
<?php$link=mysqli_connect('127.0.0.1','zabbix','admin123');if ($link) echo "zabbix success";else echo "Zabbix数据库连接失败!";
?>

解决本地无法登录问题(连接成功,可忽略)
select user,host from mysql.user; //有空用户名称占用导致本地无法登录远程可登录
+--------+-----------+
| user | host |
+--------+-----------+
| zabbix | % |
| root | 127.0.0.1 |
| root | ::1 |
| | cacti |
| root | cacti |
| | localhost |
| root | localhost |
+--------+-----------+drop user ''@localhost;drop user ''@cacti;flush privileges;
zabbix-server
导入数据库
#解压
tar zxvf zabbix-6.0.6.tar.gz#导入数据库
cd /root/zabbix-6.0.6/database/mysqlmysql -uroot -pabc123 zabbix < schema.sql
mysql -uroot -pabc123 zabbix < images.sql
mysql -uroot -pabc123 zabbix < data.sql
mysql -uroot -pabc123 zabbix < double.sql
mysql -uroot -pabc123 zabbix < history_pk_prepare.sql#进入zabbix数据库查看
mysql -uroot -pabc123
use zabbix;
show tables;
共178张表
安装软件包
#安装环境包
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
# 创建zabbix用户
useradd -s /sbin/nglogin -M zabbix
cd zabbix-6.0.6/#使得编译器在编译 C 代码时使用 GNU C99 标准
export CFLAGS="-std=gnu99"
./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#检查版本
zabbix_server --version
修改zabbix-server配置文件
vim /etc/zabbix/zabbix_server.conf
38 LogFile=/var/log/zabbix_server.log
123 DBPassword=admin123#创建日志文件并修改属组和属主
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log#创建并添加systemctl服务管理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#启动zabbix
systemctl start zabbix-server
netstat -ntap | grep 10051
前端页面复制到站点
cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/
chown -R nginx:nginx /usr/share/nginx/html/



被监控端
安装agent
:146#更新CA
yum update ca-certificates -y#安装软件包
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum install zabbix-agent2 -y#启动服务
systemctl enable zabbix-agent2 --now#修改配置文件
vim /etc/zabbix/zabbix_agent2.conf13行 PidFile=/var/run/zabbix/zabbix_agentd.pid
32行 LogFile=/var/log/zabbix/zabbix_agentd.log
43行 LogFileSize=0
82行 Server=192.168.108.10 #指向监控服务器
135行 ServerActive=192.168.108.10 #指向监控服务器
146行 Hostname=test #名称
283行 Include=:32
zabbix管理
zabbix首页登录后

监控主机
配置->模板

定义模板新名称

添加数据库信息

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

主机群组

被监控主机配置

添加后直接生成

邮件服务
在zabbix-server服务器上安装邮箱服务
[root@zabbix-server ~]# yum install mailx -y
配置邮箱服务
//注意网易邮箱需要开启客户端授权码进行第三方登录
[root@zabbix-server ~]# vim /etc/mail.rc
----文件末尾新增---
set from=abner_0711@163.com
set smtp=smtp.163.com
set smtp-auth-user=abner_0711@163.com
set smtp-auth-password=UDrdk5SnrXH7RN7d
set smtp-auth=login
发送测试邮件
[root@zabbix-server ~]# echo "hello world" | mail -s "zb-test" abner_0711@163.com
创建脚本目录,并重启zabbix服务
[root@zabbix-server local]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@zabbix-server local]# mkdir -p /usr/lib/zabbix/alertscripts
[root@zabbix-server local]# chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
[root@zabbix-server local]# systemctl restart zabbix-server.service
编写邮件发送脚本
[root@zabbix-server local]# vim 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
权限设置
[root@zabbix-server alertscripts]# touch /tmp/mailx.log
[root@zabbix-server alertscripts]# chown -R zabbix.zabbix /tmp/mailx.log
[root@zabbix-server alertscripts]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
测试脚本发送邮件
[root@zabbix-server alertscripts]# ./mailx.sh abner_0711@163.com "say hi" "This is test"
已收到邮件

告警服务
管理->报警媒介类型

创建媒体类型

脚本参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
添加成功

管理->用户

点击Admin进入

选择报警媒介

添加

类型选择刚刚创建的Mail-Test

设置完成后点击添加

一定要进行更新

配置->动作->Trigger actions



定义操作

默认接收人 : {TRIGGER.STATUS}:{TRIGGER.NAME}
默认信息:告警主机:{HOST.NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
恢复操作

最后点击添加

动作添加完成

监视主页面仪表盘
在被监控端关闭数据库服务
[root@client ~]# systemctl start mysqld
等待一段时间后


检查接收告警邮件

