2016年2月1日

如何在 CentOS 安裝 Observium

參考官方在 CentOS6CentOS7 安裝 Observium 的文件,以下記錄如何在 CentOS 安裝 Observium。

安裝相關套件

因應 Observium 的套件相依性,安裝一些需要的套件,以下沒有將 MySQL 列進去,假設已經安裝好了。

yum -y install wget httpd php php-mysql php-gd php-posix php-mcrypt php-pear php-pear.noarch \
vixie-cron net-snmp net-snmp-utils fping MySQL-python rrdtool subversion \
jwhois ipmitool graphviz ImageMagick

有的文章說,要監控 VM 還需要安裝 libvirt

yum -y install libvirt

安裝 observium

直接下載 observium community version,解壓縮就好了。

cd /opt

wget http://www.observium.org/observium-community-latest.tar.gz
tar zxvf observium-community-latest.tar.gz

然後建立 observium MySQL DB 以及帳號。

mysql -u root -p

CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON observium.* TO 'observium'@'localhost' IDENTIFIED BY 'password';

切換到 observium 目錄,處理設定檔,填寫 fping 以及 mysql db 帳號及密碼。

cd observium

cp config.php.default config.php
vi /opt/observium/config.php

config.php 異動的內容如下

# 修改 db username, password
$config['db_user'] = 'observium';
$config['db_pass'] = 'password';

# 新增一行 fping 設定
$config['fping'] = "/usr/sbin/fping";

呼叫此 php 程式,安裝 observium 資料庫

php /opt/observium/includes/update/update.php

建立 logs 以及 rrd 的目錄

# log dir
mkdir /opt/observium/logs
chown apache:apache /opt/observium/logs

# rrd dir
mkdir /opt/observium/rrd
chown apache:apache rrd

設定 observium 虛擬網站的網頁目錄

vi /etc/httpd/conf.d/observium.conf

<VirtualHost *:80>
    DocumentRoot /opt/observium/html/
    ServerName  observium.domain.com
    CustomLog /opt/observium/logs/access_log combined
    ErrorLog /opt/observium/logs/error_log
    <Directory "/opt/observium/html/">
        AllowOverride All
        Options FollowSymLinks MultiViews
    </Directory>
</VirtualHost>

建立帳號,level 10 是 admin

## Add a first user, use level of 10 for admin:
cd /opt/observium
./adduser.php admin password 10

新增一個要監控的機器,hostname 的地方一定只能填 hostname,不能填 IP,如果沒有 domain name,就自訂一個 hostname,並把 hostname ip 對應填寫到 /etc/hosts 裡面。

後面的 public 是 SNMP 的 community string,v2c 是 SNMP 版本號碼,所以這個部分的設定的前提,是被監控的機器要先將 snmpd 設定好。

## Add a first device to monitor, hostname 的地方不能填 ip
./add_device.php hostname public v2c

這裡是要自動 discover 機器的功能。

## Do an initial discovery and polling run to populate the data for the new device:
./discovery.php -h all
./poller.php -h all

調整 cronjob

新增一個檔案 /etc/cron.d/observium,內容如下

33  */6   * * *   root    /opt/observium/discovery.php -h all >> /dev/null 2>&1
*/5 *      * * *   root    /opt/observium/discovery.php -h new >> /dev/null 2>&1
*/5 *      * * *   root    /opt/observium/poller-wrapper.py 2 >> /dev/null 2>&1

以指令要求 crond 重新讀取設定檔

/etc/init.d/crond reload

將 observium 的結果 email 出來的方法

因為 observium 並沒有自動產生報表送出結果的功能,參考這個網頁 [http://blog.pdurante.com/2014/04/11/configure-email-reports-with-observium/] 的方法,可以用 script 的方式,透過 rrdtool 取得 observium 的流量圖。

方法簡述如下:首先找到想要 email 的流量圖,在 observium 的網頁上,點擊 "RRD COMMAND" 取得產生這個圖片的 RRD 指令,接下來就能利用 script 的方式,自動執行 script 並將結果 email 給特定的人員。

note

#!/bin/bash
## 昨天
start_time=`date +%Y-%m-%d --date="-1 day"`
start_time_s=`date +%s -d ${start_time}`

## 昨天 +86400 seconds
end_time_s=$((start_time_s+86400))
echo "start_time="${start_time}", start_time_s="${start_time_s}", end_time_s="${end_time_s}

## 上週一
start_week=`date +%Y-%m-%d -d 'last monday'`
start_week_s=`date +%s -d ${start_week}`
## 這週一
end_week=`date +%Y-%m-%d -d 'monday'`
end_week_s=`date +%s -d ${end_week}`
echo "start_week="${start_week}", start_week_s="${start_week_s}
echo "  end_week="${end_week}",   end_week_s="${end_week_s}

## 上個月 1 日
start_month=`date +%Y-%m-01 --date="-1 month"`
start_month_s=`date +%s -d ${start_month}`
## 這個月 1 日
end_month=`date +%Y-%m-01`
end_month_s=`date +%s -d ${end_month}`

echo "start_month="${start_month}", start_month_s="${start_month_s}
echo "  end_month="${end_month}",   end_month_s="${end_month_s}

mkdir -p ~/chart/${start_time}

# cpu
# memory
# eth0