一. Ganglia的搭建
Ganglia是一個分佈式的,監控服務器,集羣的開源軟件,能夠用曲線圖表現最近一個小時,最近一天,最近一週,最近一月,最近一年的服務器或者集羣的cpu負載,內存,網絡,硬盤等指標。
Ganglia的強大在於:ganglia服務端能夠通過一臺客戶端收集到同一個網段的所有客戶端的數據,ganglia集羣服務端能夠通過一臺服務端收集到它下屬的所有客戶端數據。這個體系設計表示一臺服務器能夠通過不同的分層能夠管理上萬臺機器。這個功能是其他mrtg,nagios,cacti所不能比擬。
ganglia有兩個Daemon, 分別是:客戶端Ganglia Monitoring Daemon (gmond)和服務端Ganglia Meta Daemon (gmetad),還有Ganglia PHP Web Frontend(基於web的動態訪問方式組成)是一個Linux下圖形化監控系統運行性能的軟件,界面美觀、豐富,功能強大。
(1)安裝ganglia
可以將tar包製作成rpm包然後快速安裝。
在服務機(server3)上
#yum install -y libart_lgpl-devel gcc-c++ python-devel libconfuse-devel-2.6.3.e16.x86_64.rpm pcre-devel expat-devel rrdtool-devel apr-devel rpm-build //製作ganglia的rpm包依賴這些組件。
#rpmbuild -tb ganglia-3.4.0.tar.gz ganglia-web-3.4.2.tar.gz //製作ganglia.rpm 和 ganglia-web.rpm
#rpm -ivh /root/rpmbuild/RPMS/noarch/ganglia-web-3.4.2.1.noarch.rpm /root/rpmbuild/RPMS/x86_64/* //安裝ganglia-web gmetad gmond
#cd /root/rpmbuild/RPMS/x86_64
#scp ganglia-gmond-3.4.0-1.x86_64.rpm ganglia-gmond-modules-python-3.4.0-1.x86_64.rpm libganlia-3.4.0-1.x86_64.rpm 172.25.0.2:
#scp ~/libconfuse* 172.25.0.2: //複製相應組件到客戶端
#vim /etc/ganglia/gmetad.conf
將data_source後面改爲自定義名稱如 big cluster //修改集羣名稱
#/etc/init.d/gmetad start //啓動gmetad服務
#vim gmond.conf 將name後面改爲 big cluster
#/etc/init.d/gmond start //啓動gmond服務(監控本機,所以啓動gmond服務)
#service httpd start
在客戶端(server2)上
#rpm -ivh ganglia-gmond* libganglia-3.4.0-1.x86_64.rpm libconfuse* //安裝gmond
#vim /etc/ganglia/gmond.conf 將name後面改爲big cluster
啓動gmond
Firefox上輸入 172.25.0.3/gweb 如圖
(2) 將ganglia整合到nagios中
在server3上
#tar zxf ganglia-3.4.0.tar.gz
#cd ganglia-3.4.0/contrib
#cp check_ganglia.py /usr/local/nagios/libexec
#chown nagios.nagios check_ganglia.py
#vim check_ganglia.py
編輯成如下圖
//將大於閾值時報警改爲低於閾值報警
#cd /var/lib/ganglia/rrds/big\ cluster
可以看到很多以rrd結尾的文件,這些都是ganglia採集的數據
#/usr/local/nagios/libexec/check_ganglia.py -h server2.example.com -m disk_free_precent_rootfs -w 20 -c 10 //查看根分區使用情況
下面是修改nagios的配置文件(cfg文件)來整合ganglia。
在nagios的command.cfg中,添加
define command {
command_name check_ganglia
command_line $USER1$/check_ganglia.py -h $HOSTADDRESS$ -m $ARG1$ -w
$ARG2$ -c $ARG3$
}
在hosts.cfg中,添加
define host {
use linux-server
host_name server4.example.com
address 172.25.0.4
}
define hostgroup {
hostgroup_name ganglia-servers
alias ganglia-servers
members server4.example.com
}
並在hostgroup中添加server4.example.com //添加了被監控機server4,相應配置與server2一樣
在templates.cfg中,添加
define service {
use local-service
name ganglia-service
hostgroup_name ganglia-server
sservice_groups ganglia-metrics
}
在nagios的service.cfg中,添加
define servicegroup {
servicegroup_name ganglia-metrics
alias Ganglia Metrics
}
define service{ ganglia-service
use ganglia-service
Service-description根分區
check_command check_ganglia!disk_free_percent_rootfs!20!10
}
define service{
use ganglia-service
service_description 內存空閒
check_command check_ganglia!mem_free!50000!30000
}
#service nagios retart
整合完成。
二. Zabbix的搭建
Zabbix 是一款功能強大的分佈式開源監控系統,可以提供企業級的開源分佈式監控解決方案。天生自帶分佈式監控,大批量主機運維監控優勢明顯。
Zabbix 通過 C/S 模式採集數據,通過 B/S 模式在 web 端展示和配置。
被監控端:主機通過安裝 agent 方式採集數據,網絡設備通過 SNMP 方式採集數據
Server 端:通過收集 SNMP 和 agent 發送的數據,寫入數據庫(MySQL,ORACLE 等),再通過 php+apache 在 web 前端展示。
Zabbix 運行條件:
Server:Zabbix Server 需運 行在 LAMP( Linux+Apache+Mysql+PHP)環 境下( 或者
LNMP),對硬件要求低
Agent:目前已有的 agent 基本支持市面常見的 OS,包含 Linux、HPUX、Solaris、Sun、
windows
SNMP:支持各類常見的網絡設備
(1) 安裝zabbix
在server端(server3)上
#yum install zabbix-2.4.5-1.el6.x86_64.rpm zabbix-agent-2.4.5-1.el6.x86_64.rpm zabbix-server-mysql-2.4.5-1.el6.x86_64.rpm zabbix-web-2.4.5-1.el6.noarch.rpm zabbix-web-mysql-2.4.5-1.el6.noarch.rpm php-bcmath-5.3.3-26.el6.x86_64.rpm php-mbstring-5.3.3-26.el6.x86_64.rpm zabbix-server-2.4.5-1.el6.x86_64.rpm fping-2.4b2-16.el6.x86_64.rpm iksemel-1.4-2.el6.x86_64.rpm iksemel-utils-1.4-2.el6.x86_64.rpm
//安裝zabbix-server,zabbix-agent,zabbix的web支持
在agent端(server2)上
#rpm -ivh zabbix-agent-2.4.5-1.e16.x86_64.rpm zabbix-2.4.5-1.e16.x86_64.rpm //安裝zabbix-agent
在server3上,
在mysql上創建zabbix庫並加入一個 zabbix用戶 密碼redhat
mysql->create database zabbix character set utf8 collate utf8_bin;
->grant all privileges on zabbix.* to zabbix@localhost identified by 'redhat';
#cd /usr/share/doc/zabbix-server-mysql-2.4.5/create/
#mysql -uzabbix -predhat zabbix < schema.sql
#mysql -uzabbix -predhat zabbix < images.sql
#mysql -uzabbix -predhat zabbix < data.sql //將zabbix的mysql組件導入到zabbix用戶的zabbix庫中
#vim /etc/zabbix/zabbix_server.conf
將DBPassword後面改爲 redhat,(修改zabbix配置文件的數據庫密碼)
重啓httpd,zabbix-server
在瀏覽器上輸入172.25.0.3/zabbix/,啓動zabbix 的web界面。
php time zone error主要是在php.ini文件中未設置導致,編輯php.文件(vim /etc/php.ini)
選擇Asia/Shanghai,記得去掉前面的分號。
保存退出後重啓httpd服務:service httpd restart
進入網頁zabbix,然後點擊retry或者刷新即可。
配置如下
Database type Mysql
Database host localhost
Database port 0 (0爲數據庫默認端口)
Databasename zabbix
User zabbix
Password redhat
點擊test connection,成功後點擊next,然後配置如下:
Host 172.25.0.3
Port 10051
Name server3.example.com
點擊next後輸入默認用戶名和密碼爲Admin/zabbix
在server2上,
#vim /etc/zabbix/zabbix_agentd.conf //修改zabbix_agent配置
Server=172.25.0.3
ServerActive=172.25.0.3
將Hostname 改爲server2.example.com,
重啓zabbix-agent服務。
在server3上,同上。不過server2改爲server3.
(2) 讓zabbix發現主機。
在zabbix的web界面上,點擊 configuration-> actions ->auto register-> create action
自定義name
在operation選項卡中
添加 add host 自動註冊主機添加到hosts列表
Add to host groups 自動註冊主機加入任一組如linux servers
Link to templates 自動註冊主機應用模板 template os linux
點擊configuration -> hosts可以看到新加的主機
(3)配置監控服務
以http服務爲例,點擊configure -> templates 選擇需要鏈接的模板template app http service
選擇需要鏈接的主機 server2.example.com
這樣主機server2.example.com的監控項中就出現了http服務
監控zabbix_server上的mysql服務
添加mysql模板
在/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 文件中指定了 zabbix agent 如何獲取 mysql服務的各種信息, 可以在 zabbix_server.conf 文件中找到密碼。
在server3上,
#mysqladmin -uzabbix -pwestos ping //檢查mysqld是否運行
#mkdir /var/lib/zabbix
#vim /var/lib/zabbix/.my.cnf //在/var/lib/zabbix目錄中新建“.my.cnf”文件,用以指定 zabbix agent 如何登陸數據庫,默認使用的是 zabbix 用戶
寫入
[mysql]
host = localhost
user = zabbix
password = westos
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = zabbix
password = westos
socket = /var/lib/mysql/mysql.sock
重啓zabbix-agent zabbix-server
在web上即可看到統計圖表
點擊Configuration->hosts->zabbix server Graphs即可看到關於mysql的兩個監控圖形
(4)Zabbix報警
使用110雲告警:
登陸www.onealert.com 註冊帳號,掃描二維碼綁定微信。按照網頁中的文檔說明安裝配置110雲告警插件。告警方式有郵件,微信,電話,短信等。
總結
zabbix的主要特點:
- 安裝與配置簡單,學習成本低
- 支持多語言(包括中文)
- 免費開源
- 自動發現服務器與網絡設備
- 分佈式監視以及WEB集中管理功能
- 可以無agent監視
- 用戶安全認證和柔軟的授權方式
- 通過WEB界面設置或查看監視結果
- email等通知功能
Zabbix主要功能:
- CPU負荷
- 內存使用
- 磁盤使用
- 網絡狀況
- 端口監視
- 日誌監視