zabbix性能监控故障总结

Posted by Yancy on 2014-10-04

TOC

效果如下:
[TOC]

1.Zabbix红色弹出报错 zabbix server is not running: the information displayed may not be current

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
* 排错:
*
1. 检查 /var/www/html/zabbix/conf/zabbix.conf.php
确定
$DB['DATABASE'] 数据库
$DB['USER'] 用户
$DB['PASSWORD'] 密码
这三个参数都是正确的。
注意:每次改了参数文件一定要记得重启zabbix_server
这里都没问题。
2. 关闭SELinux的方法:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0
注:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux
selinux是否关闭。一定要关闭这个,开启selinux会引起一连串问题,甚至zabbix的discovery功能也不能正常使用
3. 上面都没有问题然后在查看服务是否正常启动。
查看/tmp/zabbix_server.log和/tmp/zabbix_agent.log无任何异常。
如果日志提示查找不到主机名,我们看下服务是否启动。
4. 看zabbix_server和zabbix_agent进程、端口都正常
netstat -ntulp
如果没有启动 需要手动启动下,这里可能服务没有启动,启动服务即可。

2.Zabbix-agentd日志报错Get value from agent failed: cannot connect to [[192.168.1.218]:10050]: [113] No route to host

1
2
3
4
5
6
7
8
* 排错:
看提示“No route to host”,与网络连接有关。排除的方法如下:
a)查看192.168.30.3这台机器是否已开机
b)在zabbix server端向这台机器ping,看网络是否通
c)用telnet 登录10050和10051端口,看该主机是否允许这两个端口通讯
d)查看iptables防火墙规则是否拦截10050、10051端口

3.时间不同步Check if client local time is in sync with Zabbix server time

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
因为我在我的网络中的一些NTP服务器,这将是很好能够测量主机和这些服务器之一之间的时间差。可悲的是,这几乎是不可能的。
但有一个解决方案:
`system.localtime.fuzzytime`,照顾这只是一个!!!触发的“fuzzytime”功能发出警报,如果被监控服务器的时间漂移。它比较报告主机的时间的zabbix服务器在触发器被处理的时间上的时间。fuzzytime(秒),可能是(浮点,整数):
返回1,如果时间戳(项目值)不从的zabbix服务器时间有所不同超过N秒,0 -否则通常用于system.localtime检查本地时间在服务器的zabbix本地时间同步。
注:添加公式时,使用“添加”按钮,在右侧,这是很简单的这种方式!
系统时间跟我现在北京时间不同步。
date -R
查看下
需要手动添加计划任务同步下,设置开机启动。这里IP是zabbix-server IP
00 * * * * /usr/sbin/ntpdate 192.168.47.20 >/dev/null 2>&1

还有不懂得可以看:参考

4.MySQL内存不够 Lack of available memory on server MySQL

1
2
3
4
5
故障原因:Lack of available memory on server argus047072
需要添加内存
故障原因:Redis链接数超过最大客户端数量限制。
是否有大量的进程在后台运行

5.Zabbix-agent不通Received empty response from Zabbix Agent

1
2
3
4
5
6
7
8
9
出现如下错误:
Received empty response from Zabbix Agent at [192.168.1.2]. Assuming that agent dropped connection because of access permission
大概意思是说没有权限访问agent端口10050,解决方法如下:
# cat zabbix_agentd.conf| grep Server=
Server=192.168.1.2 # zabbix server ip地址
如果你的server有多个IP地址,使用逗号分隔多个IP地址。

