概述

    在使用过程中,正确的调整Zabbix系统,使之保持高性能是非常重要的。

    硬件

    关于硬件的一般建议:

    • 使用最快的处理器

    • 15K RPM优于10K RPM,优于7200RPM

    • 使用快速RAID存储

    • 使用快速以太网适配器

    • 内存总是越多越好

    操作系统

    • 使用最新(稳定版!)版本的操作系统

    • 从内核中排除不必要的功能

    • 调整内核参数

    Zabbix配置参数

    可以调整许多参数以获得最佳性能。

    zabbix_server

    StartPollers

    一般规则 - 保持此参数的值尽可能低。 zabbix_server的每个附加实例都会添加已知的开销, 同时, 并行性增加。当队列平均包含最小参数数量(理想情况下,在任何给定时刻为0)时,实现最佳实例数。可以通过使用内部检查zabbix [queue]来监视此值。

    参见 “See also” 以了解如何配置zabbix进程的最佳数量。

    DebugLevel

    最佳值为3。

    DBSocket

    数据库引擎

    这可能是Zabbix调优中最重要的部分。 Zabbix在很大程度上取决于数据库引擎的可用性和性能。

    • 使用最快的数据库引擎, 即MySQL或PostgreSQL

    • 使用稳定版本的数据库引擎

    • 从源重建MySQL或PostgreSQL以获得最大的性能

    • 遵循从MySQL或PostgreSQL文档获取的性能调优说明

    • 对于MySQL,使用InnoDB表结构

    • 如果使用InnoDB,ZABBIX的运行速度至少要快1.5倍(与MyISAM相比). 这是因为并行性增加。但是,InnoDB需要更多的CPU性能。

    • 强烈建议调整数据库服务器以获得最佳性能。

    • 将数据库表保留在不同的硬盘上

    • 对于大型安装,建议在tmpfs中保留MySQL临时文件:

      • MySQL >= 5.5: not recommended ()

      • MySQL < 5.5: recommended

    GUI调试

    与前端性能相关的问题可以使用前端诊断功能 debug mode.

    一般建议

    • 仅监控所需参数

    • 调整所有项目的“更新间隔”。 保持较小的更新间隔对于漂亮的图形可能是好的,但是这可能会超载Zabbix

    • 调整默认模板的参数

    • 调整housekeeping参数

    • 避免使用长期给出的触发器作为函数参数。 例如,max(3600)的计算速度明显比max(60)慢。

    使用“ps”和“top”查看Zabbix进程性能

    由于Zabbix 2.2进程更改其命令行以显示当前活动和有意义的统计信息,如::

    主要的过程是一个例外。 而不是当前的活动,显示原始的命令行 这有助于区分具有多个Zabbix实例的系统上的进程。

    Microsoft Windows不能实现此功能。

    如果日志级别设置为 DebugLevel=4 这些活动和统计信息也被写入日志文件。

    Linux

    在Linux系统上 命令可以与 watch 命令一起使用,以观察Zabbix的工作。 例如,要每秒运行 ps 命令5次以查看进程活动:

    1. watch -n 0.2 ps -fu zabbix

    仅显示Zabbix代理和代理进程:

    仅显示历史记录进程:

    1. watch -tn 0.2 'ps -fC zabbix_server | grep history'

    “ps”命令产生一个宽输出(大约190列),因为一些活动消息很长。 如果您的终端有少于190列文本,您可以尝试

    仅显示没有UID,PID,开始时间等的命令行。

    top 命令也可用于观察Zabbix的性能。 在top中按’c’键显示其命令行的进程。 在我们对Linux 和 atop的测试中,正确显示了Zabbix进程的变化活动, 但是 htop 不显示不断变化的活动。

    BSD systems

    如果没有安装 watch 命令, 可以实现类似的效果

    1. while [ 1 ]; do ps x; sleep 0.2; clear; done
    AIX, HP-UX

    如果 watch 命令不可用,可以尝试

    Solaris

    默认情况下,ps 命令不显示更改的活动。 另外一种选择是使用 替代。 如果 watch 命令没有安装,则可以显示一个周期性更新的进程列表

    1. while [ 1 ]; do /usr/ucb/ps gxww; sleep 1; clear; done

    On Solaris 11:

    • /usr/ucb/ps 默认情况下未安装. 你可能需要安装 ucb , 例如. pkg install compatibility/ucb,

    • i如果Zabbix守护进程已由特权用户启动,则其活动不会显示给非特权用户。

    See also