Centos- Nagios 的Last Check更新时间与当前时间差距分析问题及处理方法总结

故障现象:

  • 2014年6月4日 收到客户邮件说:bjd nagios 的Last Check更新时间与当前时间差距很大

具体处理过程如下:

  • 盲目处理阶段:
  • 想将问题尽快处理掉,所以有点只看问题表象忽略了重点,唉,说多了都是泪。
  • 查询该机器各种log 发现除了一些常规报错信息,没有重要发现。
  • 检查机器磁盘空间,内存,IO,CPU正常。
  • 此问题首次出现,之前未有遇到。通过查询资料得知是由于此文件权限发生变化导致。但是任我怎么修改文件的权限和所属组都不能解决问题。并参考了http://myhat.blog.51cto.com/391263/692879,恕不知此问题不是解决本次问题的关键,结果造成误导。

[[email protected] ~]#cd/usr/local/nagios/var/rw/

[[email protected] rw]#ll

total 0

prwxrwxrwx 1 nagios nagios 0Jun  7 02:11 nagiosNaNd

  1. 5.    继续为绕此问题进行分析和尝试,并进行多次重启服务操作均未解决,但在重启服务时发现,服务启过程中有报错:/etc/init.d/nagios: line 67: kill: (1777) - No such process 在之前重启服务中均未出现此问题,觉得应该不正常,于是查之,陷于分析过程,参考网络文章无数未找到解决方法,先忽略之。此时主服务一直未启动具然不知道,并且没有引起足够的重视。
  2. 6.    比对运行正常的机器,各种比对,配置文件均一致,无解。
  3. 7.    没有找到合理的解决方法,重启机器,重启完成后未解决,心灰意冷了。
  4. 8.    由于时间差距大,与用户商议先决定开启备机上的报警功能,。
  5. 9.    备机启动时也是多灾多难,不过最终切至备机上开始运行。
  6. 10.  关闭当前机器报警功能,让同事将此机器生成快照,为了日后找到问题时回退。
  7. 11.  把之间忽略的信息重新分析并解决,但问题已然存在。
  8. 发现转折点阶段:
  9. 1.    备机开启,没有什么提心了,继续排查。
  10. 2.    此时发现nagios主服务未启动,但是web访问的页面也能打开,各种数据都有,诧异各种诧异,之前的处理都是被误导到天国去了。
  11. 3.    随即开启nagios主程序,发现启动1-3分钟后就自动停止。于是先打开日志文件保持更新状态,一边开启nagios主程序,观察启动过程。这次在日志中有重大发现:

启动nagios时在系统日志中出现如下报错信息:

Jun  7 00:41:41nagios01 kernel: EXT3-fs warning (device dm-0): ext3_dx_add_entry: Directoryindex full!

Jun  7 00:41:41nagios01 kernel: EXT3-fs warning (device dm-0): ext3_dx_add_entry: Directoryindex full!

Jun  7 00:41:50nagios01 /usr/sbin/gmetad[2964]: data_thread() got no answer from any [MonitorHost] datasource

Jun  7 00:41:56nagios01 kernel: EXT3-fs warning (device dm-0): ext3_dx_add_entry: Directoryindex full!

Jun  7 00:41:56nagios01 kernel: EXT3-fs warning (device dm-0): ext3_dx_add_entry: Directoryindex full!

  1. 4.    当nagios自动停止后,此日志不在出现,根据经验判断有重大嫌疑,于时查之。随着深入查阅资料更能加深这一判断:

找到相关资料http://www.linuxquestions.org/questions/linux-server-73/ext3-fs-warning-device-dm-0-ext3dxaddentry-directory-index-full-631376/

此问题为inodes(索引节点)已满,引用"inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的 找到相对应的文件。"通过几台的情分析判断,每一G的空间,有120000左右的inodes可以在格式化分区时指定inodes的大小,加个 -N参数,如

mkfs.ext3 -N 2500000/dev/sda6 #2500000 为inodes的大小

实际应用需要要根据分区的大小来定,造成此问题通常是产生了大量的小文件(附合nagios的特点)

  1. 5.    再进一步落实

检查磁盘空是未满,但是检查Inodes时发现 /data目录还有1%

[[email protected] etc]#df -i

Filesystem           Inodes   IUsed   IFree IUse% Mounted on

/dev/sda3             65952   10062   55890   16% /

/dev/mapper/lv01-vm01

12816384   66867 12749517    1% /data

/dev/sda8             65952      90   65862    1%/tmp

/dev/sda7            328000   23317  304683    8% /home

