目录
作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。
利用一个优秀的监控软件,我们可以
Cacti是基于网络和绘图进行监控,Nagios网络监控这两个用的比较多;Zabbix因为其支持的选项多所以用的比较多。
zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至 zabbix server 端,zabbix server 收到数据后,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像。当 zabbix 监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)。
Zabbix主要分为两个部分组成,Agent和Server两个部分,Zabbix_Agent会主动的将数据交给监控监控传递给Zabbix_Server端,Zabbix_Server通过B/S在Web前端进行展示(B/S架构即浏览器和服务端架构,提供可视化界面,监控所有指标)

Zabbix-Agent数据采集-----> Zabbix-Server数据分析/告警-----> 数据库 数据存储-----> Zabbix-Web数据展示
假设当前有100台服务器,Zabbix监控模式要选择主动模式(因为Agent端过多的话,为了减轻Server端压力,使用主动模式会好一点)
zabbix 监控部署在系统中,包含常见的五个程序: zabbix_server、zabbix_agent、zabbix_proxy、zabbix_get、zabbix_sender 等。

Server-Client架构是Zabbix最简单的架构,监控机器和被监控机器之间不经过任何处理,直接由Zabbix-Server和Zabbix-Client之间进行数据交换。
适用于网络比较简单,尽量在局域网内,识别比较少的监控环境

Server-Proxy-Client,其中Proxy是Server和Client之间沟通的一个桥梁,Proxy本身有前端,而且本身不存放数据,只是将Agent发送来的数据暂时存放,而后再提交给Server,这种架构经常是Master-Node-Client,一般适用于跨机房,跨网络的中型网络监控架构

Master-Node-Client该架构是Zabbix最复杂的监控架构,适用于跨网络跨机房设备多的大型环境。每个Node同时接一个Sever端,Node下面可以接Proxy端,也可以直接连接Client,Node有自己的配置文件和数据库,其要做的是将配置信息和监控数据向Master进行数据同步,Master故障损坏对Node其下架构的完整性无任何影响
- systemctl disable --now firewalld
- setenforce 0
- hostnamectl set-hostname zbx-server
- [root@zbx-server ~]#rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- #获取 zabbix 的下载源
-
-
- [root@zbx-server ~]#cd /etc/yum.repos.d
- [root@zbx-server yum.repos.d]#sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
- #更换 zabbix.repo 为阿里源
- [root@zbx-server yum.repos.d]#yum clean all && yum makecache
-
-
- [root@zbx-server yum.repos.d]#yum install -y zabbix-server-mysql.x86_64 zabbix-agent
- #安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。
- [root@zbx-server yum.repos.d]#yum install -y centos-release-scl
-
-
- [root@zbx-server yum.repos.d]#vim zabbix.repo
- #修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
- [root@zbx-server yum.repos.d]#sed -n '8,13p' zabbix.repo
- [zabbix-frontend]
- name=Zabbix Official Repository frontend - $basearch
- baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
- enabled=1
- #开启安装源
- gpgcheck=1
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
-
-
- [root@zbx-server yum.repos.d]#yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
- [root@zbx-server yum.repos.d]#yum install -y mariadb-server.x86_64 mariadb
- #安装 zabbix 所需的数据库
- [root@zbx-server yum.repos.d]#systemctl enable --now mariadb.service
- Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
- [root@zbx-server yum.repos.d]#mysql_secure_installation
- #初始化数据库 并设置密码
- New password:
- Re-enter new password:
- #可以设置为123123,这里我们设置为123
- 其他的一路回车即可
- [root@zbx-server yum.repos.d]#mysql -uroot -p123
- MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;Query OK, 1 row affected (0.00 sec)
-
- MariaDB [(none)]> GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
- Query OK, 0 rows affected (0.00 sec)
-
- MariaDB [(none)]> flush privileges;
- Query OK, 0 rows affected (0.00 sec)
- #导入数据库信息
- [root@zbx-server yum.repos.d]#rpm -ql zabbix-server-mysql
- #查询 sql 文件的位置
- /etc/logrotate.d/zabbix-server
- /etc/zabbix/zabbix_server.conf
- /usr/lib/systemd/system/zabbix-server.service
- /usr/lib/tmpfiles.d/zabbix-server.conf
- /usr/lib/zabbix/alertscripts
- /usr/lib/zabbix/externalscripts
- /usr/sbin/zabbix_server_mysql
- /usr/share/doc/zabbix-server-mysql-5.0.42
- /usr/share/doc/zabbix-server-mysql-5.0.42/AUTHORS
- /usr/share/doc/zabbix-server-mysql-5.0.42/COPYING
- /usr/share/doc/zabbix-server-mysql-5.0.42/ChangeLog
- /usr/share/doc/zabbix-server-mysql-5.0.42/NEWS
- /usr/share/doc/zabbix-server-mysql-5.0.42/README
- /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz
- /usr/share/doc/zabbix-server-mysql-5.0.42/double.sql
- /usr/share/man/man8/zabbix_server.8.gz
- /var/log/zabbix
- /var/run/zabbix
- [root@zbx-server yum.repos.d]#zcat /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz|mysql -uroot -p123 zabbix
- #zcat显示压缩包中文件的内容,可以使用 gzip -d 或 gunzip 或 zcat 将压缩文件恢复为原始格式。
- [root@zbx-server yum.repos.d]#vim /etc/zabbix/zabbix_server.conf
- [root@zbx-server yum.repos.d]#sed -n 124p /etc/zabbix/zabbix_server.conf
- DBPassword=zabbix
- #指定 zabbix 数据库的密码
-
- [root@zbx-server yum.repos.d]#vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf [root@zbx-server yum.repos.d]#sed -n 25p /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
- #取消注释,修改时区
- php_value[date.timezone] = Asia/Shanghai
-
-
- #启动 zabbix 相关服务
- [root@zbx-server yum.repos.d]#systemctl restart zabbix-server.service zabbix-agent.service httpd.service rh-php72-php-fpm.service
- [root@zbx-server yum.repos.d]#systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
- Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
- Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
- Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
- Created symlink from /etc/systemd/system/multi-user.target.wants/rh-php72-php-fpm.service to /usr/lib/systemd/system/rh-php72-php-fpm.service.
浏览器访问:http://192.168.241.11/zabbix






