1. zabbix安装部署

1.1 安装部署mysql

1. 下载mysql8.0版本
2. 解压数据库
3. rpm安装
[root@zabbix ~]#rpm -ivh mysql-community-common-8.0.36-1.el8.x86_64.rpm 
[root@zabbix ~]#rpm -ivh mysql-community-client-plugins-8.0.36-1.el8.x86_64.rpm 
[root@zabbix ~]#rpm -ivh mysql-community-libs-8.0.36-1.el8.x86_64.rpm 
[root@zabbix ~]#rpm -ivh mysql-community-client-8.0.36-1.el8.x86_64.rpm 
[root@zabbix ~]#rpm -ivh mysql-community-icu-data-files-8.0.36-1.el8.x86_64.rpm 
[root@zabbix ~]#rpm -ivh mysql-community-devel-8.0.36-1.el8.x86_64.rpm 
[root@zabbix ~]#rpm -ivh mysql-community-server-8.0.36-1.el8.x86_64.rpm 

4. 启动数据库
[root@zabbix ~]#systemctl start mysqld.service 

5. 进入数据库修改密码
查看随机生成的密码
[root@zabbix ~]#cat /var/log/mysqld.log |grep root@local
2025-06-04T08:08:32.462252Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #s=phoJko6Oo

修改密码
[root@zabbix ~]#mysql -uroot -p'Vp0Zk<dgHmtt'

mysql> alter user root@localhost identified by 'Oldboy123.com';
 
6. 创建zabbix库
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by 'Oldboy123.com';
mysql> ALTER USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Oldboy123.com';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';

清理mysql安装包
[root@zabbix ~]#rm -rf mysql-*

7. 下载zabbix的源码包,将sql数据导入到zabbix库中
官网也可下载或课程里压缩包
[root@zabbix ~]#tar xf zabbix-5.0.47.tar.gz 

进入源码目录
[root@zabbix ~/zabbix-5.0.47]#cd database/mysql/
[root@zabbix ~/zabbix-5.0.47/database/mysql]#ll
total 17008
-rw-r--r-- 1 1000 1000 15252182 May 20 15:10 data.sql
-rw-r--r-- 1 1000 1000      282 May 20 15:10 double.sql
-rw-r--r-- 1 1000 1000  1978341 May 19 19:09 images.sql
-rw-r--r-- 1 1000 1000      482 May 20 15:10 Makefile.am
-rw-r--r-- 1 1000 1000    15936 May 20 15:10 Makefile.in
-rw-r--r-- 1 1000 1000   156294 May 20 15:10 schema.sql

需要将schema.sql  images.sql  data.sql导入zabbix库
[root@zabbix ~/zabbix-5.0.47/database/mysql]#mysql -uzabbix -p'Oldboy123.com' zabbix < schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix ~/zabbix-5.0.47/database/mysql]#mysql -uzabbix -p'Oldboy123.com' zabbix < images.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix ~/zabbix-5.0.47/database/mysql]#mysql -uzabbix -p'Oldboy123.com' zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

1.2 安装部署php服务

1. 安装php服务
 [root@zabbix ~/zabbix-5.0.47/database/mysql]# yum -y install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo  php-process php-xml php-json php-ldap

2. 修改监听方式为端口
[root@zabbix ~/zabbix-5.0.47/database/mysql]#grep -n 9000 /etc/php-fpm.d/www.conf
39:listen = 127.0.0.1:9000

3. 启动加入开机启动
[root@zabbix ~/zabbix-5.0.47/database/mysql]#systemctl start php-fpm[root@zabbix ~/zabbix-5.0.47/database/mysql]#systemctl enable php-fpm

4. 查看是否启动
[root@zabbix ~/zabbix-5.0.47/database/mysql]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      57812/php-fpm: mast 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1116/sshd: /usr/sbi 
tcp6       0      0 :::3306                 :::*                    LISTEN      56629/mysqld        
tcp6       0      0 :::22                   :::*                    LISTEN      1116/sshd: /usr/sbi 
tcp6       0      0 :::33060                :::*                    LISTEN      56629/mysqld        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           790/chronyd         
udp6       0      0 ::1:323                 :::*                                790/chronyd  