/dev/sda6            655360   10724  644636    2% /var

/dev/sda5            655360  100483  554877   16% /usr

/dev/sda1             26104      44   26060    1%/boot

tmpfs               1021913       1 1021912    1%/dev/shm

[[email protected] etc]#df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/sda3           1020M  477M  492M  50% /

/dev/mapper/lv01-vm01

48G   35G   11G  77% /data

/dev/sda8           1020M   35M  934M   4% /tmp

/dev/sda7            5.0G  2.4G  2.4G  50% /home

/dev/sda6             10G  2.7G  6.8G  29% /var

/dev/sda5             10G  2.2G  7.3G  24% /usr

/dev/sda1             99M   23M   71M  25% /boot

tmpfs                3.9G     0  3.9G   0% /dev/shm

[[email protected] etc]#

  1. 6.    继续确认:

在/data/pnp4/pnp4nagios/var/spool这个目录下有18G的文件,都是小文件有46万多个

[[email protected] spool]#find .-type f |wc -l

468954

  • 定位问题阶段:
  • 是存放pnp4nagios的数据文件,Pnp4nagios使用的是RRDtool工具来实现画图的,用rrdtool是将nagios采集的数据绘制图表的工具。简单来说就是对于服务和主机,添加“小太阳”监控图标来使的,是历史数据。
  • 经过以上的落实确认基本上可以判定,由于inodes(索引节点)已满,造成的nagios程序启动后自动停止。
  • 解决问题:

删除小文件/data/pnp4/pnp4nagios/var/spool

重启nagios 主服务一切正常,问题解决。

经删除这些文件后,验证了小太阳中的历史数据图表还有数据,证明可以删除,没有影响。

个人总结:

  1. 遇到问题不要慌,乱了阵脚,不可取。
  2. 判断问题要用排除法,不能头脑发热和想当然,否则会给后续判断带来重大的方向性错误。
  3. 实在没法的时候就要把所有怀疑的关键点逐个进行落实和分析,得出一条关键路径,最后得出正确的方向。
  4. 请教人不如自己查,在关键问题上还是要靠本人。虽然对方是高手,但是通过电话或邮件根本不可能描述你所面临的问题,因为你还有没定位问题的所在,多少次的经验验证了这一条。但不是说不让问,度希望自己揣摩和掌握。
  5. 强烈推荐googlebaidu ,没有强大的搜索功能,也不会缔造我们这些IT民工的成长,谢谢你们。
  6. 吐槽国内的某些组织,google,google,google,上不去啊。
  7. 有些手册还需完善和建立。

以上代表个人关点,如有不同意见线下来讨论。

后续工作:

  1. 目前还建议切换回10.219.240.12,因为在处理过程中修改了很多配置文件参数。
  2. 运行一段时间看看效果,观察观察。
  3. 观察后没问题,需要将做的快照恢复到之前。并从10.219.240.35上将监控状态信息同步到10.219.240.12上。
  4. 还有一些技术问题需要讨论。

附赠送一点Linux 小知识共勉:

  • 在Linux 下删除大文件时有时会用到这个命令:

测试时在目录下创建了20w个左右的空文件,想删除这些文件,进入目录,输入命令:
rm -rf *
屏幕显示:
-bash: /bin/rm: Argument list too long
通过google后,找到解决方法,输入下面的命令,删除成功:
ls | xargs -n 10 rm -fr ls
命令解释为:输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数也就是说将所有文件名10个为一组,由rm -rf删除

  • Linux下面查看目录大小以及文件数量命令
  • 查看目录的大小:
    [[email protected] 1010 shellimage]#du -sh

上面这个是查看当前目录的大小,如果是要查看指定目录的大小则:

[[email protected] 1010 shellimage]#du -sh/uploadimages

这里是查看根目录下的uploadimages目录的大小.

2.查看当前目录文件总数:

[[email protected] 1010 shellimage]#find .-type f |wc -l

上面这个是查看当前目录文件总数,如果是要查看指定目录的总数则:

[[email protected] 1010shellimage]#find /uploadimages -type f |wc -l

这里的f是表示文件,改成d则表示目录.

Centos- Nagios 的Last Check更新时间与当前时间差距分析问题及处理方法总结,布布扣,bubuko.com

时间: 2024-10-08 03:00:23

Centos- Nagios 的Last Check更新时间与当前时间差距分析问题及处理方法总结的相关文章

定时器:为 Windows 实现一个连续更新,高精度的时间供应器