可以在左侧菜单栏找到【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新。
- [root@node2 ~]#systemctl disable --now firewalld
- [root@node2 ~]#setenforce 0
- [root@node2 ~]#hostnamectl set-hostname zbk-agent
- [root@node2 ~]#bash
- [root@zbk-agent ~]#
- yum install -y ntpdate
- ntpdate -u ntp.aliyun.com
-
-
- #客户端配置时区,与服务器保持一致
- [root@zbk-agent ~]#mv /etc/localtime{,.bak}
- [root@zbk-agent ~]#ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- [root@zbk-agent ~]#date
- Sun Apr 14 15:12:35 CST 2024
- [root@zbk-agent ~]#rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
-
- [root@zbk-agent yum.repos.d]#yum install -y zabbix-agent2
- [root@zbk-agent ~]#vim /etc/zabbix/zabbix_agent2.conf
- [root@zbk-agent ~]#sed -n 80p /etc/zabbix/zabbix_agent2.conf
- Server=192.168.241.11
- #指定 zabbix 服务端的 IP 地址
- [root@zbk-agent ~]#sed -n 125p /etc/zabbix/zabbix_agent2.conf
- ServerActive=192.168.241.11
- #指定 zabbix 服务端的 IP 地址
- [root@zbk-agent ~]#sed -n 136p /etc/zabbix/zabbix_agent2.conf
- Hostname=zbx-server
- #指定当前 zabbix 客户端的主机名
- [root@zbk-agent ~]#systemctl start zabbix-agent2
- [root@zbk-agent ~]#systemctl enable zabbix-agent2
- Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service to /usr/lib/systemd/system/zabbix-agent2.service.
- [root@zbk-agent ~]#netstat -natp | grep zabbix
- tcp6 0 0 :::10050 :::* LISTEN 6385/zabbix_agent2
- [root@zbx-server ~]#yum install -y zabbix-get
- [root@zbx-server ~]#zabbix_get -s '192.168.241.22' -p 10050 -k 'agent.ping'
- 1
- [root@zbx-server ~]#zabbix_get -s '192.168.241.22' -p 10050 -k 'system.hostname'
- zbk-agent




此处稍等片刻,ZBX将会变为绿色代表开启成功

目前显示为正常启用



这里可以查看客户端监控项所有信息


