Zabbix进程及其功能
1 | 报警器(alerter) 该类型的进程是用来发送报警通知的; |
配置文件解析
1 | StartTrappers=20 Trappers初始子进程数 |
Zabbix Server
配置详解: http://t.zoukankan.com/Rohn-p-14788840.html
下面是部分参数的展示
配置 | 默认值 | 推荐值 |
---|---|---|
StartDBSyncers | 4 | 8,不宜太高,默认值已能处理4000 NVPS |
StartAlerters | 3 | 6 |
StartDiscoverers | 1 | 3 |
StartPollers | 5 | 12 |
StartPreprocessors | 3 | 6 |
StartProxyPollers | 1 | 3 |
StartTrappers | 5 | 12 |
StartLLDProcessors | 2 | 3 |
StartEscalators | 1 | 1 |
CacheSize | 256M | 缓存大小, 单位为字节。 用于存储主机、监控项、触发器数据的共享内存大小。 Zabbix2.2.3以前的版本最大可配置值为2GB。 |
---|---|---|
CacheUpdateFrequency | 60 | Zabbix 配置缓存更新频率, 单位为秒 |
DebugLevel | 3 | 指定调试等级: 0 - Zabbix进程的起停基本信息 1 - 严重(Critical)信息 2 - 错误(Error)信息 3 - 警告(Warning)信息 4 - 调试(Debug)信息 (产生大量信息) 5 - 扩展调试 (产生更多信息) |
ExportFileSize | 1G | 每个导出文件的最大限制,单位为字节。仅当ExportDir参数设置后才使用,用于轮转生成导出的文件。 此参数从Zabbix 4.0.0开始支持。 |
HistoryCacheSize | 128M | 历史缓存数据大小, 单位为字节。 |
HistoryIndexCacheSize | 16M | 历史索引缓存大小, 单位为字节。缓存一个item大概需要大小为100字节的空间。 该参数从Zabbix 3.0.0开始支持。 |
HistoryStorageDateIndex | 1 | 启用历史数据预处理,可以将数据存储到不同的基于时间的索引: 0 - 禁止 1 - 允许 |
HistoryStorageURL | 你的ES URL | 历史数据存储 HTTP[S] URL,用于把历史数据存储到ElasticSearch。 这个参数参考 Elasticsearch进行配置。 |
HistoryStorageTypes | uint,dbl,str,log,text | 以逗号分隔的列表配置哪些类型的历史数据需要存储到Elasticsearch。 这个参数参考 Elasticsearch 进行配置 |
HousekeepingFrequency | 3 | Zabbix 执行 housekeeping 的频率 (单位为小时)。 housekeeping负责从数据库中删除过期的信息。注意: 为了防止 housekeeper 负载过大 (例如, 当历史和趋势周期大大减小时), 对于每一个监控项,不会在一个housekeeping周期内删除超过4倍HousekeepingFrequency 的过期数据。 因此, 如果 HousekeepingFrequency 是 1小时, 一个周期内不会删除超过4小时的过期信息 (从最旧的数据开始) 。 备注: 为降低 server压力, housekeeping将在server启动以后,延迟30分钟执行。 因此, 如果 HousekeepingFrequency 是1小时,server启动30分后执行第一次 housekeeping , 然后按1小时为周期重复执行。从Zabbix 2.4.0以后有了这种延迟行为。 从Zabbix 3.0.0开始,可以设置HousekeepingFrequency为0来禁止自动housekeeping。 此时 housekeeping 只能通过 housekeeper_execute 启动, 在一个housuekeeping周期内删除的过期信息时长为从最后一次housekeeping以来到配置周期的4倍,不少于4小时且不大于4天。 也可参见运行控制 选项。 |
LogFile | 日志文件名称。 | |
LogFileSize | 128 | 日志文件大小,单位 MB。 0 - 禁止日志文件自动回滚. 注意: 如果日志文件达到限定的大小,文件回滚失败, 不管是什么原因, 现有的日志会被截断,并重新记录日志。 |
LogType | file | 日志输出类型: file - 写入LogFile 参数指定的日志文件中, system - 写入syslog, console - 控制台输出. 从Zabbix 3.0.0开始支持该参数。 |
LogSlowQueries | 3000 | 数据库查询消耗时间,大于该时间将会记入日志 (毫秒)。 0 - 不记录慢查询日志。 DebugLevel=3时该选项可用。 从Zabbix 1.8.2开始支持该参数 |
MaxHousekeeperDelete | 5000 | 一个housekeeping周期内,一个任务删除的最大行数 (相应的表名,字段名,值)。 如果设置为0,不限制删除的行数,这种情况,你必须清楚这样做的影响! 从Zabbix 1.8.2 开始支持该参数,仅在对已经被删除的监控项进行历史和趋势数据删除操作时有效 |
ProxyConfigFrequency | 180 | Zabbix server 多少秒向Zabbix proxy 发送一次配置数据,用于被动模式的proxy 。 从Zabbix 1.8.3开始支持该参数。 |
ProxyDataFrequency | 1 | Zabbix server 多少秒向Zabbix proxy请求一次历史数据, 用于被动模式的proxy。从Zabbix 1.8.3开始支持该参数。 |
StartDBSyncers | 8 | 数据库进程的初始实例数量。 在版本1.8.5之前,上限是64。 这个参数从Zabbix 1.8.3开始得到了支持 |
StartAlerters | 12 | 报警进程的初始实例数量。 从Zabbix 3.4.0开始支持该参数 |
StartDiscoverers | 12 | 发现进程的初始实例数量。 在Zabbix 1.8.5版本之前,最大能设置为255。 |
StartEscalators | 12 | escalators进程的初始实例数量。 从Zabbix 3.0.0开始支持该参数 |
StartHTTPPollers | 6 | HTTP 轮询进程的初始实例数量. 在Zabbix 1.8.5版本之前,最大能设置为255。 |
StartIPMIPollers | 3 | IPMI 轮询进程的初始实例数量。 在Zabbix 1.8.5版本之前,最大能设置为255。 |
StartJavaPollers | 6 | Java 轮询子进程的初始实例数量。. 从Zabbix 2.0.0开始支持该参数。 |
StartLLDProcessors | 2 | Number of pre-forked instances of low-level discovery (LLD) workers1. The LLD manager process is automatically started when an LLD worker is started. This parameter is supported since Zabbix 4.2.0. |
StartPingers | 12 | ICMP pingers进程的初始实例数量1. 在Zabbix 1.8.5版本之前,最大能设置为255。 |
StartPollersUnreachable | 6 | 不可达主机 (包括IPMI 和 Java)的轮询进程的初始实例数量。1. 从Zabbix 2.4.0开始,如果IPMI或Java轮询器启动,那么至少有一个针对不可访问主机的轮询进程必须运行。 在Zabbix 1.8.5版本之前,最大能设置为255。 这个参数从Zabbix 1.8.3版本缺失。 |
StartPollers | 12 | 轮询进程的初始实例数量。.注意如果要内部,聚合,计算的监控项能正常工作,这个参数值必须非0。 |
StartPreprocessors | 12 | 预处理工作进程的初始实例数量。预处理管理进程将跟随预处理工作进程启动. 从Zabbix 3.4.0开始支持该参数。 |
数据库优化
如果数据库和zabbix在一台机器,可以使用socket连接,速度会提高。数据库zabbix来说,选择InnoDB引擎,效率是其它引擎的1.5倍
对history类型的(history、history_uint等)大表进行拆分操作,关闭housekeeper禁止自动定期清除历史记录数据,因为对于数据库特别是对于InnoDB引擎大数据删除貌似很蛋疼。
可以对数据库配置文件调优,因为都要提交到数据库中,当机器很多时,数据库压力会很大
如果还是太多,可以考虑将mysql单独一台,并设置读写分离,可以用中间件实现。
服务端配置优化
关闭服务端的housekeep
housekeep是清理历史的机制,配置文件中,默认是每小时启动一次,然后清除监控项设置之外的多余历史记录。比如mysql监控项默认保存90天,他会清除90天以外的,这会导致经常去清理,有时会报错:Zabbix housekeeper processes more than 75% busy
调整监控项
很多监控项都是无用的或者目前用不到的,像redis监控模板中的调阅/发布监控项应该去掉。
监控项的类型最好使用数字,尽量避免使用字符。字符在数据库中的存储空间使用较大,在设置trigger时也相对麻烦,并且zabbix本身处理数字的效率要相对高。如果业务需要字符类型的监控项,可以适当的降低数据采集的时间间隔以提高处理效率
Trigger中,正则表达式函数last(),nodata()的速度最快,min()、max()、avg()的速度最慢。在使用过程中,尽量选择速度较快的函数。配置Trigger时,也应注意使用正确的逻辑,错误的逻辑可能导致数据库查询较慢的现象。
item监控性默认大部分都是保留90d(天)或者1w(周)的历史数据,趋势图数据保留365天。
其实有趋势图数据即可,历史数据保留7天足够了,采集频率,像磁盘,文件大小等很久才变化的,采集频率可以加大,以达到缓解压力和节省空间的作用
如果主机数量太多,采用代理
如果主机数量太多,可以考虑分机房,分业务,分组的方式来用代理中转。zabbix_proxy可以代替服务端收集数据和监控,但是监控结果还是发送到服务端汇总,代理是没有web界面的。
如果机器太多,可以用主动模式,当前所有默认都是被动模式的,客户端启动10051端口,服务端需要去10051取数据。
- 减少 history 保存时间
- 减少 item 获取间隔时间
- 减少不必要的监控项