1.3 部署nginx服务

1. 配置nginx仓库
[root@zabbix ~/zabbix-5.0.47/database/mysql]#cat /etc/yum.repos.d/nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2. 安装nginx服务
[root@zabbix:~]#yum -y install nginx

3. 配置nginx服务
[root@zabbix /etc/yum.repos.d]#cat /etc/nginx/conf.d/default.conf 
server {
	listen 80;
	server_name _;
	root /code;
	index index.php index.html;

	location ~ \.php$ {
 	fastcgi_pass   127.0.0.1:9000;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
}
}

[root@zabbix /etc/yum.repos.d]#nginx -t
[root@zabbix /etc/yum.repos.d]#systemctl start nginx
[root@zabbix /etc/yum.repos.d]#systemctl enable nginx

4. 检查9000 3306 80端口
[root@zabbix /etc/yum.repos.d]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      57812/php-fpm: mast 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      58131/nginx: master 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1116/sshd: /usr/sbi 
tcp6       0      0 :::3306                 :::*                    LISTEN      56629/mysqld
5. 将代码文件拷贝到/code目录
[root@zabbix ~]#mkdir /code
[root@zabbix ~]#cd /code
拷贝源码中的前端页面代码到/code目录
[root@zabbix /code]#cp -r /root/zabbix-5.0.47/ui/* .
[root@zabbix /code]#chown -R apache.apache /code

统一用户php和nginx都是用apache运行
[root@zabbix /code]#grep apache /etc/nginx/nginx.conf
user  apache;
[root@zabbix /code]#grep apache /etc/php-fpm.d/www.conf 
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
group = apache
listen.acl_users = apache,nginx

[root@zabbix:code]#systemctl restart nginx

1.4 编译zabbix服务

1. 进入源码目录
[root@zabbix:~]#cd zabbix-5.0.43/

2. 安装依赖包
[root@zabbix ~/zabbix-5.0.47]#yum -y install libxml2 libxml2-devel net-snmp-devel curl-devel libevent-devel

3. 配置zabbix
[root@zabbix ~/zabbix-5.0.47]#./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

4. 编译
[root@zabbix ~/zabbix-5.0.47]#make

5. 安装
[root@zabbix ~/zabbix-5.0.47]#make install

6. 完成后检查 在命令行输入zabbix tab键 检查文件是否相同
[root@zabbix ~]#zabbix_
zabbix_agentd  zabbix_js      zabbix_server  
zabbix_get     zabbix_sender

7. 配置zabbix连接数据库信息
[root@zabbix ~]#grep -n ^DB /usr/local/etc/zabbix_server.conf
94:DBName=zabbix
110:DBUser=zabbix
118:DBPassword=Oldboy123.com

8. 创建启动虚拟用户zabbix
[root@zabbix:~]#useradd zabbix

9. 启动
zabbix_server  # 启动服务端
zabbix_agented    # 启动客户端
编写systemctl运行zabbix
[root@zabbix ~]#cat /usr/lib/systemd/system/zabbix.service
[Unit]
 Description=Zabbix server
 After=network.target
 
[Service]
 Type=forking
 ExecStart=/usr/local/sbin/zabbix_server
 ExecStop=/usr/local/sbin/zabbix_server stop
 User=zabbix
 Group=zabbix
 
[Install]
 WantedBy=multi-user.target

这里需要先杀死进程:
pkill zabbix
ps -axu|grep zabbix


重新加载配置
[root@zabbix:~]#systemctl daemon-reload
 [root@zabbix:~]#systemctl start zabbix
 [root@zabbix:~]#systemctl enable zabbix