图形对应硬件接口、网络接口等等
案例:自定义监控客户端服务器登录的人数
需求:限制登录人数不超过3人,超过3人发送告警
自定义监控脚本:
- [root@zbk-agent ~]#who|wc -l
- #明确需要执行的 linux 命令
- 3
- [root@zbk-agent ~]#vim /etc/zabbix/zabbix_agent2.conf
- #创建 zabbix 的监控项配置文件,用于自定义 key
- [root@zbk-agent ~]#sed -n 273p /etc/zabbix/zabbix_agent2.conf
- #可以将自定义的监控项配置文件创建在 zabbix_agent2.d 目录中
- Include=/etc/zabbix/zabbix_agent2.d/*.conf
- [root@zbk-agent ~]#sed -n 296p /etc/zabbix/zabbix_agent2.conf
- #自定义监控项的格式如下
- # Format: UserParameter=
, - #UserParameter是固定格式 key是键 shell是command调用的指令(命令行或者脚本)
- Format先调用键再调用指令
- [root@zbk-agent ~]#cd /etc/zabbix/zabbix_agent2.d/
- [root@zbk-agent zabbix_agent2.d]#ls
- [root@zbk-agent zabbix_agent2.d]#vim UserParameter_login.conf
- UserParameter=login.user,who|wc -l
- [root@zbk-agent zabbix_agent2.d]#systemctl restart zabbix-agent2.service
-
-
- [root@zbx-server ~]#zabbix_get -s "192.168.241.22" -p 10050 -k 'login.user'
- #在服务端验证新建的监控项
- 4
- [root@zbk-agent zabbix_agent2.d]#who|wc -l
- 4















一个主机可以关联多个模板



认证密码可登录QQ邮箱页面,点击【设置】-->【账户】中的【生成授权码】,通过短信获取授权码







测试,开启多个会话窗口
![]()


如果想改变输出结果内容


zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。对于 agent2 是被动模式。
缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。
- [root@zbk-agent ~]#systemctl is-active zabbix-agent2.service
- active

- vim /etc/hosts
- [root@zbx-server ~]#cat /etc/hosts
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
- ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 192.168.241.11 zbx-server
- 192.168.241.22 zbk-agent





- [root@zbx-server ~]#tail -f /var/log/zabbix/zabbix_server.log
- 1968:20240417:214202.342 cannot send list of active checks to "192.168.241.22": host [zbx-server] not found
- ...
- 1959:20240417:215907.950 enabling Zabbix agent checks on host "zbk-agent": host became available

zabbix agent2 会主动上报自己的信息,发给 zabbix server。对于 agent2 是主动模式.
缺点是可能因为配置文件配置错误或者网络不通等原因导致 zabbix agent2 可能找不到 zabbix server。


- [root@zbk-agent ~]#vim /etc/zabbix/zabbix_agent2.conf
- [root@zbk-agent ~]#sed -n 144p /etc/zabbix/zabbix_agent2.conf
- HostnameItem=system.hostname
-
- [root@zbk-agent ~]#egrep -v "^#|^$" /etc/zabbix/zabbix_agent2.conf
- PidFile=/var/run/zabbix/zabbix_agent2.pid
- LogFile=/var/log/zabbix/zabbix_agent2.log
- LogFileSize=0
- Server=192.168.241.11
- ServerActive=192.168.241.11
- Hostname=zbx-server
- HostnameItem=system.hostname
- Include=/etc/zabbix/zabbix_agent2.d/*.conf
- ControlSocket=/tmp/agent.sock








分布式监控的作用
Agent----->Proxy----->Server
- systemctl disable --now firewalld
- setenforce 0
- [root@node3 ~]#hostnamectl set-hostname zbx-proxy
- [root@node3 ~]#bash
- [root@zbx-proxy ~]#rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- [root@zbx-proxy ~]#cd /etc/yum.repos.d/
- [root@zbx-proxy yum.repos.d]#ls
- CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
- CentOS-CR.repo CentOS-Media.repo zabbix.repo
- CentOS-Debuginfo.repo CentOS-Sources.repo
- [root@zbx-proxy yum.repos.d]#sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
- [root@zbx-proxy yum.repos.d]#yum install -y zabbix-proxy-mysql zabbix-get
- [root@zbx-proxy yum.repos.d]#yum install -y mariadb-server mariadb
- [root@zbx-proxy yum.repos.d]#systemctl enable --now mariadb.service
- Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
- [root@zbx-proxy yum.repos.d]#mysql_secure_installation
- #初始化数据库并设置密码 此处设置为123456
-
-
-
- MariaDB [(none)]> CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
- Query OK, 1 row affected (0.00 sec)
-
- MariaDB [(none)]> GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
- Query OK, 0 rows affected (0.00 sec)
-
- MariaDB [(none)]> flush privileges;
- Query OK, 0 rows affected (0.00 sec)
-
- #添加数据库用户,以及 zabbix 所需的数据库信息
- [root@zbx-proxy yum.repos.d]#rpm -ql zabbix-proxy-mysql
- /etc/logrotate.d/zabbix-proxy
- /etc/zabbix/zabbix_proxy.conf
- /usr/lib/systemd/system/zabbix-proxy.service
- /usr/lib/tmpfiles.d/zabbix-proxy.conf
- /usr/lib/zabbix/externalscripts
- /usr/sbin/zabbix_proxy_mysql
- /usr/share/doc/zabbix-proxy-mysql-5.0.42
- /usr/share/doc/zabbix-proxy-mysql-5.0.42/AUTHORS
- /usr/share/doc/zabbix-proxy-mysql-5.0.42/COPYING
- /usr/share/doc/zabbix-proxy-mysql-5.0.42/ChangeLog
- /usr/share/doc/zabbix-proxy-mysql-5.0.42/NEWS
- /usr/share/doc/zabbix-proxy-mysql-5.0.42/README
- /usr/share/doc/zabbix-proxy-mysql-5.0.42/schema.sql.gz
- /usr/share/man/man8/zabbix_proxy.8.gz
- /var/log/zabbix
- /var/run/zabbix
- [root@zbx-proxy yum.repos.d]#zcat /usr/share/doc/zabbix-proxy-mysql-5.0.42/schema.sql.gz|mysql -uroot -p123456 zabbix_proxy
- #导入数据库信息
-
- [root@zbx-proxy yum.repos.d]#vim /etc/zabbix/zabbix_proxy.conf
- [root@zbx-proxy yum.repos.d]#sed -n 30p /etc/zabbix/zabbix_proxy.conf
- Server=192.168.241.11
- #指定 zabbix 服务端的 IP 地址
- Hostname=zbx-proxy
- [root@zbx-proxy yum.repos.d]#sed -n 49p /etc/zabbix/zabbix_proxy.conf
- Hostname=zbx-proxy
- #指定当前 zabbix 代理服务器的主机名
- [root@zbx-proxy yum.repos.d]#sed -n 196p /etc/zabbix/zabbix_proxy.conf
- DBPassword=123456
- #指定当前数据库 zabbix 用户的密码
- [root@zbx-proxy yum.repos.d]#systemctl restart zabbix-proxy.service
- vim /etc/hosts
- 192.168.10.22 zbx-server
- 192.168.10.21 zbx-agent01
- 192.168.10.13 zbx-proxy





- [root@zbk-agent zabbix]#vim /etc/zabbix/zabbix_agent2.conf
- [root@zbk-agent zabbix]#sed -n 80p /etc/zabbix/zabbix_agent2.conf
- Server=192.168.241.23
- #指定 zabbix 代理服务器的 IP 地址
- [root@zbk-agent zabbix]#sed -n 125p /etc/zabbix/zabbix_agent2.conf
- ServerActive=192.168.241.23
- #指定 zabbix 代理服务器的 IP 地址




- [root@zbk-agent zabbix]#systemctl restart zabbix-agent2.service
-
- [root@zbx-proxy yum.repos.d]#systemctl restart zabbix-proxy.service
SNMP,简单网络管理协议
[root@zbx-server ~]#yum install -y net-snmp net-snmp-utils
- [root@zbx-server ~]#vim /etc/snmp/snmpd.conf
- [root@zbx-server ~]#sed -n 57p /etc/snmp/snmpd.conf
- view systemview included .1
- #查看这台机器的所有状态
- [root@zbx-server ~]#systemctl start snmpd
- [root@zbx-server ~]#snmpwalk -v 2c -c public 127.0.0.1 sysname
- SNMPv2-MIB::sysName.0 = STRING: zbx-server