原著:Johan Nilsson 翻译:lxhui 原文出处:MSDN Magazine March 2004(Timers...) 原代码下载: HighResolutionTimer.exe (404KB) 本篇文章假定你熟悉 C++ 和 Win32 API  概要   从 Windows NT 里获得的时间戳(Timestamp),根据你所使用的硬件,其最大精度为 10 到 15 毫秒.但是, 有时候你需要时间标签频繁事件时,获得更高的精度更能令人满意.举个例子,如果你要与线程打交道,或者

CentOS系统时间与UTC时间不一致的解决方法

我们在安装完Centos Linux操作系统之后,点击系统的时间发现与现在所使用的时间不一致,相差有8小时,而在安装系统的时候我们选择的时区是上海,但是CentOS Linux默认的bios时间是utc时间(UTC 是协调世界时(Universal Time Coordinated)英文缩写,是由国际无线电咨询委员会规定和推荐,并由国际时间局(BIH)负责保持的以秒为基础的时间标度.UTC相当于本初子 午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示.北京时间比UTC时间

CentOS 6.9系统时间和硬件时间设置(转)

总结一下hwclock,这个容易晕: 1)/etc/sysconfig/clock 文件,只对 hwclock 命令有效,且只在系统启动和关闭的时候才有用(修改了其中的 UTC=true 到 UTC=false 的前后,执行 hwclock (--utc, 或 --localtime) 都没有变化,要重启系统后才生效): 2)/etc/rc.d/rc.sysinit 文件,run once at boot time,其中有从硬件时钟同步时间到系统时间的操作: 3)hwclock --localt

winform批量更新数据_长时间的执行会导致界面卡死

原文:winform批量更新数据_长时间的执行会导致界面卡死 前言:使用winform触发一个事件后执行的代码,如果耗时非常长,则会导致窗口界面假死!  本人最近通过winform窗体执行一项:需要批量更新一批数据库的数据的操作的任务时,由于数据量达到百万级别,非常耗时,只能慢慢更新,慢慢执行. 但是,在执行的过程遇到了一个奇葩的问题:窗体在调试状态下,代码可以慢慢循环执行,没出现异常.  但是我单独运行EXE程序时,就必现:程序假死,未响应状态. 后台百度虽然没有找到直接的答案,但是也发现了原

IIS 7 出现日志文件时间与服务器时间不符

最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生 的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日志的格式有IIS.NCSA.W3C三种: 1.IIS是固定的基于 ASCII 文本的格式,无法自定义记录的字段,字段由逗号分隔, 记录的时间为本地时间文件名前缀为u_in. 2.NCSA是美国国家超级计算技术应用中心 (NCSA) 公用日志文件格式,也是固定的基 于 ASCII 文本的格式,无法自

【JavaScript】一个同步于本地时间的动态时间

这例子非常简单,了解JavaScript之后就是几行的代码便能够完成的事情, 但是对于一些未接触过JavaScript的人来说,几乎很大工程的样子,然后在网上苦苦寻觅代码,之后在茫茫的html代码中寻求不到,最终得不到要领. 一.基本目标 实现一个随同客户端(浏览者机器上的)时间的网页文本时间,使用最短的代码. 二.制作过程 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww

Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)

在windows下,一个文件有:创建时间.修改时间.访问时间. 而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后, 状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过.读过.其状态是否 变过,所以判断文件的建立时间基本上能为不可能. 如何查一个文

Python 系统时间与Mysql时间对比

由于自己是负责海外项目,常常会遇到一些问题,最近被系统时间与mysql时间不在一个时区,而坑了自己,一般修改了系统时区之后,MySQL必须重启,不然MySQL时区是不对的,会导致数据全部都是错的~~~,哎,只有坑到了自己,才会想到要去避免这种事情再次出现,所以用python写了一个简单判断时区的脚本,时区不对并邮件发出来,大家参考参考,详情如下: 1.脚本实例 #!/usr/bin/env python # coding=utf8 # auther:kuangl # This is system

Linux中UTC时间与CST时间不一致的问题

为了学习,在虚拟机中最小化安装了CentOS6.7,使用时发现文件的时间戳跟实际时间不一致,用date查看时间的时候显示: 2016年 01月 01日 星期五 21:11:43 CST 然后用date -u 显示的时间是正确的: 2016年 01月 01日 星期五 13:12:20 UTC 为了解决这个问题,在网上找了一些解决方法,记录如下. 世界协调时间(Universal Time Coordinated,UTC): 如果没有安装ntp服务器,则需要先执行以下命令: yum -y insta