Zabbix监控系统部署
一、先想清楚:一个理想的监控系统该有什么
动手装之前,最好先有套标准。网课上总结的 "理想监控系统" 清单,我理解下来是三层。
第一层,监控本身。
- 能自定义监控内容,自己写脚本采集数据就行
- 数据要入库,方便事后分析计算
- 部署要简单快速
- 可视化要直观清晰
第二层,告警。
- 告警逻辑能定义得复杂,比如监控项之间的关联告警、程序依赖检测,而不是只盯一个孤立的指标
- 告警要能确认响应,让组里人知道 "这个已经有人在处理了"
- 报警方式可自定义:短信、邮件、微信、钉钉
- 告警内容可自定义,能带一点简单分析,省得人还得登服务器去看
- 报警后能自动的简单的预处理,比如自我修复、重启、采集数据
第三层,协同。
- 有 API 给研发和其他系统调用
- 监控数据开放、结构主流,方便解析
- 可视化能插件化使用,而不是一堆复杂的 JS 文件
二、监控到底在监控什么
一个监控对象有哪些?
硬件监控:
通过远程控制卡:Dell的iDRAC,HP的ILO和IBM的IMM等
使用IPMI来完成物理设备的监控工作。通常必须要监控的就是温度、硬盘故障等
路由器,交换机(端口,光庭,日志),打印机,Windows等
系统监控:
cpu,内存,硬盘使用率,硬盘IO,系统负载,进程数
服务监控:
apache,nginx.php-fpm,mysql.memcache,redis,tomcat,JVM,TCP连接数
性能监控:
网站性能,服务器性能,数据库性能,存储性能
日志监控:
使用ELK来进行日志监控
安全监控:
(1)Nginx+Lua编写了一个WAF通过kibana可以图形化的展示不同的攻击类型的统计。
(2)用户登录数,passwd文件变化,本地所有文件改动
网络监控:
端口,web(URL),DB.ping包,IDC带宽网络流量,网络流出出速率,网络入流量,网络出流量,网络使用率,SMTP.POP3
三、Zabbix 是什么
Zabbix 是 Alexei Vladishev 开发的一套网络监视、管理系统,基于 Server-Client 架构,用来监视各种网络服务、服务器和网络机器的状态。
几个关键点:
- 数据存储:支持 MySQL、PostgreSQL、SQLite、Oracle、IBM DB2 等(注意单独设置mysql的zabbix账户与专门数据库)
- 技术栈:Server 端用 C 语言写,Web 前端用 PHP(注意版本,低版本如php5可能不兼容)
- 监控方式灵活:可以只用 Simple Check,不装客户端;在 UNIX/Windows 上装 Agent 后能监控 CPU Load、网络状况、硬盘容量等;不装 Agent 也能通过 SNMP、TCP、ICMP、IPMI、SSH、telnet 监控目标
- 扩展性:自带 Item 足够满足普通小公司;大公司可以自定义 Item、自动生成报表、用 API 和其他系统集成
zabbix的业务逻辑
一个完整的 Zabbix 监控系统主要由以下部分组成:
| 组件 | 角色与职责 | 部署位置 |
|---|---|---|
| Zabbix Agent | 数据采集器。部署在被监控目标(如服务器、网络设备)上,负责采集CPU、内存、磁盘等数据。 | 所有被监控的主机上 |
| Zabbix Proxy | 区域代理。可选组件,充当Server的“区域采集站”。负责代表Server收集其下所有Agent的数据,进行缓存和预处理后,再批量转发给Server。(代理) | 靠近被监控端的独立服务器或容器 |
| Zabbix Server | 核心控制节点。整个系统的“大脑”,负责接收所有数据、触发告警、执行动作,并提供API接口。(主机) | 中心服务器 |
| Database | 数据存储。存储所有配置、历史数据和事件信息。(数据库) | 通常与Server在同一台或独立的数据库服务器上 |
| Web UI | 用户界面。提供图形化的配置、监控数据查看和报表功能。(就是浏览器) | 可与Server在同一台或独立部署 |

