過去要監測系統及記錄,常會用到 MRTG,這主要是測網路的工具用,但若要偵測Linux本身,要參考許多資料才能夠設起來。但現在有 Monitorix,大幅縮減設定的方式。
安裝 monitorix
$ wget https://aur.archlinux.org/packages/pe/perl-config-general/perl-config-general.tar.gz
$ cd perl-config-general
$ makepkg -g >> PKGBUILD
$ makepkg -s
$ sudo pacman -U perl-config-general-2.52-1-any.pkg.tar.xz
$ wget https://aur.archlinux.org/packages/mo/monitorix/monitorix.tar.gz
$ tar zxvf monitorix.tar.gz
$ makepkg -g >> PKGBUILD
$ makepkg -s
#同時會需要裝一堆的 perl 套件
$ sudo pacman -U monitorix-3.3.0-2-any.pkg.tar.xz
裝完此套件之後有這個提醒:
----------------------------------------------------------------------
Consider having your rrd databases for monitorix reside in RAM.
https://aur.archlinux.org/packages/anything-sync-daemon
----------------------------------------------------------------------
Optional dependencies for monitorix
anything-sync-daemon: offload your databases to tmpfs to save i/o to your disk.
hddtemp: enable support for hdd temp monitoring.
lm_sensors: enable support for system temp monitoring.
nvidia: enable support for nVidia card temp and usage monitoring.
smartmontools: enable support for hdd bad sector monitoring.
terminus-font: if graphs do not contain characters, you may need this font package.
就是建議裝這些工具套件,才有助於去偵測機器實體的狀態,由於我的機器非nvidia的顯卡,此套件之外都加裝。
其中 anything-sync-daemon 在此 https://aur.archlinux.org/packages/anything-sync-daemon/ 而需自建,這個工具是把常要寫的 rrd 檔寫到記憶體裡的 tmpfs,減少系統的IO,安裝好此套件後,修改 /etc/asd.conf 以下的內容:
WHATTOSYNC=('/srv/http' '/var/lib/monitorix')
VOLATILE="/dev/shm"
然後 systemctl enable asd 及 systemctl start asd,
就會看到 /var/log/ 的目錄裡:
lrwxrwxrwx 1 root root 35 Oct 14 09:52 monitorix -> /dev/shm/asd-root/var/lib/monitorix
這也可用在那常常被讀寫希望減少IO的目錄設定上。
然後繼續安裝:
$ sudo pacman -S hddtemp lm_sensors smartmontools terminus-font
執行 sensors 看是否可偵測到相關的溫度資訊:
$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +27.8°C (crit = +106.0°C)
temp2: +29.8°C (crit = +106.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +34.0°C (high = +85.0°C, crit = +105.0°C)
Core 0: +25.0°C (high = +85.0°C, crit = +105.0°C)
Core 1: +34.0°C (high = +85.0°C, crit = +105.0°C)
Core 2: +25.0°C (high = +85.0°C, crit = +105.0°C)
Core 3: +32.0°C (high = +85.0°C, crit = +105.0°C)
pkg-temp-0-virtual-0
Adapter: Virtual device
temp1: +33.0°CA
接著設定 /etc/monitorix.conf 讓 monitorx 要顯示哪些的項目,大部份可用預設值,然後發現有些不能顯示出來的時候,再來改這設定檔,像 lmsens disk 等設定打開,也要看所預設的 log 的位置是否與實際不同,詳細的參數設定可參考 Manual Reference Pages - monitorix.conf。
在 apache 的設定檔案指定
Alias /monitorix /usr/share/monitorix
ScriptAlias /monitorix-cgi /usr/share/monitorix/cgi
<Directory /usr/share/monitorix/>
DirectoryIndex index.html
Order Allow,Deny
Allow from all
</Directory>
<Directory /usr/share/monitorix/cgi/>
DirectoryIndex monitorix.cgi
Options ExecCGI
#Order Deny,Allow
#Deny from all
#Allow from 1.2.3
Order Allow,Deny
Allow from all
</Directory>
並設定 monitorix 的服務每次開機都啟動:
$ sudo systemctl enable monitorix
$ sudo systemctl start monitorix
剛開始從網頁看的時候 http://1.2.3.4/monitorix 的時候,因都還沒有值,過一陣子才會看出值的變化才在圖表裡有所顯示。
參考資料:
Monitorix。Linux效能監控~MRTG真的可以丟掉了~
安裝在 redhat enterprise 5.8 32bit啟動時有下列訊息 ..
[ABCO-TEST:root:~]# /etc/init.d/monitorix start
Starting monitorix: Can't locate HTTP/Server/Simple/CGI.pm in @INC (@INC contains: /usr/bin/lib /usr/lib/monitorix /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/monitorix/HTTPServer.pm line 27.
BEGIN failed--compilation aborted at /usr/lib/monitorix/HTTPServer.pm line 27.
Compilation failed in require at /usr/bin/monitorix line 30.
BEGIN failed--compilation aborted at /usr/bin/monitorix line 30.
檢查CGI路徑 :
[ABCO-TEST:root:~]# find / -name CGI.pm
/usr/lib/perl5/5.8.8/CGI.pm
/usr/lib/perl5/vendor_perl/5.8.8/CGI.pm
沒法啟動耶 ... 請問哪位高手可解?
我的Linux環境為:
<pre class="c" name="code">$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.10 (Tikanga)
你的 monitorix 的版本為何?
<pre class="c" name="code">$ rpm -q monitorix
monitorix-2.5.2-1.el5.rf
我裝好 monitorix 後,所有的檔案也只是這些:
$ rpm -ql monitorix
/etc/httpd/conf.d/monitorix.conf
/etc/logrotate.d/monitorix
/etc/monitorix.conf
/etc/rc.d/init.d/monitorix
/usr/bin/monitorix
/usr/share/doc/monitorix-2.5.2
/usr/share/doc/monitorix-2.5.2/COPYING
/usr/share/doc/monitorix-2.5.2/Changes
/usr/share/doc/monitorix-2.5.2/README
/usr/share/doc/monitorix-2.5.2/README.FreeBSD
/usr/share/doc/monitorix-2.5.2/README.OpenBSD
/usr/share/doc/monitorix-2.5.2/README.nginx
/usr/share/doc/monitorix-2.5.2/monitorix-alert.sh
/usr/share/man/man5/monitorix.conf.5.gz
/usr/share/man/man8/monitorix.8.gz
/usr/share/monitorix/cgi-bin/monitorix.cgi
/usr/share/monitorix/imgs
/usr/share/monitorix/logo_bot.png
/usr/share/monitorix/logo_top.png
/usr/share/monitorix/monitorixico.png
/var/lib/monitorix/reports/ca.html
/var/lib/monitorix/reports/de.html
/var/lib/monitorix/reports/en.html
/var/lib/monitorix/reports/it.html
/var/lib/monitorix/reports/pl.html
/var/lib/monitorix/reports/send_reports
/var/lib/monitorix/usage
在 redhat, fedora, centOS 裡,需要都用屬於同一版本的rpm套件,包括monitorix版本,及執行的時候所缺的perl套件;如果你一定要裝某些套件最新版本的話,在這一系列的linux系統,就很容易碰到套件版本不相容的問題。
/usr/lib/monitorix/HTTPServer.pm
這個檔案是新版才有的:
<pre class="c" name="code">$ pacman -Q monitorix
monitorix 3.2.1-1
$ pacman -Ql monitorix | grep HTTPServer
monitorix /usr/lib/monitorix/HTTPServer.pm
相對應要用的perl版本是
<pre class="c" name="code">$ pacman -Q perl
perl 5.18.1-1
而在你的centOS的perl官方預設的版本是5.8.8,最好是把你的monitorix降到找得到centOS5.x包好的monitorix之RPM,不然若要配合最新monitorix,要更新perl較新的版本,但又會牽一髮而動全身,造成整個centOS很多套件變動而不穩。
redhat系列的Linux,rpm之間太多的相依,要裝某軟體的最新版本,除非官方有提供或找得到同版本平台包好的rpm是比較不會碰到問題,不然你自行編譯,或硬裝非同版本的rpm雖裝得起來,不見得一定會成功。