參考官方在 CentOS6 或 CentOS7 安裝 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
Hi 版主您好,想請教您 目前安裝得版本是19.8.1 沒辦法正常出圖,也有確認config.php
回覆刪除後方?> 以及前方的空白處 都無錯誤,但就是沒辦法正常出圖...
很抱歉,這已經是很久以前測試的東西,實際上我們也沒有使用這個套件,並更新版本,你可能需要自己再 google 看看。
刪除