可查看官方文档:zabbix安装手册
zabbix部署环境:nginx 1.24.0、php 7.2、mysql 5.5
nginx
1 | # 提前准备好nginx源 |
php
1 | # 提前安装好php以及相关插件,更改用户和组 |
mariadb
1 | # 安装数据库 |
zabbix服务端
1 | # 安装zabbix的yum源 |
安装web插件
两种方式,可以根据官方手册通过yum安装;也可以使用源码包的方式安装。此处选择源码方式。
1 | # 去官网下载源码包zabbix-5.0.40.tar.gz,解压 |
部署成功
需要提前准备好zabbix源的相关rpm包
1 | rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm |
配置
当需要监控的设备是Linux主机时,客户端需要安装zabbix-agent2程序。以往zabbix的客户端是C语言开发的zabbix agent,以独立进程方式运行,后来在C语言的基础上增加了Go语言的部分,并且引入了多线程技术,能够承受更高的并发,减少CPU资源消耗,称为zabbix agent2。
1 | # 按照zabbix客户端 |
调试
为了确认zabbix服务端与客户端之间能够正常连通,一般服务端需要安装调试工具zabbix-get
1 | # 安装调试工具 |
通常来说,我们无法在路由器、交换机这种网络设备上安装agent,但是这些硬件都支持SNMP(simple network management protocol)协议,被译为简单网络管理协议,Zabbix可以通过SNMP协议与被监控对象进行通信。
配置
需要登录网络设备的后台管理应用
启用SNMP功能
选择SNMP版本
SNMP版本 | 简介 |
---|---|
v1 | 很少用 |
v2c | 通过团体名 访问snmp信息,需要设置团体名。 |
v3 | 通过用户名和密码访问snmp信息,需要设置用户和用户组。 |
配置团体名及权限(针对v2c版本)
调试
为了确认zabbix服务端与网络设备之间能够正常连通,一般服务端需要安装调试工具net-snmp-utils
1 | # 安装调试工具 |
JMX(java management extensions),即java管理扩展。通常来说,java程序都是运行在JVM虚拟机中的,我们只能监控虚拟机的外部信息,而Zabbix可以通过JMX接口监控JVM虚拟机内部的java程序状态。
配置
确认Java环境
1 | java -version # 确认jdk版本 |
开启tomcat远程监控功能
1 | vim /app/tomcat/bin/catalina.sh # 编辑catalina.sh脚本,添加以下内容 |
服务端配置
1 | yum install -y zabbix-java-gateway # 安装zabbix-java-gateway客户端 |
调试
首先需要下载一个调试工具,是一个jar包:下载地址
1 | # 如果没有配置java环境变量,需要在jar包所在目录执行下面的命令:`java -jar [jar包名称] - [客户端IP:端口]` |
注意
使用JMX的接口监控Java程序的好处是简便,但是可能会给服务端带来较大的压力。
另外也可以使用客户端主机的方式监控Java程序,上面说过客户端主机的方式无法获取JVM内部Java程序的状态,所以要通过在客户端安装jmap
和jstat
等工具获取Java状态,然后自定义监控项,获取Java程序的状态,这样的方式比较灵活。
1 | # 具体思路:编写脚本,输入脚本参数进程名称(比如tomcat8080或者Java项目目录),找出进程pid,然后根据进程pid使用jmap等命令(比如jmap -heap)导出jvm内部的情况,然后对内容进行过滤,得到指定的信息。 |
监控物理服务器,通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
方式1 是添加IPMI主机
方式2 是添加客户端主机,使用自定义监控的方式,通过ipmitool
和megacli
等工具获取监控项的数据
服务端
1 | |root@m01 ~|$ grep '^[a-Z]' /etc/zabbix/zabbix_server.conf |
客户端
1 | [root@web01 ~]$ grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf |
初始账号Admin,初始密码zabbix,成功登录。
添加用户群组
添加一个用户
添加一个主机群组
添加一台客户端主机
进入zabbix监控的web界面,点击侧边栏的配置>主机,右上角创建主机,进入创建主机页面。
输入主机名称(需要与客户端Hostname相同),定义群组(一台主机可属于多个群组),输入客户端IP和端口,连接到IP。
点击菜单栏中的模板,在链接新模板中选择一个合适的模板,点击添加。
在主机界面的主机列表中,看到刚刚添加的主机的可用性ZBX选项变为绿色即可。回到监测界面的仪表盘,稍后刷新可看到主机数量增加。
添加一台网络设备
进入zabbix监控的web界面,点击侧边栏的配置>主机,右上角创建主机,进入创建主机页面。
输入主机名称,定义群组(一台主机可属于多个群组),接口处选择添加,选择SNMP类型,输入网络设备IP和端口(默认是161),选择SNMP版本(此处选择v2版本),团体名处需填写一个自定义的变量名,然后移除原有的客户端类型。
点击菜单栏中的宏,宏处填写刚刚定义的变量名,值处填写网络设备的团体名。
点击菜单栏中的模板,在链接新模板中选择一个合适的模板,点击添加即可。
在主机界面的主机列表中,看到刚刚添加的主机的可用性SNMP选项变为绿色即可。回到监测界面的仪表盘,稍后刷新可看到主机数量增加。
添加JMX设备
进入zabbix监控的web界面,点击侧边栏的配置>主机,右上角创建主机,进入创建主机页面。
输入主机名称,定义群组(一台主机可属于多个群组),接口处选择添加,选择JMX类型,输入网络设备IP和端口(默认是12345)。
点击菜单栏中的模板,在链接新模板中选择合适的模板,点击添加即可。
在主机界面的主机列表中,看到刚刚添加的主机的可用性JMX选项变为绿色即可。回到监测界面的仪表盘,稍后刷新可看到主机数量增加。
解决图形界面的中文乱码问题
侧边栏,监测>最新数据,选择一个监控项的图形界面,可能会出现下面的乱码,这是由于zabbix的字体在Windows设备上无法正常显示导致的。
解决办法:
1 | # 这是zabbix下的字体文件 |
提升zabbix服务端的性能,最有效的方式是从硬件方面解决,使用最快的处理器、更大的内存、更高速的磁盘、更快的网卡等。
富则火力覆盖,穷则战术穿插,在受限于成本的情况下就要从软件方面解决,调节zabbix服务端的参数来获得最佳的性能。
Zabbix中的缓存,用于zabbix服务端存储从客户端获得的各类数据(历史数据、趋势数据等)
参数介绍
1 | # 查看zabbix配置文件中关于缓存的参数 |
调整方式
在web页面找到zabbix服务端对的监控图形,找到Zabbix cache usage的图形数据
观察各项缓存指标是否正常,若不正常则调整配置文件的相应参数到合适的水平
考虑到硬件中内存是有限的,设置过大的缓存可能会影响到操作系统整体的性能
Zabbix中的进程数,用于zabbix服务端从不同客户端获得数据
参数介绍
1 | |root@m01 zabbix|$ grep Poller zabbix_server.conf |
调整方式
在web页面找到zabbix服务端对的监控图形,找到Zabbix data gathering process busy的图形数据
观察各项进程指标是否正常,若不正常则调整配置文件的相应参数到合适的水平
设置太多的进程数可能会耗尽进程的文件描述符数量限制,导致服务端挂掉
数据库
zabbix是一个读少写多的业务类型,所以要适当优化数据库的写入性能
建议使用InnoDB存储引擎或tokuDB存储引擎,适当采取数据库分离或者拆分策略
监控项
增加更新间隔时间:5m或10m
使用自定义模板:精简监控项
减少历史数据保留时长,增加趋势数据的保留时长。(仅影响磁盘空间的占用)
触发器
尽量使用.last()
、.diff()
、.nodata()
,避免使用计算型的.max()
、.min()
、.avg()
客户端
使用主动模式