開源監控軟體對比 Cacti(英文含義仙人掌) 是一套基於PHP、MySQL、SNMP和RRDtool開發的網路流量監測圖形分析工具,它通過snmpget來獲取數據使用RRDtool繪圖,簡化RRDtool使用。提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、主機設備以及任何一...
開源監控軟體對比
- Cacti(英文含義仙人掌)
是一套基於PHP、MySQL、SNMP和RRDtool開發的網路流量監測圖形分析工具,它通過snmpget來獲取數據使用RRDtool繪圖,簡化RRDtool使用。提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、主機設備以及任何一張圖,還可以與LDAP結合進行用戶認證,同時也能自定義模板。在歷史數據展示監控方面,其功能相當不錯。
Cacti通過添加模板,使不同設備的監控添加具有可復用性,並且具備可自定義繪圖的功能,具有強大的運算能力(數據的疊加功能)
- nagios
Nagios是一款開源的免費網路監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網路設置,印表機等。
Nagios 可以監控的功能有:
1、監控網路服務(SMTP、POP3、HTTP、NNTP、PING等);
2、監控主機資源(處理器負荷、磁碟利用率等);
3、簡單地插件設計使得用戶可以方便地擴展自己服務的檢測方法;
4、並行服務檢查機制;
5、具備定義網路分層結構的能力,用"parent"主機定義來表達網路主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態;
6、當服務或主機問題產生與解決時將告警發送給聯繫人(通過EMail、簡訊、用戶定義方式);
7、具備定義事件句柄功能,它可以在主機或服務的事件發生時獲取更多問題定位;
8、自動的日誌回滾;
9、可以支持並實現對主機的冗餘監控;
10、可選的WEB界面用於查看當前的網路狀態、通知和故障歷史、日誌文件等;
- Ganglia
是一個跨平臺的、可擴展的、高性能的分散式監控系統,如集群和網格。它基於分層設計,使用廣泛的技術,用RRDtool存儲數據。具有可視化界面,適合對集群系統的自動化監控。其精心設計的數據結構和演算法使得監控端到被監控端的連接開銷非常低。目前已經有成千上萬的集群正在使用這個監控系統,可以輕鬆的處理2000個節點的集群環境。
Ganglia的強大在於:ganglia服務端能夠通過一臺客戶端收集到同一個網段的所有客戶端的數據,ganglia集群服務端能夠通過一臺服務端收集到它下屬的所有客戶端數據。
- Zabbix
是一個基於web界面的分散式監控系統,支持多種採集方式採集客戶端,有專用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多種協議,它將採集到的數據存放到資料庫,然後對其進行分析整理,達到條件觸發告警。其靈活的擴展性和豐富的功能是其他監控系統所不能比的。
結論:
從以上各種監控系統的對比來看,Zabbix都是具有優勢的,其豐富的功能、可擴展的能力、二次開發的能力和簡單易用的特點,讀者只要稍加學習,即可構建自己的監控系統。
Zabbix
選擇zabbix的理由:
- 安裝與配置簡單,學習成本低
- 支持多語言(包括中文)
- 免費開源
- 數據採集到資料庫,可二次分析監控數據的。
- 自動發現伺服器與網路設備
- 分散式監視以及WEB集中管理功能
- 可以無agent監視
- 用戶安全認證和柔軟的授權方式
- 通過WEB界面設置或查看監視結果
- email等通知功能
等等
組成:
zabbix server:可以通過SNMP、zabbixagent、ping、埠監視等方法提供對遠程伺服器/網路狀態的監視,數據收集等功能,它可以運行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平臺之上。
zabbix agent(可選組件):安裝在被監視的目標伺服器上,它主要完成對硬體信息或與操作系統有關的記憶體,CPU等信息的收集。
生命周期
目前推薦使用Zabbix2.2
安裝
準備:
epel源、mysql已安裝(yum install mysql-server)、zabbix官方倉庫(http://repo.zabbix.com/)
1. 安裝epel源
# wget –O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
2. 安裝Zabbix官方源碼:
#rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
安裝zabbix server:
3. 安裝依賴包yum install -y OpenIPMI
4. yum install -y zabbix-server zabbix-server-mysql
5. 創建資料庫
mysql> create database zabbix; mysql> grant all on zabbix.* to zabbix@localhost identified by "zabbix_pass"; # mysql -uzabbix -pzabbix_pass -hlocalhost zabbix # 測試 # rpm -ql zabbix-server-mysql 導入server端數據表(註意順序): # mysql -uzabbix -pzabbix_pass -hlocalhost zabbix </usr/share/doc/zabbix-server-mysql-2.2.11/create/schema.sql <--導入數據結構 #mysql -uzabbix -pzabbix_pass -hlocalhost zabbix </usr/share/doc/zabbix-server-mysql-2.2.11/create/images.sql <--導入圖片 # mysql -uzabbix -pzabbix_pass -hlocalhost zabbix </usr/share/doc/zabbix-server-mysql-2.2.11/create/data.sql <--導入數據
6. 修改配置文件 # vim /etc/zabbix/zabbix_server.conf <--增加zabbix使用資料庫的密碼
[root@zabbix-server ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix_pass <--需修改同資料庫設置
DBSocket=/tmp/mysql.sock
SNMPTrapperFile=/var/log/snmptt/snmptt.log
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
7. 啟動zabbix server:
#service zabbix-server start
# netstat -ntlpu|grep 10051 ß檢查啟動狀態
# chkconfig zabbix-server on ß添加開機啟動
server端安裝zabbix web:
1. # yum install zabbix-web zabbix-web-mysql
預設安裝了httpd服務,啟動httpd
# chkconfig httpd on ß添加開機啟動
2. 訪問http://ip/zabbix進入安裝
==>解決:修改時區 # vim /etc/httpd/conf.d/zabbix.conf
3. 登錄預設用戶admin 密碼:zabbix
4. 修改字體
vim /usr/share/zabbix/include/locales.inc.php
yum -y install wqy-microhei-fonts ß安裝中文字體集
rm -f /etc/alternatives/zabbix-web-font #刪除原有字體連接文件
ln -s /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /etc/alternatives/zabbix-web-font
安裝agent
客戶端和服務端都安裝
1. # yum install -y zabbix-agent
# vim /etc/zabbix/zabbix_agentd.conf //修改被動模式IP為zabbix server ip
註:(一個Agent是可以同時向多個伺服器端發送數據,多個Ip用逗號隔開)
Server:被動模式,允許哪台伺服器連接Agent。
ServerActive:主動模式,向哪台伺服器傳送數據。
# /etc/init.d/zabbix-agent start //啟動agent
# netstat -lntp |grep 10050 //驗證埠
如果提示不能正常運行,分別檢查zabbix_server.conf中的各項配置文件、Selinux、Iptables等。配置文件請檢查以下文件的正確配置參數。
1./etc/zabbix/zabbix_server.conf中的參數。
#
DBHost=localhost ß資料庫的IP(功能變數名稱)地址
DBName=zabbix ß資料庫的名稱
DBUser=zabbix ß資料庫的用戶
DBPassword=zabbix ß資料庫的密碼
2./etc/zabbix/web/zabbix.conf.php中的配置。
[root@linux-node1 ~]# cat
/etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;
$DB[‘TYPE’] = ‘MYSQL’; //資料庫類型
$DB[‘SERVER’] = ‘localhost’; //資料庫的IP(功能變數名稱)地址
$DB[‘PORT’] = ‘0’; //資料庫的埠
$DB[‘DATABASE’] = ‘zabbix’; //資料庫的名稱
$DB[‘USER’] = ‘zabbix’; //資料庫的用戶
$DB[‘PASSWORD’] = ‘zabbix’; //資料庫的密碼
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB[‘SCHEMA’] = ”;
$ZBX_SERVER = ‘localhost’; ßZabbix-Server的IP(功能變數名稱)地址
$ZBX_SERVER_PORT = ‘10051’; ßZabbix-Server的埠
$ZBX_SERVER_NAME = ‘Zabbix-Xuliangwei’; ßZabbix-Server web界面的標識
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>
監控流程
Zabbix-Get使用
Zabbix-Get是Zabbix中的一個程式,用於Zabbix-Server到Zabbix-Agent的數據獲取,通常可以用來檢測驗證Agent的配置是否正確。
用法:zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key>
-s:遠程Zabbix-Agent的IP地址或者是主機名。
-p:遠程Zabbix-Agent的埠。
-l:本機出去的IP地址,用於一臺機器中又多個網卡的情況。
-k:獲取遠程Zabbix-Agent數據所使用的Key。
實現監控cpu(zabbix server主機上操作)
# yum install -y zabbix-get //安裝zabbix-get工具
# zabbix_get -s 192.168.3.113 -k system.cpu.util[,user]
Agent數據採集方式:passive、active
Other Agent:SNMP、IPMI、Java Gateway
到此記錄,謝謝觀摩,待續…