四、部署实战:CentOS 7 上部署Zabbix
1. 环境初始化
# 查看 IP
ifconfig eth0 | awk 'NR==2{print $2}'
# 关闭 SELinux(改完重启生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 关闭并禁用防火墙
systemctl disable --now firewalld
注意:Zabbix Server 内存尽量给大一点,4G 比较稳。
2. 获取下载源,换成阿里云镜像
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
把 repo 里的官方源替换成阿里云,国内下载快:
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
清缓存,装服务端和 agent:
yum clean all
yum makecache
yum install zabbix-server-mysql zabbix-agent -y
3. 装前端(Web 界面)
Zabbix 5.0 的 Web 前端跑在 SCL(Software Collections)环境里,先装 SCL 工具:
yum install centos-release-scl -y
再把 [zabbix-frontend] 段的 baseurl 改成阿里云镜像:
vim /etc/yum.repos.d/zabbix.repo
改成:
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1(默认为0所以不会装)
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

grep -A6 '^\[zabbix-frontend\]' /etc/yum.repos.d/zabbix.repo # 确认 enabled=1、baseurl 是阿里云
yum makecache
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
安装前端环境和 Apache 配置:
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
##注意如果报错cannot find,大概率是依赖树出了问题,换源成阿里云的镜像站即可
4. 装数据库 MariaDB
yum install mariadb-server -y
systemctl enable --now mariadb
初始化并设置 root 密码(演示用 123,生产请换强密码):
mysql_secure_installation
这里有个交互项 "Disallow root login remotely? [Y/n]",学习用的虚拟机可以选 n 跳过;允许远程 root 登录在生产环境不建议。
5. 建库建用户
mysql -uroot -p//进入数据库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> create user zabbix@localhost identified by '123';
SHOW DATABASES;//看看创建了没有

补一步授权 —— 网课里没明说,但导入数据前必须做,否则后面会报权限错误:
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '123';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
6. 导入初始数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
7. 改 server 配置文件里的数据库密码
grep '^DBPa' /etc/zabbix/zabbix_server.conf
# DBPassword=123 //记得去注释
systemctl restart zabbix-server
//改完重启
8. 改 PHP 时区
时区不对的话,Web 安装向导会卡住。改 PHP-FPM 配置:
grep 'timezone' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
9. 启动服务并访问
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
浏览器访问 http://192.168.75.153/zabbix,默认账号密码(注意大小写,网课老师专门强调过,用大写):
Admin
zabbix
老问题
[root@m01 ~]# chown -R zabbix:zabbix /var/run/zabbix
[root@m01 ~]# chmod 755 /var/run/zabbix
由于老版或者zabbix文件权限不足导致无法运行zabbix,提权即可

成功了
五、agent2的部署
1.前置准备
时间同步
Zabbix 对时间敏感程度高,服务端与客户端时间不一致会出现监控数据异常、数据不采集、告警错乱等问题,所有 agent 节点都要做时间同步。
# 安装ntpdate时间同步工具
yum install ntpdate -y
# 同步阿里云NTP时间服务器
ntpdate -u ntp.aliyun.com
#备份原有localtime
mv /etc/localtime{,.bak}
#软链接指向上海时区
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
添加防火墙的10050端口规则(agent2默认的端口是10050的高位端口)
firewall‑cmd --add‑port=10050/tcp --permanent
firewall‑cmd --reload
2.安装
yum install zabbix-agent2 -y //安装
systemctl enable --now zabbix-agent2 //设置自启
ss -tnlp | grep zabbix //老系统用ss查看程序端口使用
ss -tnlp | grep 10050 //查看端口情况
3.配置文件
/etc/zabbix/zabbix_agent2.conf //agent配置地址
ServerActive=127.0.0.1
Server=127.0.0.1
hostnanme=agentnanme
//修改为服务端地址与主机名
4.重启并且验证
systemctl restart zabbix-agent2
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)