公司内部撘的zabbix服务器一直运行正常,某天突然发现zabbix-server服务启动不了了,没动过任何配置,记录下问题的排查过程

1、pid file zabbix_server.pid not readable (yet?) after start

问题现象:

通过查看系统命令systemctl status zabbix-server和journalctl -u zabbix-server -f 发现一直提示
Error :: pid file /run/zabbix/zabbix_server.pid not readable (yet?) after start

问题解决:

通过删掉/etc/systemd/system/zabbix-server.service 文件中pid这一行,解决这个问题(这个配置文件指向的是/var/run/zabbix_server.pid,实际运行/etc/zabbix/zabbix-server.conf文件中不一致,但之前没有出现问题)

上一个解决完之后发现还是起不来,不过这次报错变掉了

2、 cannot create semaphore set: [28] No space left on device

问题现象:

[root@mafei zabbix]# tail -n 10 /var/log/zabbix/zabbix_server.log
zabbix_server [12330]: cannot open log: cannot create semaphore set: [28] No space left on device
zabbix_server [12939]: cannot open log: cannot create semaphore set: [28] No space left on device
zabbix_server [13662]: cannot open log: cannot create semaphore set: [28] No space left on device

问题解决

实际问题猜测应该是因为监控项的增加,系统限制过低导致,知道问题了就开始改
cat /proc/sys/kernel/sem
250 32000 32 128

kernel.sem 4个参数的意义

250 SEMMSL max semaphores per array 信号集容纳最大信号数量
32000 SEMMNS max semaphores system wide 所有信号的最大数量
32 SEMOPM max ops per semop call 调用单个信号集中最大信号数量
128 SEMMNI max number of arrays 信号集的最大值

然后尝试将kernel.sem参数设置的大一点

vim /etc/sysctl.conf
fs.file-max=65535
kernel.sem = 500 64000 64 256 //kernel.sem这个可以根据需求在适当的调大一些

修改完之后依旧尝试重启zabbix-server,不出意外果然还是起不来,这次报错又变了。。。。

3、zbx_mem_malloc(): out of memory

问题现象:

在/var/log/zabbix/zabbix-server.log中出现大量的out of memory及其他内存使用情况的打印:
zbx_mem_malloc(): out of memory
###问题解决
到这里实际上是因为第二个报错是解决了操作系统层面的限制,但是zabbix本身也是有限制的,默认的cache是8M,监控项一多,这个值就不够了
报错里已经很明确的提示了修复办法:please increase CacheSize configuration parameter
所以,我们就去zabbix_server.conf中找到CacheSize字段,默认是8M
/etc/zabbix/zabbix_server.conf
#CacheSize=8M

我这里改成2G
CacheSize=2048M

保存之后重启zabbix-server ,完美解决