2、Zabbix基础入门:Zabbix架构与组件、安装部署、Web界面初识

2.1 Zabbix是什么?先聊聊我的第一印象

说实话,我第一次接触Zabbix是在一个深夜。当时线上一个核心业务系统突然挂了,监控平台却毫无反应。老板急得团团转,我盯着屏幕发呆——那会儿用的是某款商业监控软件,配置复杂得要命,而且动不动就丢数据。

后来我换上了Zabbix。嗯,这玩意儿给我的第一感觉就是:开源、强大、而且不挑食。它能监控服务器、网络设备、数据库、应用,甚至你家的智能灯泡(只要你愿意写脚本)。

Zabbix是一个企业级的开源分布式监控解决方案。说白了,它就是一个7×24小时不睡觉的哨兵,帮你盯着所有IT资源的健康状态。我在项目中遇到过最夸张的场景:用一台Zabbix Server监控了3000多台设备,CPU负载才30%左右。这性能,真不是盖的。

2.2 Zabbix架构与核心组件

Zabbix的架构其实不复杂。我习惯把它拆成四个部分来理解:

组件 角色 我的理解
Zabbix Server 大脑 负责接收数据、触发告警、执行动作。所有决策都靠它。
Zabbix Agent 眼睛和耳朵 部署在被监控的机器上,采集CPU、内存、磁盘等数据。
Zabbix Proxy 分身 当设备太多或跨机房时,Proxy帮Server分担压力。
Zabbix Web界面 仪表盘 我们操作和查看监控数据的地方。

你想想看,如果只有Server和Agent,那所有Agent都得直接连Server。当你有几千台机器时,Server会累趴下。这时候Proxy就派上用场了——它像个中间人,先收集数据,再统一上报给Server。

我个人习惯:在跨机房场景下,每个机房部署一个Proxy。这样即使机房网络断了,Proxy还能本地缓存数据,等网络恢复后再同步。这个设计救过我一次——有一次机房光纤被挖断了,数据愣是一点没丢。

2.3 安装部署:从零开始搭一套

安装Zabbix其实不难,但坑不少。我踩过的坑,今天一并告诉你。

2.3.1 环境准备

我推荐用CentOS 7或Ubuntu 20.04。数据库选MySQL或PostgreSQL都行,我个人偏爱MySQL,因为社区资源多。

# 关闭防火墙和SELinux(测试环境)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

我曾经在生产环境忘了关SELinux,结果Zabbix Agent死活连不上Server。排查了整整两个小时,最后发现是SELinux策略拦截了端口。嗯,从那以后我养成了先检查SELinux的习惯。

2.3.2 安装Zabbix Server

以CentOS 7为例,我习惯用官方源安装:

# 安装Zabbix仓库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm

# 安装Server、Agent和MySQL支持
yum install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql

# 创建数据库
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'your_password';
quit;

# 导入初始数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

这里有个细节:导入初始数据时,如果数据量大会很慢。我建议用screen命令后台跑,不然终端断了就白干了。

2.3.3 配置Zabbix Server

# 编辑配置文件
vim /etc/zabbix/zabbix_server.conf

# 修改以下参数
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=your_password

# 启动服务
systemctl start zabbix-server
systemctl enable zabbix-server

小技巧:启动后可以用tail -f /var/log/zabbix/zabbix_server.log查看日志。如果看到"starting Zabbix Server",说明启动成功了。如果报错,八成是数据库连接问题。

2.3.4 安装Zabbix Web界面

Zabbix Web基于PHP,需要配置Nginx或Apache。我习惯用Nginx:

# 安装Nginx和PHP
yum install -y nginx php-fpm php-mysql

# 配置Nginx
vim /etc/nginx/conf.d/zabbix.conf

server {
    listen 80;
    server_name zabbix.example.com;
    root /usr/share/zabbix;
    index index.php;
    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;
    }
}

# 启动服务
systemctl start nginx php-fpm
systemctl enable nginx php-fpm

然后打开浏览器,访问http://你的IP。你会看到Zabbix的安装向导。跟着点下一步就行,注意检查PHP参数是否满足要求。如果不满足,修改/etc/php.ini里的max_execution_timememory_limit等参数。

2.4 Web界面初识:别被菜单吓到

第一次打开Zabbix Web界面,你可能会觉得菜单有点多。别慌,我带你走一遍核心功能。

默认账号是Admin,密码zabbix。登录后你会看到:

  • 仪表盘:显示最近的告警、系统状态、事件概览。我习惯把最关键的几个监控项放在这里。
  • 监控:查看所有主机、监控项、触发器、图形。这是日常巡检的主要页面。
  • 配置:添加主机、创建监控项、设置告警规则。说白了,所有"干活"的地方都在这里。
  • 告警:查看历史告警、确认告警、设置动作。比如发邮件、发短信。
  • 报表:生成系统可用性报表、趋势图。老板要的周报月报,这里一键生成。

我记得第一次配置告警时,我设置了CPU超过90%就发邮件。结果测试的时候,CPU飙到95%了,邮件却没收到。排查了半天,发现是邮件服务器配置错了。所以我的建议是:配置完告警后,一定要手动触发一次测试

2.5 避坑指南:我踩过的三个坑

  1. 时区问题:Zabbix默认使用UTC时间。如果不改成Asia/Shanghai,你看到的告警时间会差8小时。修改/etc/php.ini里的date.timezone = Asia/Shanghai即可。
  2. 防火墙端口:Zabbix Server默认监听10051端口,Agent监听10050端口。如果跨网络部署,记得开放这两个端口。我曾经因为云安全组没配,折腾了一下午。
  3. 数据库性能:当监控设备超过500台时,MySQL的innodb_buffer_pool_size建议设为物理内存的70%。不然查询会越来越慢,告警延迟严重。

2.6 小结

这一章我们聊了Zabbix的架构、组件、安装部署和Web界面。说白了,Zabbix就是一个能帮你省下大量人工巡检时间的工具。下一章我们会深入配置第一个监控项,到时候你就能看到数据在屏幕上跳动了。

嗯,安装过程中如果遇到问题,别急。先看日志,再查文档。实在不行,记住我的微信:deep3321,公众号:蓝海资料掘金营。咱们下章见。