介绍
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
功能组件
Server :
Zabbix server是zabbix软件的核心组件
Zabbix agent向其报告可用性、系统完整性和统计信息
Zabbix server存储所有的配置信息、统计信息和操作信息的核心存储库
Zabbix server是监控系统的告警中心。在监控的系统中出现的任何异常,将发出通知给管理员
基本的Zabbix server可拆解为三个不同组件:Zabbix server、Web前端和数据库。
Zabbix的所有配置信息都存储在Server和Web前端进行交互的数据库中。例如,当你通过Web前
端(或者API)新增一-个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server以
每分钟一-次的频率查询监控项表中的有效项,接着将它存储在Zabbix server中的缓存里。这就是
为什么Zabbix前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。
数据库:
所有配置信息以及zabbix采集到的数据都被持久存储到数据库中,可支持MySQL、PostgreSQL、Oracle等多种数据库
Web界面:
作为Zabbix server的一部分,用于实际显示和配置的界面;通常和Zabbix server运行在同一台物理机。
基于Apache(Nginx)+PHP实现,早期只支持LAMP结构,从zabbix5.0开始支持LNMP。
Agent:
Zabbix agent部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集到的数据发送给Zabbix server。从zabbix5.0支持Zabbix agent2
Proxy:
Zabbix proxy可代替Zabbix server采集性能和可用数据;Zabbix proxy在zabbix的部署是可选部分,Zabbix proxy的部署可很好的分担单个Zabbix server的负载
Java网关:
zabbix要监控tomcat服务器和其它java程序,需要使用Java gateway作为代理,才能从java程序中获取数据。
监控对象
源代码:*.html、*.jsp、*.php 监控网页信息是否被篡改
数据库:MySQL、Mariadb、Oracle、SQLserver
应用软件:Nginx、Apache、Tomcat 通过agent
集群:LVS、Keepalive、HAproxy、RHCS、F5
虚拟化:VMware、KVM 通过agent
操作系统:LInux、Unix、Windows性能参数
硬件:服务器、存储 通过IPMI
网络:路由器、交换机、防火墙 通过SNMP
监控收集数据模式
主动被动都是对于被监控主机而言
主动模式
agent向server发起连接。主动给server传送监控项数据
被动模式(默认)
server向agent发起连接。server向agent请求监控项数据,agent返回数据。
被监控主机数量很多时,使用主动模式可以很好的减少zabbix server负载。
环境
Zabbix版本 | OS版本 | Zabbix组件 | 数据库 | Web服务器 |
6.0 | CentOS 8 | Server、Frontend、Agent | MariaDB 10.5 | Nginx |
部署
aliyun镜像站
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
zabbix服务器(192.168.29.141 zabbix-server)
#安装zabbix存储库
[root@zabbix-server ~]#rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
[root@zabbix-server ~]#yum clean all
#安装zabbix server、web前端、agent
[root@zabbix-server ~]#yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
#安装数据库
[root@wenzi ~]#vim /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.5 RedHatEnterpriseLinux repository list - created 2023-05-31 17:34 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
# rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# baseurl = https://rpm.mariadb.org/10.5/rhel/$releasever/$basearch
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.5/rhel/$releasever/$basearch
module_hotfixes = 1
# gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
[root@zabbix-server ~]#yum -y install MariaDB-server MariaDB
[root@zabbix-server ~]#systemctl enable --now mariadb
#创建zabbix所需数据库、账号密码
[root@zabbix-server ~]#mysql -uroot
MariaDB [(none)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> create user zabbix@localhost identified by 'Admin.123';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> quit
#导入sql文件至zabbix数据库
[root@zabbix-server ~]#zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
#导入后禁用log_bin_trust_function_creators选项
[root@zabbix-server ~]#mysql -uroot
MariaDB [(none)]> set global log_bin_trust_function_creators = 0;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> quit
Bye
#修改zabbix配置文件
[root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf
...
#数据库在哪台主机
DBHost=localhost
...
#数据库名
DBName=zabbix
...
#连接数据库用户
DBUser=zabbix
...
#用户密码
DBPassword=Admin.123
...
#
[root@zabbix-server ~]#vim /etc/nginx/conf.d/zabbix.conf
server {
listen 8080;
server_name myzabbix.com;
...
#重启服务,设置开机自启
[root@zabbix-server ~]#systemctl restart zabbix-server zabbix-agent nginx php-fpm
[root@zabbix-server ~]#systemctl enable zabbix-server zabbix-agent nginx php-fpm
[root@zabbix-server ~]#netstat -tnlp
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:10050 0.0.0.0:* LISTEN 5405/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 5406/zabbix_server
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5423/nginx: master
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 5423/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 902/sshd
tcp6 0 0 :::10050 :::* LISTEN 5405/zabbix_agentd
tcp6 0 0 :::10051 :::* LISTEN 5406/zabbix_server
tcp6 0 0 :::3306 :::* LISTEN 4598/mariadbd
tcp6 0 0 :::80 :::* LISTEN 5423/nginx: master
tcp6 0 0 :::22 :::* LISTEN 902/sshd
zabbix服务端默认端口:10051 zabbix客户端默认端口:10050
测试
访问http://192.168.29.141:8080
登录账号:Admin 登录密码:zabbix
修改zabbix界面语言为中文
因为字体原因通过windows访问界面出现乱码问题
解决:
windows本地字体库路径 C:\Windows\Fonts 选中微软雅黑,将其上传至zabbix-server服务器
[root@zabbix-server ~]#cd /usr/share/zabbix/assets/fonts/
[root@zabbix-server fonts]#ls
graphfont.ttf
[root@zabbix-server fonts]#mv graphfont.ttf{,.bak}
[root@zabbix-server fonts]#ls
graphfont.ttf.bak
[root@zabbix-server fonts]#mv /root/
anaconda-ks.cfg .bash_logout .bashrc .cshrc MSYHL.TTC .mysql_history .viminfo
.bash_history .bash_profile centos8init.sh MSYHBD.TTC MSYH.TTC .tcshrc
[root@zabbix-server fonts]#mv /root/MSYHBD.TTC ./graphfont.ttf
[root@zabbix-server fonts]#ls
graphfont.ttf graphfont.ttf.bak
刷新web页面
zabbix客户端(192.168.29.142 web1)
[root@web1 ~]#rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
[root@web1 ~]#yum clean all
17 files removed
#安装zabbix客户端
[root@web1 ~]#yum -y install zabbix-agent
[root@web1 ~]#vim /etc/zabbix/zabbix_agentd.conf
...
#被动模式
#指定zabbix位置。多个IP之间用逗号, 分割
Server=192.168.29.141
...
#主动模式
ServerActive=192.168.29.141
...
#agent主机名,要和server端一致
Hostname=web1
...
#启动客户端
[root@web1 ~]#systemctl enable --now zabbix-agent.service
zabbix_get
server通过命令行方式zabbix_get获取agent监控数据
-s:指定主机名或IP
-k:指定监控项
-p:指定端口,默认10050
[root@zabbix-server ~]#yum -y install zabbix-get.x86_64
[root@zabbix-server ~]#zabbix_get -s 192.168.29.142 -k system.uname
Linux wenzi.localdomain 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64
[root@zabbix-server ~]#zabbix_get -s 192.168.29.142 -k system.cpu.load[all,avg15]
0.080000
监控apache服务
#agent安装httpd
[root@web1 ~]#systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@web1 ~]#netstat -tnlp
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 914/sshd
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 2237/zabbix_agentd
tcp6 0 0 :::80 :::* LISTEN 2776/httpd
tcp6 0 0 :::22 :::* LISTEN 914/sshd
tcp6 0 0 :::10050 :::* LISTEN 2237/zabbix_agentd
在web界面中
一、创建主机群组
配置>主机群组>创建主机群组(web界面右上角)
二、创建主机
配置>主机>创建主机
主机名称:和/etc/zabbix/zabbix_agentd.conf中Hostname的值保持一致
模板:选择>Templates>HTTP Service
群组:选择自己创建的群组web_apache
interfaces:填写Apache所在的主机IP,端口
三、监测的结果以图表显示
配置>主机>图形(web1所在行)>创建图形
四、验证
中间关闭apache服务几分钟,再启动服务,观察图形变化。1是开启;0是关闭
踩坑:
若始终看不到agent,检查server端 /etc/zabbix/zabbix-server.conf中的StatsAllowedIP是否包含agent的IP。格式 192.168.29.0/24
若添加的agent中可用性的绿色ZBX始终不亮,HTTP Service中类型从简单检查改为Zabbix 客户端,形成被动监控。
valiability一共三种颜色对应三种状态【官网解释】:
Green - available
Red - not available (upon mouseover, details of why the interface cannot be reached are displayed)
Gray - unknown or not configured
1. 如果是绿色,代表正常的,健康的;
2. 如果是红色,代表错误,移动鼠标到红色 ZBX 上,会自动提示错误信息,根据错误提示寻找原因;
3. 如果是灰色,代表Unknown
① 检查 /etc/zabbix/zabbix_agentd.conf 中的 Hostname 字段值是否与zabbix页面中的配置对应主机地方中的 Host name 的值是否一致(要一致);
② 检查是否给要监控的主机添加了监控模板或者具体的监控项(要添加);
③ 是否添加了被动监控模板或者被动监控项(需要存在被动监控);