查看原文
其他

Zabbix 系统到底应该怎样优化?

twt社区 twt企业IT社区 2024-02-18

【作者】李承轩,系统监控专家



前言

从本质上来说,Zabbix系统它也与其它的被监控的系统一样,也是一种应用系统。所以,它的状态、性能数据也需要被采集与监控。以便对它的运行性能、状态情况进行了解,进而在必要的时候对它进行性能调优或进行必要的系统硬件升级,甚至对它的架构进行更换。例如,一般组织,随着组织业务的不断拓展和实际发展的需要,被监控设备和被监控项目的数量会快带的增长。而这种增长达到一定的程度以后,原来采用的单台独立服务器模式的Zabbix系统就很难满足组织的需要,这个时候我们可能就需要及时的将单台独立服务器运行模式更换为分布式模式进行运行。

实际上,当我们决定是否要对现有的Zabbix系统进行硬件升级、系统性能优化甚至更换独立服务器模式为分布式服务器模式时,就需要面临依据的问题。即在我们决定进行上述升级时,我们就需要有数据依据。

Zabbix系统内部数据采集方法就是采集和监控Zabbix系统自身状态和性能数据的方法。Zabbix系统内部数据采集方法是由Zabbix服务器端通过计算获取的,所以这种数据采集方法不需要安装任何的客户端。

Zabbix系统到底该如何优化,我大致总结了以下优化内容:

  • 自定义监控模板;

  • 调优数据库以获得最佳性能;

  • 调优Zabbix Server配置;

  • 根据硬件的规格设置合理的HouseKeeper;

  • 使用最新的,并且稳定的版本;

  • 对Zabbix数据库进行表分区;

  • 优化Zabbix的架构。


Zabbix架构

在讲Zabbix优化之前,先来看看Zabbix Server 的逻辑架构图:

对于上图中,架构组件的描述:

Zabbix进程:

- Self-Monitoring:用于收集Zabbix系统内部的监控信息;

- Configuration syncer:用于将配置文件中的配置信息同步到内存中缓存;

- Timer:用于处理触发器中与时间相关的函数和维护模式的进程;

- History syncer:用于写历史数据表的进程;

- Escalator:用于处理Action中的步骤的进程;

- Housekeeper:用于清理过期的历史数据的进程;

- Db watchdog:用于监视Zabbix系统的数据库状态,当数据库状态变为不可用时,发送警告信息(服务器代理端不支持这类型进程)。

Zabbix Poller:

- Poller:用于普通的被动监控项目的轮询;

- ICMP pinger:用于定期的进行ICMP PING检查;

- IPMI poller:用于定期进行IPMI监控项目的检查;

- Unreachable poller:用于轮询不可达的设备;

- Proxy poller:用于服务器代理的被动轮询;

- Trapper:用于处理主动采集、陷入以及分布式节点间或服务器代理的通信;

- Java poller:用于轮询Java监控项目;

- Http poller:用于轮询Web类的监控项目;

- Snmp trapper:用于轮询Snmp/trap类的监控项目;

- Discovery:用于自动发现设备的进程;

- Vmware Collector:负责从VMware服务进程中收集数据(服务器代理端不支持这种类型的进程);

- Alerter:用于发送报警通知进程。


优化内容

本次优化不包含Zabbix系统的数据库表分区,这块内容会在后续文章中提到。

优化Zabbix架构

常用的架构:(说明:Zabbix最简单的架构,常用于监控主机比较少的情况下。) :

分布式架构:Server-Proxy-Agentd模式。

说明:Zabbix分布式架构,常用于监控主机比较多的情况下,使用Zabbix Proxy进行分布式监控,有效的减轻了Zabbix Server端的压力。

Zabbix Server/Zabbix Proxy配置优化

调整配置文件:Zabbix_Server.conf

Zabbix进程参数调整:

StartPollers=80StartPingers=10StartPollersUnreachable=80StartIPMIPollers=10StartTrappers=20StartDBSyncers=8

