热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

zabbix生产环境遇到的问题

1)Zabbix监控界面报错LackoffreeswapspaceonZabbixserver”解决公司线上部署的zabbix3.0的监控界面首页报错说无交换内存主机“Lackof

1)Zabbix监控界面报错Lack of free swap space on Zabbix server”解决

公司线上部署的zabbix3.0的监控界面首页报错说无交换内存主机“Lack of free swap space on Zabbix server”

解决此问题的步骤如下:

        选择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(已解决)。


2)zabbix监控界出现“Zabbix poller processes more than 75% busy ”报警

线上部署的zabbix监控环境运行一段时间后,突然出现了报警“Zabbix poller processes more than 75% busy“

其实,Zabbix的监控警报有很多种,比较常见的几个莫过于内存耗尽,网络不通,IO太慢还有这个“Zabbix poller processes more than 75% busy”了。一开始的时候因为这个即不影响使用也持续一会儿就自行解决就没有多在意。然后随着数据库的增大,Zabbix消耗的内存可是越来越多,Poller processes(轮询)开始天天Busy了.

最后,发现解决这个问题很简单!

可以增加Zabbix Server启动时初始化的进程数量,但这样做直接增加了轮询的负载量,内存配置充足的情况下完全可以这么做。


具体编辑Zabbix Server的配置文件/etc/zabbix/zabbix_server.conf,找到配置StartPollers的段落:

### Option: StartPollers

# Number of pre-forked instances of pollers.

#

# Mandatory: no

# Range: 0-1000

# Default:

# StartPollers=5


取消StartPollers前的#号注释,修改5为10或者更大【由于线上机器内存64G的,我此处修改成60或80】

修改后,重启zabbix_server

#pkill -9 zabbix_server

#/usr/local/zabbix/sbin/zabbix-server

过一会儿就发现触发器里已经没有类似的警告了


当然,我们也可以额定时写个脚本来重启zabbix_server来降低负载

下面是脚本/root/zabbix-restart.sh

#!/bin/bash

/usr/bin/pkill zabbix_server

/usr/local/zabbix/sbin/zabbix_server

然后crontab做计划任务

0 3 * * * /bin/bash -x /root/zabbix-restart.sh > /dev/null 2>&1


3)zabbix Too many processes on

解决办法:将对应的触发器的阀值设置大点(默认是300,可以改到3000)

技术分享图片

技术分享图片

4)监控图里获取不到数据

可以先在服务端的命令行礼通过命令:

# /usr/local/zabbix/bin/zabbix_get -s 192.168.1.10 -p 10050 -k "mysql.status[Uptime]"

其中:

        -s后面跟的是被监控机的ip地址;

      -k后面跟的是监控项的键值,这个可以在zabbix页面里对应监控项里查到。

如果在服务端通过以上命令能获取到数据,那么在zabbix监控页面的图形里显示获取不到数据,可能就是web页面里的配置问题了。


5)内存溢出导致zabbix_server服务关闭

138401:20170630:172159.850 using configuration file: /data/zabbix/etc/zabbix_server.conf

138401:20170630:172159.854 current database version (mandatory/optional): 03020000/03020000

138401:20170630:172159.854 required mandatory version: 03020000

138401:20170630:172200.238 __mem_malloc: skipped 0 asked 48 skip_min 4294967295 skip_max 0

138401:20170630:172200.238 [file:strpool.c,line:53] zbx_mem_malloc(): out of memory (requested 42 bytes)

138401:20170630:172200.238 [file:strpool.c,line:53] zbx_mem_malloc(): please increase CacheSize configuration parameter


解决办法:

打开zabbix_server.conf 找到 Option: CacheSize

把原来的 # CacheSize=8M 前面的#注释去掉,将8M修改为1024,这个1024根据服务器性能修改。


# vim /data/zabbix/etc/zabbix_agentd.conf

......

CacheSize=1024M


然后重启zabbix_server即可


