Ganglia是一款為HPC(高性能計算) 叢集設計的可擴充性的分布式監控系統,它可以監視和顯示叢集中節點的各種狀态資訊,他由運作在各個節點上的gmond守護程序來采集 CPU、記憶體、磁盤使用率、I/O負載、網絡流量情況等方面的資料。然後彙總到gmetad守護程序下,使用rrdtool存儲資料,然後将曆史資料以曲線方式通過PHP頁面呈現。這裡用來監控Flume的運作資訊。
1. 安裝配置
- 安裝epel軟體源和httpd、php服務
yum install epel-release
yum -y install httpd php
- 安裝其他依賴
yum -y install rrdtool perl-rrdtool rrdtool-devel
yum -y install apr-devel
- 安裝ganglia的三大元件
yum -y install ganglia-gmetad
# 安裝ganglia-web時間比較久【也有可能是我的網絡不好】
yum -y install ganglia-web
yum install -y ganglia-gmond
- 修改配置檔案
【養成好習慣,修改配置檔案前先備份一下,正所謂有備無患 😏 這裡要修改4個配置檔案】
【第 1️⃣ 個配置:ganglia.conf】
這裡解決了Web頁面報:You don’t have permission to access /ganglia on this server. 的問題。
vim /etc/httpd/conf.d/ganglia.conf
# 原内容
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com
</Location>
# 修改後
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
Require all granted
</Location>
【第 2️⃣ 個配置檔案:gmetad.conf】
vim /etc/ganglia/gmetad.conf
# 配置資料源 名稱 IP位址
data_source "tcloud_source" tcloud
【第 3️⃣ 個配置檔案:gmond.conf】
vim /etc/ganglia/gmond.conf
# 修改後的模樣
cluster {
name = "tcloud_source"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
host = tcloud
port = 8649
ttl = 1
}
udp_recv_channel {
port = 8649
bind = tcloud
retry_bind = true
}
【第 4️⃣ 個配置檔案:/etc/selinux/config】
vim /etc/selinux/config
# 配置這兩項
SELINUX=disabled
SELINUXTYPE=targeted
# selinux修改需要重新開機才能生效 臨時生效指令
[[email protected] ~]# setenforce 0
setenforce: SELinux is disabled
2. 啟動驗證
# 啟動 httpd 服務
[[email protected] ~]# systemctl start httpd.service
# 啟動 gmetad 服務
[[email protected] ~]# systemctl start gmetad.service
# 啟動 gmond 服務
[[email protected] ~]# systemctl start gmond.service
通路 http://tcloud/ganglia 進行驗證
如果出現以上權限問題,修改/var/lib/ganglia目錄的權限:
chmod -R 777 /var/lib/ganglia
成功頁面為:
3. 監控測試
- 修改 ${FLUME_HOME}/conf/flume-env.sh配置
vim /usr/local/flume/conf/flume-env.sh
# 添加一下配置【添加的時候不要換行】這裡是為了大家看得清楚
JAVA_OPTS="
-Dflume.monitoring.type=ganglia
-Dflume.monitoring.hosts=tcloud:8649
-Xms100m -Xmx200m
"
- 啟動一個Flume任務進行測試【我們用 付諸實踐 01 裡的第一個進行舉例】需要注意的是要增加一些監控參數。
# 1.啟動
[[email protected] ~]# flume-ng agent \
-n a1 \
-c conf \
-f /home/flume/test/test-exec-memory-logger.properties \
-Dflume.root.logger=INFO,console \
-Dflume.monitoring.type=ganglia \
-Dflume.monitoring.hosts=tcloud:8649
# 2.發送資料進行測試
[[email protected] ~]# echo "Test" >> /tmp/log.txt
[[email protected] ~]# echo "Ganglia" >> /tmp/log.txt
頁面顯示【雲伺服器性能不行,為了截這張圖等了很久 🚥】:
點選小圖可以看詳情:
圖例說明:
字段(圖表名稱) | 字段含義 |
---|---|
EventPutAttemptCount | source嘗試寫入channel的事件總數量 |
EventPutSuccessCount | 成功寫入channel且送出的事件總數量 |
EventTakeAttemptCount | sink嘗試從channel拉取事件的總數量。這不意味着每次事件都被傳回,因為sink拉取的時候channel可能沒有任何資料。 |
EventTakeSuccessCount | sink成功讀取的事件的總數量 |
StartTime | channel啟動的時間(毫秒) |
StopTime | channel停止的時間(毫秒) |
ChannelSize | 目前channel中事件的總數量 |
ChannelFillPercentage | channel占用百分比 |
ChannelCapacity | channel的容量 |