Zabbix性能低下的表现:(等待队列越多,server性能越差)
Zabbix队列中有太多被延迟的Item,通过菜单项查看:Administration->Queue查看
Zabbix绘图中经常出现断图,一些Item没有数据
前端页面无响应,或者相应很慢
解决方案:
不要使用默认的模板,应该定制自己的模板
数据库调优
架构优化,如使用分布式,各服务器功能独立(三个架构)
Items,trigger调优,更换更好的硬件
Zabbix中的item默认工作是被动模式,可以通过设置主动模式来提高server的性能。
zabbix 由以下几个组件部分构成:
agent端:主机通过安装agent方式采集数据。(Admin zabbix)
server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+nginx在web前端展示.
Proxy端:常用于分布监控环境中,代理Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)
Database Storage:专用于存储所有配置信息,以及由 zabbix 收集的数据;
Web interface:zabbix 的 GUI 接口,通常与 Server 运行在同一台主机上;
Zabbix监控原理:
Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。
Zabbix监控客户端分为主动监控与被动监控
Zabbix主动模式:Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy。
zabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active items数据至server/proxy。在主动模式下,zabbix-agent收集监控信息并通过10050端口主动将数据传给zabbix-server所在服务器的10051端口。
Zabbix被动模式:Server向agent请求获取监控项的数据,agent返回数据。
zabbix的三种监控架构
1、server-client架构
zabbix的最简单的架构,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。
2、server-proxy-client架构
其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。适用于跨机房、跨网络的中型架构的监控。
3、master-node-client架构
每个node同时也是一个server端,下面可以接proxy,client 。node有自已的配置文件和数据库,主要任务是将配置信息和监控数据向master同步,适用于跨网络、跨机房、设备较多的大型环境 。
Zabbix监控方式
通过Zabbix被监控设备代理(agent)采集数据
在被监控设置安装并运行zabbix被监控设备代理进程,通过该进程收集监控项目的数据,并与Zabbix服务器或 Proxy通信,主动发送或被动接受服务器或服务器代理查询的数据采集方式。
通过SNMP协议采集数据:
SNMP协议其目的是简化大型网络中设备的管理和数据的获取。即通过SNMP的查询和陷入进行监控数据的采集。适合对网络设备,如防火墙、交换机、路由器等的监控数据的采集。
服务器一旦部署SNMPAgent,任何能实现SNMP协议的软件都可以对其进行监测。
简单易懂,部署的开销成本也小。缺点是,其通信协议走的UDP协议,传输为不可靠传输,所以存在丢数据的现象。
通过脚本采集数据
由Zabbix服务器端进程根据配置信息,按计划地执行指定的脚本程序或命令,然后俘获脚本程序或命令的输出内容为对应监控项目的值。
IPMI:智能平台管理接口(Intelligent Platform Management Interface,IPMI)即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控。
五个程序的功能如下:
zabbix server:zabbix服务端守护进程,其中zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy的数据最终都提交给zabbix server;
zabbix agentd:客户端守护进程,负责收集客户端数据,例如:收集cpu负载、内存、硬盘使用情况等;
zabbix proxy:zabbix分布式代理守护进程,通过大于500台主机,需要进行分布式监控架构部署;
zabbix get:zabbix数据接收工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令;通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。
zabbix sender:zabbix数据发送工具,用户发送数据给server或proxy端,通常用户耗时比较长的检查。
Zabbix监控系统包括很多监控概念,如下:
主机(host):被监控的网络设备,可以写IP或者DNS;
主机组(host group):主机组用于管理主机,可以批量设置权限;
监控项(item):具体监控项,一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,item由key+参数组成
触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
事件(event):例如达到某个触发器,称之为一个事件;
动作(action):对于特定事件事先定义的处理方法,默认可以发送信息及发送命令;
报警升级(escalation):发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等。
媒介(media):发送通知的方式,可以支持Mail、SMS、Scripts等;
通知(notification):通过设置的媒介向用户发送的有关某事件的信息;
远程命令: 预定义的命令,可在被监控主机处于某特定条件下时自动执行;
模板(template): 可以快速监控被监控端,模块包含:item、trigger、graph、screen、application;
web场景(web scennario):用于检测web站点可用性的一个活多个HTTP请求;
web前端(frontend): Zabbix的web接口;
图形(graph) 监控图像;
安装zabbix
1. 下载安装zabbix的YUM源
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
2. 安装Zabbix
[root@lnmp ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-get zabbix-agent zabbix-web
3. 安装之后进入MySQL数据库,创建Zabbix数据库
[root@lnmp ~]# mysql -p
导入zabbix数据库
[root@lnmp ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.15/
[root@lnmp zabbix-server-mysql-3.4.15]# zcat create.sql.gz | mysql -u zabbix -p zabbix
修改php配置文件的时区(在zabbix配置界面时需要)
vim /usr/local/lnmp/php/etc/php.ini
编辑zabbix_srever配置文件,修改数据库名、密码、套接字
vim /etc/zabbix/zabbix_server.conf
DBUser=zabbix
DBPassword=westos
DBSocket=/usr/local/lnmp/mysql/data/mysql.sock
vim /etc/httpd/conf.d/zabbix.conf #更改时区
cp -r /usr/share/zabbix/ /usr/local/lnmp/nginx/html/
[root@lnmp ~]# systemctl start zabbix-server
[root@lnmp ~]# systemctl enable zabbix-server.service
cp -r /usr/share/zabbix/ /usr/local/lnmp/nginx/html/
chown -R zabbix:zabbix /etc/zabbix/
chown -R zabbix:zabbix /usr/lib/zabbix/
chmod -R 755 /etc/zabbix/web/
chmod -R 777 /var/lib/php/session/
chown -R zabbix:zabbix /usr/local/lnmp/nginx/
systemctl start zabbix-agent
systemctl enable zabbix-agent
安装扩展bamatch
cd /root/php-5.6.38/ext/bcmath
> phpize
> ./configure --with-php-config=/usr/local/lnmp/php/bin/php-config
> make
> make install
vim /usr/local/lnmp/php/etc/php.ini
always_populate_raw_post_data = -1
post_max_size = 16M
max_input_time = 300
extension=bcmath.so
/etc/init.d/php-fpm restart
Mysql.sock写错导致zabbix-server不能重启
在这个过程中编译时没有安装php-bcmath
[root@lnmp ext]# cd /root/php-5.6.38/ext/gettext
[root@lnmp gettext]# phpize
[root@lnmpgettext]#./configure --with-php-config=/usr/local/lnmp/php/bin/php-config
[root@lnmp gettext]# make && make install
vim /usr/local/lnmp/php/etc/php.ini
extension=gettext.so
/etc/init.d/php-fpm restart