6.Zabbix报错磁盘不足Free disk space is less than 20% on volume /home

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
磁盘总共大小
du -Th
定位查看是什么消耗那么多磁盘空间,查看home目录。
du -s -h /srv/tomcat/tomcat_account/logs/* | sort
1G localhost.2015-12-21.log
2G localhost.2015-12-22.log
2G localhost.2015-12-23.log
.....
find /srv/tomcat/tomcat_account/logs/ -mtime +1 -name "*.log" -exec rm -rf {} \;
这个保留前一天的日志其余都删除。
1. 计划任务脚本清除前一天
00 00 * * * find /home/admin/output/ -mtime +1 -exec rm {} \;
2. 或者使用脚本放到计划任务里面跑
1 0 * * * /opt/soft/log/qingli-log.sh >/dev/null 2>&1
这里的设置是每天凌晨0点1分执行qingli-log.sh .sh文件进行数据清理任务了。
在查看磁盘总共大小

7.Zabbix监控报错zabbix server is not running: the information displayed may not be current

1
2
3
4
5
6
7
故障原因:Zabbix agent on labs047093 is unreachable for 5 minutesZabbix使用一段时间后总是报Zabbix Agent不可到达
解决结果:这三台机器网络不通,ssh连接不上,排错方法查看日志是否有报错,是否服务没有起来。
如果数据库服务器是一直正常的,SELinux是事先关闭没有,修改完上述所提到的后发现问题依然。
Zabbix依然报错(Zabbix Server Messages: PROBLEM: Zabbix agent on Zabbix server is unreachable for 5 minutes。
查看日志报什么错,定位解决问题,一般出现这个大部分数据延迟导致,在图形上面明显看到有4到5分钟数据是空白的。

8.Zabbix图形出现乱码或者没有文字

参考文档:zabbix2.4图形乱码

9.Zabbix监控之邮件告警发送失败smtp-server: 错误代码550与535

参考文档:zabbix163邮件告警错误代码

10.Zabbix中提示:Lack of free swap space on hostname

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
提示:缺交换空间可以创建也可以不用创建。
[root@xx ~]# free -m
total used free shared buffers cached
Mem: 3832 3488 343 0 267 2389
-/+ buffers/cache: 831 3000
swap: 0 0 0
个般物理机不可能不设交换分区,显然这样的设计没有考虑到云主机用户。只需要调节监控文件,即可解决问题:
解决此问题的步骤如下:选择 Configuration->Templates(模板),在模板界面中选择Template OS Linux右侧的Triggers(触发器),
在触发器页面中打开Lack of free swap space on {HOST.NAME}项目,在新打开的触发器编辑页面中修改Expression(表达式)的内容,
由原先的{Template OS Linux:system.swap.size[,pfree].last(0)}<50
修改为{Template OS Linux:system.swap.size[,pfree].last(0)}<50 and {Template OS Linux:system.swap.size[,free].last(0)}<>0
此处修改增加了“and{Template OS Linux:system.swap.size[,free].last(0)}<>0”判断系统有交换空间,当系统无交换空间{Template OS
Linux:system.swap.size[,free].last(0)}的值为0时将不会使表达式成立,
也就不会触发错误提示。保存后在下一个更新周期内zabbix之前报告“Lack of free swap space”问题就会被自动标记为Resolved.
或者创建:
1、首先看一下内存
free -m
2、然后创建一个分区添加交换文件
mkdir /etc/swap/
dd if=/dev/zero of=/etc/swap/swap bs=1024 count=1024000 1个G
3、创建交换空间
mkswap /etc/swap/swap
4、启动交换空间
swapon /etc/swap/swap
5、查看新增空间
free -tom
6、修改/etc/fstab文件使系统在重新启动的时候生效
/etc/swap/swap swap swap defaults 0 0

11.Zabbix-agent日志端hostname不一致:cannot send list of active checks to [192.168.0.1]: host [Zabbix server] not found

1
2
3
4
5
6
查看被监控机上的/tmp/zabbix_agentd.log,显示日志:
No active checks on server: host [Zabbix server] not found
这是因为,通过zabbix dashboard页面配置的被监控主机名跟被监控主机上zabbix_agentd.conf中配置的Hostname不一致。
修改为一致的名字后,重启zabbix_agentd即可。

12.解决CentOS 7安装zabbix 3.0 无法启动zabbix-server的问题

1
2
3
4
5
6
7
8
9
10
[root@kvm zabbix_agentd.d]# service zabbix-agent restart
Redirecting to /bin/systemctl restart zabbix-agent.service
Job for zabbix-agent.service failed because a configured resource limit was exceeded. See "systemctl status zabbix-agent.service" and "journalctl -xe" for details.
解决方案:
关闭SELinux服务 。 执行命令
setenforce 0
3. 重启zabbix
systemctl restart zabbix-server.service

13.zabbix 返回值为空 键值模板报错:Received value [] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]

1
2
3
4
5
6
7
8
9
10
11
解决:
本地脚本获取值有返回,脚本没有zabbix赋权~
监控端执行脚本:
[root@jollychic-db-slave4 zabbix]# sh mysql3307.sh Qcache_queries_in_cache
87
zabbix 服务端:
[root@yum-zabbix ~]# zabbix_get -s 10.155.74.247 -k mysql.status3307[Threads_running]
返回空这里就是脚本没有zabbix赋权~
这里脚本需要添加下-h127.0.0.1 即可

14.解决Zabbix“ZBX_NOTSUPPORTED: Timeout while executing a shell script”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
解决方案
(1)修改zabbix_server的zabbix_server.conf:
[root@nmp01 scripts]# vim /usr/local/zabbix/etc/zabbix_server.conf
修改以下参数:
Timeout=30
注:超时时间为30秒
(2)修改脚本所在zabbix_agentd的zabbix_agentd.conf:
vim /usr/local/zabbix/etc/zabbix_agentd.conf
修改以下参数:
Timeout=30
(3)重启zabbix服务端和脚本所在客户端:
service zabbix_server restart
service zabbix_agentd restart

15.Zabbix3.0 poller processes more than 75% busy警报处理

告警原因:

1.某个进程卡住了,
2.僵尸进程出错,太多,导致慢了
3.网络延迟(可忽略)
4.zabbix消耗的内存多了

一:简单,粗暴(重启zabbix-server可结合定时任务使用)

虽然Zabbix的监控警报各种有,但yancy使用碰到最多的几个莫过于内存耗尽,网络不通,IO太慢还有这个“Zabbix poller processes more than 75% busy”了。一开始的时候因为这个即不影响使用也持续一会儿就自行解决就没有多在意。然后随着数据库的增大,Zabbix消耗的内存可是越来越多,Poller processes(轮询)开始天天Busy了,最终yancy不得不把Zabbix挪到了另外一台服务器上。

但这并没有彻底解决问题,警报仍然三天两头来几个。之后Kaijia开启了Zabbix警报的邮件功能,于是开始频繁收到这类邮件,于是Kaijia决定解决这个问题。Google了一下资料,没有找到很权威的答案,造成轮询忙的问题有很多中,支撑Zabbix的MySQL卡住了,Zabbix服务器的IO卡住了都有可能,Zabbix进程分配到内存不足都有可能。一个简单的方法是增加Zabbix Server启动时初始化的进程数量,这样直接增加了轮询的负载量,从比例上来讲忙的情况就少了。

增加初始化进程的方法非常简单,编辑Zabbix Server的配置文件/etc/zabbix/zabbix_server.conf,找到配置StartPollers的段落:

1
2
3
4
5
6
7
1. ### Option: StartPollers
2. # Number of pre-forked instances of pollers.
3. #
4. # Mandatory: no
5. # Range: 0-1000
6. # Default:
7. # StartPollers=5

取消StartPollers=一行的注释或者直接在后面增加:

1
StartPollers=10

因为之前zabbix除了单独跑一个server服务还有agent还有grafana-server还有代理,后面我先扩大内存和服务器CPU.
将StartPollers改成多少取决于服务器的性能和监控的数量,Kaijia将StartPollers设置成12之后就再没有遇到过警报。如果内存足够的话可以设置更高。设置完成之后运行:

1
service zabbix-server restart

重启Zabbix。当然另外一种从整体上降低Zabbix服务器负载的方法就是定期重启Zabbix,这种方法可以用Cron实现,运行:

1
crontab -e

在调出的Cron编辑器中增加一个计划:

1
00 * * * * service zabbix-server restart > /dev/null 2>&1

这个计划会每天自动重启Zabbix服务以结束僵尸进程并清理内存等。目前Kaijia这样配置Zabbix后还没有再次遇到过“Zabbix poller processes more than 75% busy”的问题。

16、Zabbix3.0-monitoring出现乱码

出现乱码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
* 参考文档:
zabbix版本都已有汉化功能了,直接选择中文就行。
可是低版本的就需要安装汉化,可是发现打开图形界面是空白图形:
遇到中文乱码问题。zabbix乱码是怎么照成的呢?zabbix使用DejaVuSan.ttf字体,不支持中文,导致中文出现乱码。解决方法很简单,把我们电脑里面字体文件传到zabbix服务器上。
* 在zabbix-server端上面进入安装目录:
var/www/html/zabbix/fonts目录下面查看,发现之前上传字体的文件名后缀是.ttc,猜着一般见到的都后缀都是ttf的,会不会是这个问题导致的呢。于是在windows系统上找到simkai.ttf,上传到fonts下,编辑/var/www/html/zabbix/include/defines.inc.php,更改两处地方:
define(‘ZBX_FONT_NAME‘, ‘simkai‘);
define(‘ZBX_GRAPH_FONT_NAME‘, ‘simkai‘);
fzytk

设置好了,服务重启下,刷新,图下面就有字体了:


graphfont

常见问题:

1
2
3
4
5
6
7
8
9
依旧乱码:通过以上的操作,大部分同学的乱码问题解决了,但是依旧有一些同学还是乱码?细心的群友提供另外一种情况:初始化数据库的时候未使用utf8编码所致.初始化数据库使用命令
create database zabbix default charset utf8;
或者my.cnf增加如下配置
default-character-set = utf8
总结
乱码处理方法很简单,实际上就是替换字体。

交流学习:

🐧 Linux shell_高级运维派: 459096184 圈子 (系统运维-应用运维-自动化运维-虚拟化技术研究欢迎加入)
🐧 BigData-Exchange School : 521621407 圈子(大数据运维)(Hadoop开发人员)(大数据研究爱好者) 欢迎加入

相应Bidata有内部微信交流群互相学习,加入QQ群有链接。