检查端口
[root@zabbix ~]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      57812/php-fpm: mas
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      58246/nginx: maste
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1116/sshd: /usr/sb
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      69656/zabbix_serve
tcp6       0      0 :::3306                 :::*                    LISTEN      56629/mysqld      
tcp6       0      0 :::22                   :::*                    LISTEN      1116/sshd: /usr/sb
tcp6       0      0 :::10051                :::*                    LISTEN      69656/zabbix_serve
tcp6       0      0 :::33060                :::*                    LISTEN      56629/mysqld      
udp        0      0 127.0.0.1:323           0.0.0.0:*                           790/chronyd       
udp6       0      0 ::1:323                 :::*                                

1.5 界面安装部署

[root@zabbix ~]#egrep -n "post_max_size|max_execution_time|max_input_time|timezone" /etc/php.ini|grep -v ';'
383:max_execution_time = 300
393:max_input_time = 300
672:post_max_size = 16M
902:date.timezone = Asia/ShangHai

测试php
[root@zabbix ~]#php-fpm -t
[04-Jun-2025 17:35:16] NOTICE: configuration file /etc/php-fpm.conf test is successful

重启php服务
[root@zabbix ~]#systemctl restart php-fpm

2. zabbix界面配置

2.1 修改语言为中文

2.2 修改默认的字体

[root@zabbix ~]#cd /code/assets/fonts/
将windows的字体上传到当前目录修改名称
[root@zabbix /code/assets/fonts]#mv DejaVuSans.ttf  DejaVuSans.ttf.bak
[root@zabbix /code/assets/fonts]#mv STXINWEI.TTF DejaVuSans.ttf.bak 

3. 监控Zabbix服务器本身

1.安装客户端zabbix_agentd 默认已经编译(可以zabbix_agent进行tab一下试试)
2.启动客户端
[root@zabbix:~]#zabbix_agentd

4. 监控客户端

1. 准备客户端10.0.0.7

2. 安装zabbix-agent客户端 Kylin系统直接安装(其他操作 部署YUM仓库)
下载epel源
[root@WEB01 ~]#yum -y install zabbix-agent

3. 配置zabbix客户端配置文件指向服务端10.0.0.71
[root@WEB01 ~]#grep -n ^Server /etc/zabbix_agentd.conf
115:Server=172.16.1.71

4. 启动zabbix客户端
[root@WEB01 ~]#systemctl start zabbix-agent.service 
[root@WEB01 ~]#systemctl enable zabbix-agent.service 

5. zabbix页面配置添加监控的主机

4.1 添加一台主机

4.2 添加模版

4.3 日志存放位置

服务端日志: /tmp/zabbix_server.log
客户端yum安装: 
/var/log/zabbix/zabbix_agentd.log 

变绿说明成功

5.zabbix自定义监控

5.1 自定义监控流程

基本流程
1. 取值(命令行)
2. 配置到客户端的配置文件 zabbix-agent.conf
3. 在zabbix服务端命令行使用zabbix_get取值测试
4. 将自定义的key添加到zibbix页面进行监控
------------------------------------------------------------
1. 取值
[root@WEB01 ~]#uptime|awk '{print $(NF-6)}'

2. 写入客户端的配置文件中
2.1 自定义路径:
[root@WEB01 ~]#mkdir /etc/zabbix_agentd.conf.d/
[root@WEB01 ~]#mkdir  /etc/zabbix_agentd.conf.d/user.conf

2.2 配置在include包含的文件内
[root@WEB01 ~]#cat /etc/zabbix_agentd.conf.d/user.conf 
UserParameter=user_login,uptime|awk '{print $(NF-6)}'

3. 重启客户端生效
[root@WEB01 ~]#systemctl restart zabbix-agent.service 

4. 服务端主动获取
[root@zabbix ~]#zabbix_get -s 172.16.1.7 -k user_login
扩展:查看本地定义的监控项列表
[root@WEB01 ~]#zabbix_agentd -p|grep user_login

5. 添加到zabbix界面配置监控项

客户端检查k值
[root@WEB01 ~]#zabbix_agentd -p|grep user_login
user_login                                    [t|2]
FS2uA32dP5XyUzrq11

5.2 自定义端口是否存活