值得注意的是,当Zabbix的Pollers数量过多时(超过limit默认值1024),需要对系统的limit的参数大小进行修改。

shell> vi /etc/security/limit.conf* hard nofile 65536* soft nofile 65536* hard nproc 65536* soft nproc 65536

Zabbix In-Memory Cache参数优化(以下值仅做参考):

ValueCacheSize=256MHistoryIndexCacheSize = 64MTrendCacheSize=64MHistoryCacheSize=128MCacheSize=128MVMwareCacheSize=64M

优化Zabbix的数据库(MySQL)

调整MySQL配置文件:my.cnf或my.ini,在[mysqld]酌情修改参数:

[client]port = 3306socket = /var/lib/mysql/mysql.sock
[mysql]prompt="\u@mysqldb \R:\m:\s [\d]> "no-auto-rehash
[mysqld]user= mysqlport = 3306datadir = /data/mysql/socket = /var/lib/mysql/mysql.sock pid-file = mysqldb.pidcharacter-set-server = utf8mb4skip_name_resolve = 1
# Timestampexplicit_defaults_for_timestamp = 1
# Connectionsback_log = 1024max_connections = 512max_connect_errors = 5120innodb_thread_concurrency = 16
# Limit open_files_limit = 65535innodb_open_files = 65535
# Query Cachequery_cache_type = 0query_cache_size = 0
# binary logsserver-id = 3306001binlog_format = rowlog-bin = /data/mysql/mysql-binlogexpire_logs_days = 7sync_binlog = 1max_binlog_size = 1Gbinlog_cache_size = 4mmax_binlog_cache_size = 1G
# slow query slow_query_log = 1long_query_time = 2slow_query_log_file = /data/mysql/slow.log
# Timeoutinteractive_timeout = 600wait_timeout = 600
# Enginedefault-storage-engine = innodb
# Bufferkey_buffer_size = 32Mread_buffer_size = 1Msort_buffer_size = 1Mread_rnd_buffer_size = 1Mtmp_table_size = 32M
join_buffer_size = 16Mmax_heap_table_size = 32Mmax_tmp_tables = 48thread_cache_size = 32

# Timelog_timestamps = SYSTEM
# Tablespace & File I/Oinnodb_data_file_path = ibdata1:1G:autoextendinnodb_file_per_table = 1
# Redo Loginnodb_flush_log_at_trx_commit = 1innodb_log_file_size = 256Minnodb_log_files_in_group = 2innodb_log_buffer_size = 16M
# Innodbinnodb_buffer_pool_size = 8Ginnodb_buffer_pool_instances = 8 innodb_flush_method = O_DIRECTinnodb_change_buffer_max_size = 50innodb_max_dirty_pages_pct = 30innodb_buffer_pool_load_at_startup = 1innodb_buffer_pool_dump_at_shutdown = 1innodb_io_capacity = 500innodb_io_capacity_max= 1000innodb_support_xa = 0innodb_rollback_on_timeout = 1

优化Zabbix监控项

优化监控项的数据采集方式,由被动方式改为主动模式(Passive mode -> Active mode),主动模式的优势:

  • 可以用户NAT到设备后面;

  • 数据缓冲;

  • 减轻服务器的负载,Poller轮询零负载;

  • 更加安全,代理端不需要监测任何端口。

  • 降低监控项的轮询时间;

  • 删除无用的监控项。

原题:Zabbix系统到底该如何优化及优化实例如有任何问题,可点击文末阅读原文,到社区原文下评论交流

觉得本文有用,请转发或点击“在看”,让更多同行看到


 资料/文章推荐:

点击阅读原文关注社区  “自动化运维”技术主题 ,将会不断更新优质资料、文章,您也可以前往提出疑难问题,与同行切磋交流。地址:http://www.talkwithtrend.com/Topic/7085


下载 twt 社区客户端 APP

与更多同行在一起

高手随时解答你的疑难问题

轻松订阅各领域技术主题

浏览下载最新文章资料


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

继续滑动看下一个

Zabbix 系统到底应该怎样优化?

twt社区 twt企业IT社区
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存