Zabbix分布式监控系统搭建
前言
Zabbix是一个企业级的分布式开源监控方案。Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。
Zabbix由几个主要的软件组件构成 :
- Server
Zabbix server是监控代理程序报告系统可用性、系统完整性和统计信息的核心组件。Zabbix Server是所有配置信息、统计信息和操作数据的核心存储器。 - 数据库存储
所有配置信息和Zabbix收集到的数据都被存储在数据库中。 - Web界面
为了在任何地方和任何平台都能轻松地访问Zabbix,Zabbix提供了基于Web的界面。该界面是Zabbix Server的一部分,通常跟Zabbix Server运行在同一台物理机器上。如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。 - Proxy代理服务器
Zabbix Proxy可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分。当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。 - Agent监控代理
Zabbix Agents监控代理部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。
如果你是初学者,那么我之前发布的文章对一些简单操作有详细讲解,你可以从中入手,本文对之前讲过的操作不会详细说明。
虚拟机使用的是考试提供的xnode1、xnode2
各节点规划如下:
虚拟机 | IP/24 | 主机名 | 节点 |
---|---|---|---|
xnode1 | 192.168.200.11 | zabbix-server | Server节点 |
xnode2 | 192.168.200.12 | zabbix-agent | Agent节点 |
操作过程
关闭防火墙和Selinux
#两个节点均关闭防火墙并禁止其开机自启
[root@xnode1 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@xnode2 ~]# systemctl stop firewalld && systemctl disable firewalld
#临时关闭Selinux
[root@xnode1 ~]# setenforce 0
[root@xnode2 ~]# setenforce 0
修改主机名
#修改两台机子的主机名
[root@xnode1 ~]# hostnamectl set-hostname zabbix-server
[root@xnode1 ~]# bash
[root@zabbix-server ~]#
[root@xnode2 ~]# hostnamectl set-hostname zabbix-agent
[root@xnode2 ~]# bash
[root@zabbix-agent ~]#
配置YUM源
#创建挂载目录
[root@zabbix-server ~]# mkdir /opt/centos
#挂载
[root@zabbix-server ~]# mount -o loop CentOS-7-x86_64-DVD-1511.iso /mnt/
mount: /dev/loop2 is write-protected, mounting read-only
[root@zabbix-server ~]# cp -rvf /mnt/* /opt/centos
[root@zabbix-server ~]# umount /mnt/
#将处于主目录的zabbix目录全部移动到/opt目录
[root@zabbix-server ~]# mv gpmall-repo /opt/gpmall-repo
#删除系统自带的默认源
[root@zabbix-server ~]# rm -rf /etc/yum.repos.d/*
#创建新的仓库文件
[root@zabbix-server ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
enabled=1
gpgcheck=0
[zabbix]
name=zabbix
baseurl=file:///opt/zabbix
enabled=1
gpgcheck=0
#检查可用性,查出3760个包就没问题
[root@zabbix-server ~]# yum clean all && yum repolist
Determining fastest mirrors
repo id repo name status
centos centos 3,723
zabbix zabbix 37
repolist: 3,760
#xnode2是没有CentOS的系统镜像和zabbix目录的,所以我们在xnode1安装ftp服务,让xnode2通过ftp服务使用xnode1的软件仓库
#安装ftp服务
[root@mycat ~]# yum -y install vsftpd
...
Complete!
#修改ftp服务的配置文件,共享/opt目录(这也是为什么前面要移动zabbix目录位置的原因)
[root@mycat ~]# echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf
#启动ftp服务并设置开机自启
[root@mycat ~]# systemctl start vsftpd && systemctl enable vsftpd
...
#配置zabbix-agent节点的YUM源
#删除系统默认源
[root@zabbix-agent ~]# rm -rf /etc/yum.repos.d/*
#创建新的仓库文件
[root@zabbix-agent ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=ftp://192.168.200.11/centos
enabled=1
gpgcheck=0
[zabbix]
name=zabbix
baseurl=ftp://192.168.200.11/zabbix
enabled=1
gpgcheck=0
#检查可用性
[root@zabbix-agent ~]# yum clean all && yum repolist
安装LAMP+Zabbix服务
#在server端安装LAMP环境,即Linux+Apache+MySQL+PHP
#安装http和mariadb服务
[root@zabbix-server ~]# yum -y install httpd mariadb mariadb-server
...
Complete!
#把两个服务都启动和设置开机自启
[root@zabbix-server ~]# systemctl start httpd mariadb
[root@zabbix-server ~]# systemctl enable httpd mariadb
...
#安装zabbix服务
[root@zabbix-server ~]# yum -y install zabbix-agent zabbix-server-mysql zabbix-web-mysql
配置数据库
#登录数据库
[root@zabbix-server ~]# mysql
...
MariaDB [(none)]>
#创建一个中文编码格式的zabbix库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
#授予zabbix用户访问权限
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
#退出数据库(Ctrl+C或者quit;命令都行)
MariaDB [(none)]> Ctrl-C -- exit!
Aborted
导入数据库文件
#先切换到/usr/share/doc/zabbix-server-mysql-3.4.15/目录
[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.15/
[root@zabbix-server zabbix-server-mysql-3.4.15]#
#导入数据库文件
[root@zabbix-server zabbix-server-mysql-3.4.15]# zcat create.sql.gz | mysql -uroot zabbix
#create.sql.gz是一个数据库脚本文件压缩包,这里通过zcat解压缩后通过管道传递给mysql -uroot zabbix命令指定连接我们刚刚创建的zabbix库执行这个脚本文件
设置时区
#先切换回主目录,看着简洁
[root@zabbix-server zabbix-server-mysql-3.4.15]# cd ~
[root@zabbix-server ~]#
#修改PHP配置文件
[root@zabbix-server ~]# vi /etc/php.ini
#将[Date]字段下date.timezone配置的值为RPC
#该配置在878行,在vi正常模式下可以使用878gg快速跳转
#但这是知道在第几行才能用的方法,在不知道具体行数的情况,我们可以这么做:
#在vi正常模式下输入:进入命令行模式,使用/test查询要找的内容。我们先跳转到[Date]字段下,即:
#:/[Date
#此时就会查找匹配的字段,跳转到Date字段
875 [Date]
876 ; Defines the default timezone used by the date functions
877 ; http://php.net/date.timezone
878 ;date.timezone =
#设置值为RPC,修改后:
[root@zabbix-server ~]# sed -n '878p' /etc/php.ini
;date.timezone = RPC
#修改/etc/httpd/conf.d/zabbix.conf文件,修改20行配置时区为亚洲/上海
[root@zabbix-server ~]# vi /etc/httpd/conf.d/zabbix.conf
#修改前
[root@zabbix-server ~]# sed -n '20p' /etc/httpd/conf.d/zabbix.conf
# php_value date.timezone Europe/Riga
#修改后
[root@zabbix-server ~]# sed -n '20p' /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
#配置完重启http服务
[root@zabbix-server ~]# systemctl restart httpd
修改Zabbix配置文件
#修改zabbix_server.conf配置文件
[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf
#去掉91行DBHost=localhost的注释 #去掉124行DBPassword=的注释,并添加zabbix的值
#去掉修改131行的注释,并将值改为DBSocket=/var/lib/mysql/mysql.sock
#修改前
[root@zabbix-server ~]# sed -n '91p;124p;131p' /etc/zabbix/zabbix_server.conf
# DBHost=localhost
# DBPassword=
# DBSocket=/tmp/mysql.sock
#修改后
[root@zabbix-server ~]# sed -n '91p;124p;131p' /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
启动Zabbix服务
[root@zabbix-server ~]# systemctl start zabbix-server
#查看端口开放情况(该命令依赖于net-tools工具,没有请自行通过yum工具安装)
[root@zabbix-server ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2909/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1111/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1590/master
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 5842/zabbix_server
tcp6 0 0 :::80 :::* LISTEN 3019/httpd
tcp6 0 0 :::21 :::* LISTEN 2416/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1111/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1590/master
tcp6 0 0 :::10051 :::* LISTEN 5842/zabbix_server
#看到10051端口开放了就说明启动成功了
配置Zabbix中文界面
打开浏览器,输入192.168.200.11/zabbix,访问Zabbix的Web界面
映入眼帘的是Zabbix的安装向导,我们点击右下角的"Next step"按钮进入下一步
这个界面显示PHP版本信息等内容,我们继续点击右下角“Next step”按钮,进入下一步
这里需要填写连接数据库的必要信息,端口为3306,密码为zabbix,填写完后点击右下角 “Next step”按钮,进入下一步
这里需要填写Zabbix服务端的详细信息,Name字段是给监控平台起个名字,随便写。然后下一步
最后是平台的信息概况,给我们确认情况,确认无误直接下一步
安装完成,点击右下角"Finish"完成安装
完成后会跳转至登录界面,我们使用Admin用户和zabbix密码登录
进入Zabbix仪表盘主页后,点击右上角的头像图标进入设置界面
在“Language”一栏中将语言设置为中文,点击“Update”更新应用设置
这样我们中文的Zabbix控制界面就设置好了
添加被监控机器
#来到zabbix-agent节点,安装zabbix-agent服务
[root@zabbix-agent ~]# yum -y install zabbix-agent
...
Complete!
#修改/etc/zabbix/zabbix_agentd.conf配置文件,配置zabbix-agent
[root@zabbix-agent ~]# vi /etc/zabbix/zabbix_agentd.conf
#将97行和138行的IP修改为server端IP,将149行主机名修改为Zabbix-agent
[root@zabbix-agent ~]# sed -n '97p;138p;149p' /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
#修改后
[root@zabbix-agent ~]# sed -n '97p;138p;149p' /etc/zabbix/zabbix_agentd.conf
Server=192.168.200.11
ServerActive=192.168.200.11
Hostname=Zabbix-agent
#配置好后启动服务
[root@zabbix-agent ~]# systemctl start zabbix-agent
#查看端口开放状态
[root@zabbix-agent ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1446/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1794/master
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9768/zabbix_agentd
tcp6 0 0 :::22 :::* LISTEN 1446/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1794/master
tcp6 0 0 :::10050 :::* LISTEN 9768/zabbix_agentd
#看到10050端口就说明启动成功
回到Web界面,选择菜单栏“配置”→“主机”→“创建主机”命令,会跳转到配置主机的页面。
填写agent端的信息,然后点击下方添加按钮
添加后agent就出现在了监控主机列表里,我们点击“zabbix-agent”名称,然后点击“模板”标签,进入添加模板操作界面,点击"选择"按钮。
进行监控模板添加,在跳转界面勾选用户想要监控的复选框,然后单击下方 “选择”按钮
选择好后点击下方"添加",然后点击"更新"
这样agent节点就被添加到监控当中了
在最上面的选择菜单栏中“监测中”→“图形”命令,群组选择Linux server,主机选择zabbix- agent,图形选择需要显示的监控项,此处选择为CPU jumps。就可以查看被监控的数据了。
后语
Zabbix的主要特点:
- 安装与配置简单,学习成本低。官方不仅提供了详细的安装指南,它的 Web 界面还直观易用,可以通过图形化界面设置监控项和模板。
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备 。Zabbix可以定期扫描网络,发现新的设备并自动将其纳入监控范围,大大减少了手动配置的工作量。
- 分布式监视以及WEB集中管理功能。Zabbix支持分布式监控架构,可以在多个地理位置部署代理(Agent)和代理服务器(Proxy),实现大规模网络的监控。同时通过Web界面可以在一个地方查看和管理所有监控数据,确保监控的一致性和高效性。
- 可以无agent监视 。Zabbix 可以通过 SNMP、IPMI、JMX、SSH、Telnet 等协议直接采集数据,不需要在被监控设备上安装任何额外软件。
- 用户安全认证和柔软的授权方式 。Zabbix提供了多种用户身份验证方式,如本地用户认证、LDAP、Active Directory 等
- 通过WEB界面设置或查看监视结果 。Zabbix的所有配置和监控结果都可以通过Web界面进行操作和查看。包括创建和编辑监控项、设置报警规则、查看实时数据和历史数据、生成报告和图表等等
- 通知功能强大。Zabbix支持多种通知方式,包括电子邮件、短信、即时通讯(如 Telegram、Slack)、脚本等。当监控指标触发预设的报警条件时,Zabbix 可以立即发送通知,提示运维人员采取措施,让运维人员不需要守在电脑前。此外,通知策略可以根据时间、事件级别、用户组等进行灵活配置,确保及时和准确的报警处理。
Zabbix的主要功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视