6)zabbix数据库连接数超额导致连接失败

mysql> show variables like &#39;max_connections&#39;;
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 152   |
+-----------------+-------+
1 row in set (0.00 sec)
 
默认是152的连接数。修改方法如下:
1)临时性修改
mysql> set GLOBAL max_cOnnections=1024;
mysql> show variables like &#39;max_connections&#39;;
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 1024  |
+-----------------+-------+
1 row in set (0.00 sec)

 

2)永久性修改

在my.cnf文件中配置:

[mysqld]                     //新添加一行如下参数

max_cOnnections=1000

 

重启mysql服务即可



7)zabbix的web界面中的cpu监控图中显示的负载是0.002-0.0014,这显然是不对的,跟服务器上uptime现实的cpu负载不一致!


解决办法:

修改模板(Template OS Linux)--监控项--Processor load (1 min average per core)--键值:

把 system.cpu.load[percpu,avg1] 改为 system.cpu.load[all,avg1]


8)zabbix_server.log里出现如下报错:


zabbix_server.log里出现如下报错:
95213:20180101:154323.271 cannot send list of active checks to "10.0.8.20": host [jumpserver01.kevin.cn] not found
95212:20180101:154323.549 cannot send list of active checks to "10.0.56.21": host [cx-app02.kevin.cn] not found
95216:20180101:154324.768 cannot send list of active checks to "10.0.54.21": host [bl2-app02.kevin.cn] not found
95212:20180101:154325.072 cannot send list of active checks to "10.0.52.22": host [nc-app02.kevin.cn] not found


原因分析:

zabbix_agentd.conf文件中配置的Hostname内容和zabbix的web界面"配置"->"主机"的主机名称配置不一致导致的,修改成一致内容即可!


9)zabbix_server.log里出现如下报错:


95219:20180101:162139.869 fping failed: /usr/local/sbin/fping: can&#39;t create raw socket (must run as root?) : Operation not permitted
95219:20180101:162140.871 fping failed: /usr/local/sbin/fping: can&#39;t create raw socket (must run as root?) : Operation not permitted
95219:20180101:162141.874 fping failed: /usr/local/sbin/fping: can&#39;t create raw socket (must run as root?) : Operation not permitte


解决办法:

1)确保zabbix的agent客户机的zabbix有sudo权限

[root@web01 ~]# chattr -i /etc/sudoers
[root@web01 ~]# chmod 640 /etc/sudoers
[root@web01 ~]# echo "zabbix  ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
[root@web01 ~]# chmod 440 /etc/sudoers
[root@web01 ~]# chattr +i /etc/sudoers

 

2)修改zabbix的server服务器端fping的权限 ,这一步很重要!!

[root@zabbix01 ~]# ll /usr/local/sbin/fping
-rwxr-xr-x 1 root root 67110 12月 11 17:18 /usr/local/sbin/fping
[root@zabbix01 ~]# chmod u+s /usr/local/sbin/fping

 

然后切换到zabbix用户下进行测试

[root@zabbix01 ~]# su - zabbix
[zabbix@zabbix01 ~]$ /usr/local/sbin/fping -s oa-mob01.kevin.cn
oa-mob01.kevin.cn is alive
 
       1 targets
       1 alive
       0 unreachable
       0 unknown addresses
 
       0 timeouts (waiting for response)
       1 ICMP Echos sent
       1 ICMP Echo Replies received
       0 other ICMP received
 
 0.58 ms (min round trip time)
 0.58 ms (avg round trip time)
 0.58 ms (max round trip time)
        0.001 sec (elapsed real time

 

如果返回 XX.XX.XX.XX is alive,那说明是OK的了!

10)问题说明:在一台zabbix被监控服务器上(64位centos6.8系统,64G内容)启动zabbix_agent,发现进程无法启动,10050端口没有起来!


启动zabbix_agent进程没有报错,但10050端口没有正常启动起来。

