centreon3.4踩坑合集

公司之前采用论坛版centreon+nagios监控2000台机器操作系统层面信息,使用了4套,监控延迟较高,监控界面分散。国庆前后测试研究了centreon集成版,该版本有法国一家公司维护,前端采用centreon,后端采用centreon-engine(nagios的一个分支),传输采用centreon-broker。一路踩坑无数,但最终使用效果很好,监控延迟消除、报警界面集中,解决了监控的一大痛点。仅以本文记录踩坑过程,方便自己,方便后来人。

部署架构

采用分布式架构,一个中心节点center,多个采集节点poller。center节点和poller节点都使用官方提供的iso镜像安装,安装过程中选择不同的角色。
center节点初始化需要修改mysqlroot密码,修改php时区,然后根据web安装引导界面安装即可。
poller节点系统安装后配置好ip地址即可。
center添加poller节点步骤:1 添加center节点centreon用户pub key到poller节点,2 center web界面添加poller,输入poller ip地址, 3 center web界面使用wizard添加poller类型broker,输入center节点ip。4 配置文件界面会有2个poller engine的配置文件,将broker生成的配置文件中data标签-multiple broker module配置项的entry添加到新建poller生成的配置文件中,并禁用broker生成的engine配置文件。4 导出配置重启poller。

center节点添加poller节点的坑

  1. tail /var/log/centreon/centcore.log 报错RSA key错误
    center节点需要使用centreon用户生成ssh免密码公钥并将公钥写入到poller。修改ip后公钥会变化,虽然能免密码ssh到poller,但center节点复制配置文件到poller还是不行,需要重新生成pub key,替换poller上原有的。
  2. centcore报错//cmd.so文件无法找到,功能故障为在center节点无法确认故障,将告警设置为确认状态。
    poller的配置文件中data标签multiple broker module 未添加poller的broker模块的配置文件。
  3. 导出配置文件重启poller后,poller状态为not running
    在center节点tail /var/log/centreon/centcore.log查看命令传递是否异常,在poller节点查看centreon-engine日志是否有重启记录tail /var/log/centreon-engine/centengine.log
  4. poller节点centreon-engine broker模块配置文件错误
    broker 模块的配置文件为/etc/centreon-broker/poller-module.xml ,配置文件内容为使用wizaid创建broker是生成的。如果poller上没有此文件,可以新建一个相同名称的空文件,设置好权限后,使用wizaid创建一个poller类型的broker配置文件,就会将内容写入。
  5. poller节点监控主机数量大>800,导致导出配置文件错误
    可以查看httpd日志,发现是php内存不足,修改php内存使用上限到1G即可解决。tail /var/log/httpd/error.log
  6. 无法收到告警通知
    centreon告警流程如下:engine检测服务,如果定义为3次检测,会在三次检测都为故障后讲服务状态设置为hard,然后将服务故障设置为critca。在通知配置中设置了critcal状态通知后,centreon-engine会执行命令发邮件到用户邮箱。centreon-engine发邮件记录可在centengine.log中查看,也可以到web前端、monitoring-event logs,勾选通知,选择时间范围后查看到。邮件发送可在/var/log/maillog中查看是否发送成功。
    要发送邮件到外部服务器,需要做域名解析。/etc/resolv.conf ,/var/spool/postfix/etc/resolv.conf中添加域名解析服务器,让poller和center节点都能访问到用户邮箱的服务器。
  7. centcore.log报错mysql链接错误
    重启服务器解决
  8. centACL.log报lisence错误
    删除或重命名/etc/php.d/zendguard.ini,重启httpd即可
  9. centegine报错max400
    并发线程设置过小,修改engine配置文件tuning-maximun concurrent service checks到合适的值。
  10. 发件人地址设置
    修改/etc/postfix/main.cof ,定义$myhostname变量为需要的值即可。
  11. 分布式部署正常使用一段时间后,无法标黄poller上的主机
    1主3 poller运行2周后,可以标黄central节点上监控的主机,无法标黄确认poller节点的主机。tail -f /var/log/centreon/cencore.log 报错“ould not write into pipe file /var/lib/centreon-engine/rw/centengine.cmd on poller 5”.
    bing查询半天也没结果,网上都是有问题,没答案。观察centcore启动配置文件及参数,猜测可以启用更详细的日志模式,就停用centcore,将centcore在更详细的日志级别启动usr/bin/perl /usr/share/centreon/bin/centcore --logfile=/var/log/centreon/centcore.log --severity=info --config=/etc/centreon/conf.pm,然后观察日志发现更多报错
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    2017-10-16 14:51:19 - External command : 192.168.12.180 (5) : "[1508136679] ACKNOWLEDGE_SVC_PROBLEM;gitlab服务器-3.20;linux_memory_status;2;0;1;admin;由 admin 确认-huilu
    "
    2017-10-16 14:51:24 - Receiving die: Timeout by signal ALARM

    2017-10-16 14:51:24 - Dont die...
    2017-10-16 14:51:24 - Receiving die: Timeout by signal ALARM

    2017-10-16 14:51:24 - Dont die...
    2017-10-16 14:51:24 - Timeout by signal ALARM

    2017-10-16 14:51:24 - Killing child process [19848] ...
    2017-10-16 14:51:24 - Killed
    2017-10-16 14:51:24 - Could not write into pipe file /var/lib/centreon-engine/rw/centengine.cmd on poller 5

感觉是ssh超时的原因,ssh到poller慢。手动ssh到poller,确实等待时间8s左右。修改poller的ssh配置文件两个地方可以加快ssh访问。vi /etc/ssh/sshd_config

1
2
3
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UseDNS no

修改这三个地方后手动ssh到poller速度变快,测试标记黄色确认可以正常标记,故障解决。

未解决问题

在center节点查看每个poller的状态图