一、简介
Zabbix系统与其它被监控系统一样,也是一种应用系统。所以它的状态、性能数据也需要被采集与监控。以便对它的运行状况、性能等情况进行掌握,进而在必要的时候对它进行性能调优或进行必要的系统硬件升级,甚至对它的架构进行更换。比如随着组织业务的不断拓展和实际发展的需要,被监控设备和被监控项目的数量会不断的增长。而这种增长达到一定的程度以后,采用单点模式的Zabbix系统就很难满足监控需求,这时我们就需要将单点模式更换为分布式模式进行运行。从实际出发,当我们决定是否要对现有的Zabbix系统进行硬件升级、系统性能优化甚至更换单点模式为分布式模式时,就需要根据实际的问题作为变更依据。当然在我们决定上述升级时,就需要有强有力的数据作为支撑。
Zabbix系统内部数据采集方法就是采集和监控Zabbix系统自身状态和性能数据。Zabbix系统内部数据采集方法是由Zabbix服务器端通过内部计算获取,无需安装任何客户端。
二、Zabbix系统优化大致分为以下几点:
- 自定义监控模板;
- 监控项采集时间优化;
- 数据库性能优化;
- Zabbix系统性能优化;
- 硬件规格性能优化;
- 使用最新的LTS并较稳定版本;
- Zabbix数据库表分区;
- Zabbix架构优化;
三、优化说明
Zabbix进程:
- Self-Monitoring:用于收集Zabbix系统内部的监控信息;
- Configuration syncer:用于将配置文件中的配置信息同步到内存中缓存;
- Timer:用于处理触发器中与时间相关的函数和维护模式的进程;
- History syncer:用于写历史数据表的进程;
- Escalator:用于处理Action中的步骤的进程;
- Housekeeper:用于清理过期的历史数据的进程;
Zabbix Poller:
- alert manager - 警报队列管理器;
- alert syncer - 警报数据库编写器;
- alerter - - 发送通知的进程;
- availability manager - 主机可用性更新进程;
- configuration syncer -管理配置数据的内存缓存进程;
- discoverer - 发现设备进程;
- escalator - 升级操作进程;
- history poller - 处理需要数据库连接的计算和内部检查进程;
- history syncer - 历史数据库编写器;
- housekeeper - 删除旧历史数据进程;
- http poller - web监控轮询器;
- icmp pinger - 用于 icmp ping 检查的轮询器;
- ipmi manager - IPMI 轮询管理器;
- ipmi poller - IPMI 检查的轮询器;
- java poller - 用于Java检查的轮询器;
- lld manager - 低级别发现任务的管理进程;
- lld worker - 低级别发现任务的工作进程;
- odbc poller - 用于 ODBC 检查的轮询器;
- poller - 用于被动检查的普通轮询器;
- preprocessing manager - 预处理任务管理器;
- preprocessing worker - 数据预处理进程;
- problem housekeeper - 消除已删除触发器问题进程;
- proxy poller - 被动代理轮询器;
- report manager- 定时报表任务管理器;
- report writer - 定时报表处理进程;
- self-monitoring - 收集内部服务器统计数据的进程;
- snmp trapper - SNMP 陷阱trapper;
- task manager - 远程执行其他组件请求的任务进程(例如关闭问题、确认问题、立即检查监控项值、远程命令功能);
- timer - 处理维护的计时器;
- trapper - 用于主动检查、陷阱、代理通信的trapper;
- unreachable poller - 不可达设备的轮询器;
- vmware collector - VMware 数据收集器,负责从 VMware 服务收集数据;
Zabbix Server表分区:
- 导入存储过程partition.sql
mysql -uzabbix -pzabbix zabbix < partition.sql
mysql -uzabbix -p zabbix -e "call partition_maintenance_all('zabbix')"
- 创建事件调度器
usezabbix;
create event zabbix_partition on schedule every1 day starts '2020-1-1 1:00:00' do CALL partition_maintenance_all('zabbix');
- 关闭Housekeeper
在Zabbix前端取消历史数据和趋势数据的"开启内部管家"勾选框
分布式架构:
Zabbix分布式架构,常用于监控主机比较多的情况下,使用Zabbix Proxy进行分布式监控,有效的减轻了Zabbix Server端的压力。
Zabbix Server/Zabbix Proxy配置优化:
Zabbix_Server.conf参数配置调整
StartPollers=20
StartPingers=5
StartPollersUnreachable=10
StartIPMIPollers=5
StartTrappers=3
StartDBSyncers=4
ValueCacheSize=256M
HistoryIndexCacheSize = 64M
TrendCacheSize=64M
HistoryCacheSize=128M
CacheSize=128M
VMwareCacheSize=64M
当Zabbix的Pollers数量过多时(超过limit默认值1024),需要对系统的limit的参数大小进行修改
vi /etc/security/limit.conf
* hard nofile 65536
* soft nofile 65536
* hard nproc 65536
* soft nproc 65536
Zabbix数据库参数:
key_buffer_size=16M
max_allowed_packet=16M
thread_stack=256K
thread_cache_size=32M
max_connections=100
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=64M
innodb_buffer_pool_size=1G
innodb_thread_concurrency=8
innodb_log_file_size=512M
根据实际情况调整优化相关参数,并不是将参数调整越大性能越好。
Zabbix监控项优化:
对监控项数据采集方式进行优化,由被动方式改为主动模式(Passive mode -> Active mode),主动模式的优势:
- 可以用户NAT到设备后面;
- 数据缓冲;
- 减轻服务器的负载,Poller轮询零负载;
- 更加安全,代理端不需要监测任何端口;
- 降低监控项的轮询时间;
- 删除无用的监控项;