[root@ctl ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@ctl ~]# ps -ef|grep zabbix_agent
root 27506 27360 0 11:07 pts/5 00:00:00 grep --color zabbix
[root@ctl etc]# lsof -i:10050


查看/usr/local/zabbix/logs/zabbix_agentd.log日志,发现报错如下:

................

27667:20161027:111554.851 cannot allocate shared memory of size 657056: [28] No space left on device

27667:20161027:111554.851 cannot allocate shared memory for collector

..............


原因分析:

这是因为内核对share memory的限制造成的。


处理过程记录:

[root@ctl logs]# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 1940588
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 100
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 32768
max size of message (bytes) = 65536
default max size of queue (bytes) = 65536


从上面命令结果可以看到:

max total shared memory设置的是2M,max seg size设置的是8M,这显然不够allocate(分配)zabbix_agent启动所使用的内存。


查看目前的共享内存设置,

[root@ctl logs]# sysctl -a|grep shm
kernel.shmmax = 1987162112
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.shm_rmid_forced = 0
vm.hugetlb_shm_group = 0


其中kernel.shmall代表总共能分配的共享内存,这里是2G,kernel.shmax代表单个段能allocate的内存(以字节为单位),这里是2M,所以肯定有问题!


然后查看/etc/sysctl.conf

[root@ctl logs]# cat /etc/sysctl.conf
........
kernel.shmall = 2097152
kernel.shmmax = 1987162112


显然在sysctl.conf文件里设置的kernel.shamll和kernel.shmmax参数的值小了。


--------------------------------------------------------------------------------------------------------------------------------------------------

本机是64位的centos 6.8系统,64G内存,查看其它同系统的被监控服务器发现:

[root@bastion-IDC ~]# cat /etc/sysctl.conf 
........
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
[root@ctl logs]# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 67108864
max total shared memory (kbytes) = 17179869184
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 100
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 32768
max size of message (bytes) = 65536
default max size of queue (bytes) = 65536


即64位的centos6系统(64G)的上面两个参数的默认值是64G和4G,设置的都是系统能识别的最大内存。

---------------------------------------------------------------------------------------------------------------------------------------------------


现在只需要在本机调大这两个参数值即可解决问题!

[root@ctl logs]# cat /etc/sysctl.conf
........
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.msgmnb = 65536 
kernel.msgmax = 65536
执行sysctl -p生效
[root@ctl logs]# sysctl -p


再次查看发现已经修改成功了!

[root@ctl logs]# sysctl -a|grep shm
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.shm_rmid_forced = 0
vm.hugetlb_shm_group = 0
[root@ctl logs]# ipcs -l


------ Shared Memory Limits --------

max number of segments = 4096

max seg size (kbytes) = 67108864

max total shared memory (kbytes) = 17179869184

min seg size (bytes) = 1


------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 100

semaphore max value = 32767


------ Messages: Limits --------

max queues system wide = 32768

max size of message (bytes) = 65536

default max size of queue (bytes) = 65536


最后重新启动zabbix,发现10050端口顺利启动了:

[root@ctl ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@ctl logs]# ps -ef|grep zabbix
zabbix 27776 1 0 11:22 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd
zabbix 27777 27776 0 11:22 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 27778 27776 0 11:22 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 27779 27776 0 11:22 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 27780 27776 0 11:22 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 27781 27776 0 11:22 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 28188 27360 0 11:48 pts/5 00:00:00 grep --color zabbix
[root@ctl logs]# lsof -i:10050
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
zabbix_ag 27776 zabbix 4u IPv4 112357384 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 27777 zabbix 4u IPv4 112357384 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 27778 zabbix 4u IPv4 112357384 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 27779 zabbix 4u IPv4 112357384 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 27780 zabbix 4u IPv4 112357384 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 27781 zabbix 4u IPv4 112357384 0t0 TCP *:zabbix-agent (LISTEN)



推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
author-avatar
最陌生的挣扎2502893263
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有