10 性能调优
这是一个正在进行的工作.
概述
使Zabbix系统正确调整以获得最佳性能是非常重要的。
硬件
关于硬件的一般建议:
使用最快的处理器
SCSI或者SAS都是比IDE和SATA更好的选择 (使用实用程序hdparm可以显着提高IDE磁盘的性能)
15K RPM优于10K RPM,优于7200RPM
使用快速RAID存储
使用快速以太网适配器
拥有更多的内存总是更好
操作系统
使用最新(stable!)版本的操作系统
从内核中排除不必要的功能
调整内核参数
Zabbix配置参数
可以调整许多参数以获得最佳性能。
zabbix_server
StartPollers
一般规则 -保持此参数的值尽可能低。 zabbix_server的每个附加实例都会添加已知的开销, 同时,并行性增加。当队列平均包含最小参数数量(理想情况下,在任何给定时刻为0)时,实现最佳实例数。可以通过使用内部检查zabbix [queue]来监视此值。
参见"See also" 以了解如何配置zabbix进程的最佳数量.
DebugLevel
最佳值为3.
DBSocket
仅限MySQL. 建议使用DBSocket连接数据库。 那是最快和最安全的方式。
数据库引擎
这可能是Zabbix调优中最重要的部分。 Zabbix在很大程度上取决于数据库引擎的可用性和性能。
使用最快的数据库引擎,即MySQL或PostgreSQL
从源重建MySQL或PostgreSQL以获得最大的性能
遵循从MySQL或PostgreSQL文档获取的性能调优说明
对于MySQL,使用InnoDB表结构
如果使用InnoDB,ZABBIX的运行速度至少要快1.5倍(与MyISAM相比). 这是因为并行性增加。 但是,InnoDB需要更多的CPU电源。
强烈建议调整数据库服务器以获得最佳性能。
将数据库表保留在不同的硬盘上
“历史”,“历史记录”,“项目”,“触发器”和“趋势”是使用最多的表格。
对于大型安装,建议在tmpfs中保留MySQL临时文件
一般建议
仅监控所需参数
调整所有项目的“更新间隔”。 保持较小的更新间隔对于漂亮的图形可能是好的,但是这可能会超载Zabbix
调整默认模板的参数
调整管理参数
不监视返回相同信息的参数。
避免使用长期给出的触发器作为函数参数。 例如,max(3600)的计算速度明显比max(60)慢。
使用“ps”和“top”查看Zabbix进程性能
由于Zabbix 2.2进程更改其命令行以显示当前活动和有意义的统计信息,如:
- UID PID PPID C STIME TTY TIME CMD
- zabbix22 4584 1 0 14:55 ? 00:00:00 zabbix_server -c /home/zabbix22/zabbix_server.conf
- zabbix22 4587 4584 0 14:55 ? 00:00:00 zabbix_server: configuration syncer [synced configuration in 0.041169 sec, idle 60 sec]
- zabbix22 4588 4584 0 14:55 ? 00:00:00 zabbix_server: db watchdog [synced alerts config in 0.018748 sec, idle 60 sec]
- zabbix22 4608 4584 0 14:55 ? 00:00:00 zabbix_server: timer #1 [processed 3 triggers, 0 events in 0.007867 sec, 0 maint.periods in 0.005677 sec, idle 30 sec]
- zabbix22 4609 4584 0 14:55 ? 00:00:00 zabbix_server: timer #2 [processed 2 triggers, 0 events in 0.004209 sec, idle 30 sec]
- zabbix22 4637 4584 0 14:55 ? 00:00:01 zabbix_server: history syncer #4 [synced 35 items in 0.166198 sec, idle 5 sec]
- zabbix22 4657 4584 0 14:55 ? 00:00:00 zabbix_server: vmware collector #1 [updated 0, removed 0 VMware services in 0.000004 sec, idle 5 sec]
- zabbix22 4670 1 0 14:55 ? 00:00:00 zabbix_proxy -c /home/zabbix22/zabbix_proxy.conf
- zabbix22 4673 4670 0 14:55 ? 00:00:00 zabbix_proxy: configuration syncer [synced config 15251 bytes in 0.111861 sec, idle 60 sec]
- zabbix22 4674 4670 0 14:55 ? 00:00:00 zabbix_proxy: heartbeat sender [sending heartbeat message success in 0.013643 sec, idle 30 sec]
- zabbix22 4688 4670 0 14:55 ? 00:00:00 zabbix_proxy: icmp pinger #1 [got 1 values in 1.811128 sec, idle 5 sec]
- zabbix22 4690 4670 0 14:55 ? 00:00:00 zabbix_proxy: housekeeper [deleted 9870 records in 0.233491 sec, idle 3599 sec]
- zabbix22 4701 4670 0 14:55 ? 00:00:08 zabbix_proxy: http poller #2 [got 1 values in 0.024105 sec, idle 1 sec]
- zabbix22 4707 4670 0 14:55 ? 00:00:00 zabbix_proxy: history syncer #4 [synced 22 items in 0.008565 sec, idle 5 sec]
- zabbix22 4738 1 0 14:55 ? 00:00:00 zabbix_agentd -c /home/zabbix22/zabbix_agentd.conf
- zabbix22 4739 4738 0 14:55 ? 00:00:00 zabbix_agentd: collector [idle 1 sec]
- zabbix22 4740 4738 0 14:55 ? 00:00:00 zabbix_agentd: listener #1 [waiting for connection]
- zabbix22 4741 4738 0 14:55 ? 00:00:00 zabbix_agentd: listener #2 [processing request]
主要的过程是一个例外。 而不是当前的活动,显示原始的命令行。 这有助于区分具有多个Zabbix实例的系统上的进程。
Microsoft Windows不能实现此功能。
如果日志级别设置为 DebugLevel = 4 这些活动和统计信息也被写入日志文件。
Linux
在Linux系统上,“ps”命令可以与“watch”命令一起使用,以观察Zabbix的工作。例如,要每秒运行“ps”命令5次以查看进程活动:
- watch -n 0.2 ps -fu zabbix
仅显示Zabbix代理和代理进程:
- watch -tn 0.2 'ps -f -C zabbix_proxy -C zabbix_agentd'
仅显示历史记录进程:
- watch -tn 0.2 'ps -fC zabbix_server | grep history'
“ps”命令产生一个宽输出(大约190列),因为一些活动消息很长。 如果您的终端有少于190列文本,您可以尝试
- watch -tn 0.2 'ps -o cmd -C zabbix_server -C zabbix_proxy -C zabbix_agentd'
仅显示没有UID,PID,开始时间等的命令行
top
命令也可用于观察Zabbix的性能。在top
中按'c'键显示其命令行的进程。在我们对Linux“top”和“atop”的测试中,正确显示了Zabbix进程的变化活动,但是“htop”不显示不断变化的活动。
BSD systems
如果没有安装watch
命令, 可以实现类似的效果
- while [ 1 ]; do ps x; sleep 0.2; clear; done
AIX, HP-UX
如果“watch”命令不可用,可以尝试
- while [ 1 ]; do ps -fu zabbix; sleep 1; clear; done
Solaris
默认情况下,“ps”命令不显示更改的活动. 一个选项是使用/ usr / ucb / ps
。 如果未安装“watch”命令,则可以显示一个周期性更新的进程列表
- while [ 1 ]; do /usr/ucb/ps gxww; sleep 1; clear; done
On Solaris 11:
“/ usr / ucb / ps”默认情况下未安装。 Y你可能需要安装 ucb package,例如.
pkg install compatibility/ucb
,如果Zabbix守护进程已由特权用户启动,则其活动不会显示给非特权用户。
sleep
命令不仅接受整秒钟,而且接受第二秒的分数(例如“睡眠0.2”)。