LNMP环境快速部署Observium监控

为了项目需要,需要临时快速部署一台Observium服务器用于监控,官方给的文档已经很简洁明了,但是还是想用自己的办法部署一遍,本文仅作为部署笔记供大家参考,不一定会定期维护。

部署LNMP环境

因Observium的运行环境需要 PHP+MySQL 的支持,先找好一台Linux服务器,一键安装宝塔面板:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

你完全可以根据自己的习惯和需要部署LNMP环境,我比较图省事,面板部署好根据终端中输出的登录信息登录面板,对LNMP的环境进行安装和定制,这里就不赘述了。

安装Observium运行所需组件

在终端中执行:

yum install net-snmp net-snmp-utils fping rrdtool subversion jwhois ipmitool graphviz libvirt

安装Observium

在宝塔面板添加好网站,然后从官方下载Observium社区版本安装包:

cd /www/wwwroot/monitor.dearroy.com
wget http://www.observium.org/observium-community-latest.tar.gz
tar zxvf observium-community-latest.tar.gz

解压完成后,将observium文件夹中的文件移动到网站根目录。

然后复制一份配置文件的模板文件,并进入编辑模式:

cp config.php.default config.php
vi config.php

针对MySQL数据库信息进行补全后,保存并退出编辑模式。

然后插入MySQL初始数据库信息:

./discovery.php -u

创建rrd目录并赋予写权限:

mkdir rrd
chown www:www rrd

接着添加一个初始管理员账户(等级level为10):

./adduser.php 用户名 密码 10

添加一个监控设备:

./add_device.php <hostname> <community> v2c

如果遇到类似 Could not ping localhost. 这样的提示,请检查你的PHP是否禁用了 proc_open 这个函数。

做一个初始抓取:

./discovery.php -h all
./poller.php -h all

创建定时任务:

首先创建一个 /etc/cron.d/observium 文件,添加以下内容到其中:

# Run a complete discovery of all devices once every 6 hours
33  */6   * * *   root    /opt/observium/discovery.php -h all >> /dev/null 2>&1

# Run automated discovery of newly added devices every 5 minutes
*/5 *     * * *   root    /opt/observium/discovery.php -h new >> /dev/null 2>&1

# Run multithreaded poller wrapper every 5 minutes
*/5 *     * * *   root    /opt/observium/poller-wrapper.py 8 >> /dev/null 2>&1

# Run housekeeping script daily for syslog, eventlog and alert log
13 5 * * * root /opt/observium/housekeeping.php -ysel

# Run housekeeping script daily for rrds, ports, orphaned entries in the database and performance data
47 4 * * * root /opt/observium/housekeeping.php -yrptb

重启定时任务进程:

systemctl reload crond

大功告成!

被监控服务器的配置

首先当然是安装SNMP服务了:

yum install -y net-snmp net-snmp-utils

然后编辑 /etc/snmp/snmpd.conf,在最底部加入:

com2sec readonly default TestSecret
group MyROGroup v1 readonly
group MyROGroup v2c readonly
group MyROGroup usm readonly
view all included .1 80
access MyROGroup "" any noauth exact all none none
syslocation Los Angeles, CA
syscontact Stack Network Ltd

启动snmp服务 service snmpd start 并设置开机自启动 chkconfig snmpd on


在实际的使用中遇到了一个问题,就是Observium的数据图不返回数据,全部都是NaN的状态,于是猜想可能是定时任务执行有问题,测试了定时任务中的语句之后发现果然,poller-wrapper.py 在执行的时候提示连接不上数据库。

那么问题就来了,数据库的信息肯定是正确的,不然Observium肯定会运行出错。

自己Google了一下,原来是Python在连接数据库时不能解析 localhost,更换 config.php 中的 db_host 为 127.0.0.1 即可。

添加新评论