1. 客户端配置
UserParameter=ng_port,netstat -tnulp|grep 80|grep -w tcp |wc -l

2. 重启
[root@WEB01 ~]#systemctl restart zabbix-agent.service


3. 服务端测试取key值
出现如图,提示需要root权限执行netstat,
加s权限,任何用户执行此命令时,临时获得 root 权限
[root@WEB01 ~]#chmod u+s /usr/bin/netstat 

  1. 页面添加监控项

5.3. 自定义值映射

5.4 使用系统自带的监控项监控端口

自带监控项,不需要web端自定义配置

5.5 自定义监控内存使用率

UserParameter=mem_use,free|awk 'NR==2{print $3/$2*100}'

6. 设置触发器

6.1 设置用户登录数超过2个则告警通知,默认告警到zabbix 界面上。

6.2设置内存超过40%告警(实际工作中80%)

6.3设置联合告警

7. 配置邮箱邮件告警

7.1 配置媒介

注意用户名为邮箱,是个坑!!!!

7.2 配置动作

7.3 配置收件人

7.4 配置自定义告警模版

默认标题:
故障: {EVENT.NAME}
消息内容:
报警主机: {HOST.NAME1}
报警服务: {ITEM.NAME}
报警key1: {ITEM.KEY1}: {ITEM.VALUE1}
报警key2: {ITEM.KEY2}: {ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}


恢复操作
默认标题:
恢复: {EVENT.NAME}
消息内容:
恢复主机: {HOST.NAME1}
恢复服务: {ITEM.NAME}
恢复key1: {ITEM.KEY1}: {ITEM.VALUE1}
恢复key2: {ITEM.KEY2}: {ITEM.VALUE2}

7.5 配置远程执行命令

7.5.1 监听nginx端口

7.5.2 客户端开启免密权限和远程执行命令功能

配置sudo提权
[root@WEB01 ~]#grep zabbix /etc/sudoers
zabbix  ALL=(ALL)   NOPASSWD: ALL


[root@WEB01 ~]#grep -n ^EnableRemoteCommand /etc/zabbix_agentd.conf
91:EnableRemoteCommands=1
[root@WEB01 ~]#systemctl restart zabbix-agent.service 

7.5.3 配置动作(执行条件+执行远程命令)

5.4 配置事件通知升级过程

8.配置企业微信告警

8.1 基本步骤和前面jenkins部署企业微信一样(省略)

https://work.weixin.qq.com/wework_admin/loginpage_wx?from=myhome
1. 上传包里面的脚本
2. 修改weixin.py的三个参数
vim weixin.py
 ...
 corpid='ww4f16cdc27c1a64234'
 appsecret='xxx'
 agentid=1000002
...

安装python2版本
[root@zabbix:~]#yum -y install python2
安装python2-pip # 用来安装python依赖
[root@zabbix:~]#yum -y install python2-pip
安装运行python脚本的依赖
[root@zabbix:~]#pip2.7 install requests

测试脚本:
 [root@zabbix:~]#python2.7 weixin.py "ZhaoJunJie" "下雨了" "回家开车"

8.2 集成到zabbix页面中

将脚本移动到固定的目录将脚本移动到固定的目录
[root@zabbix ~]#mv weixin.py /usr/local/share/zabbix/alertscripts/
[root@zabbix ~]#chmod +x /usr/local/share/zabbix/alertscripts/weixin.py 
[root@zabbix ~]#ll /usr/local/share/zabbix/alertscripts/weixin.py
-rwxr-xr-x 1 root root 1352 Jun  8 10:46 /usr/local/share/zabbix/alertscripts/weixin.py

操作日志
[root@zabbix ~]#chown zabbix.zabbix /tmp/weixin.log
[root@zabbix ~]#ll /tmp/weixin.log
-rw-r--r-- 1 zabbix zabbix 904 Jun  8 10:52 /tmp/weixin.log
Sun, 08 Jun 2025 10:52:15, weixin.py, INFO, sendto:sunyingmin;;subject:下雨了;;message:下雨了  回家开车

8.3 略,参考邮箱报警