Flume監控之Ganglia

Mark_ZQ發表於2020-11-27

Ganglia簡介

Ganglia是UC Berkeley發起的一個開源叢集監視視覺化工具,設計用於測量數以千計的節點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要是用來監控系統效能,如:cpu 、mem、硬碟利用率, I/O負載、網路流量情況等,通過曲線很容易見到每個節點的工作狀態,對合理調整、分配系統資源,提高系統整體效能起到重要作用。
其詳細介紹和工作原理請參考百度百科,地址:https://baike.baidu.com/item/Ganglia/1283012?fr=aladdin

一. Ganglia的安裝與部署

1. 安裝httpd服務與php

[root@cos100 flume]# sudo yum -y install httpd php
  • 1

2. 安裝其他依賴

[root@cos100 flume]# sudo yum -y install rrdtool perl-rrdtool rrdtool-devel apr-devel
  • 1

3. 安裝Ganglia

1). 匯入rpm源

[root@cos100 flume]# sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  • 1

2). 安裝rpm的三大元件

[root@cos100 flume]# sudo yum -y install ganglia-gmetad ganglia-web ganglia-gmond
  • 1

4. 修改配置檔案ganglia.conf(修改前端訪問許可權)

[root@cos100 flume]# sudo vim /etc/httpd/conf.d/ganglia.conf
  • 1

修改為如下:

# Ganglia monitoring system php web frontend
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
  Order deny,allow
  #Deny from all
  Allow from all
  # Allow from 127.0.0.1(只能通過本地訪問)
  # Allow from ::1
  # Allow from .example.com
</Location>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5. 修改配置檔案gmetad.conf(修改data_source)

[root@cos100 flume]# sudo vim /etc/ganglia/gmetad.conf
  • 1

修改為如下:
其中"cos100"為本地主機名

data_source "cos100" cos100
  • 1

或:

data_source "cos100" 192.168.xx.x
  • 1

6. 修改配置檔案gmond.conf(修改監控的資料來源)

[root@cos100 flume]# sudo vim /etc/ganglia/gmond.conf
  • 1

在檔案中尋找cluster{},udp_send_channel{},udp_recv_channel{}三個組並修改如下:

cluster {
  # 本機主機名
  name = "cos100"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
udp_send_channel {
  #bind_hostname = yes # Highly recommended, soon to be default.
                       # This option tells gmond to use a source address
                       # that resolves to the machine's hostname.  Without
                       # this, the metrics may appear to come from any
                       # interface and the DNS names associated with
                       # those IPs will be used to create the RRDs.
  # mcast_join = 239.2.11.71
  # 本機IP
  host = 192.168.xx.x
  port = 8649
  ttl = 1
}
udp_recv_channel {
  # mcast_join = 239.2.11.71
  port = 8649
  # 本機IP
  bind = 192.168.xx.x
  retry_bind = true
  # Size of the UDP buffer. If you are handling lots of metrics you really
  # should bump it up to e.g. 10MB or even higher.
  # buffer = 10485760
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

7. 修改selinux配置

[root@cos100 flume]# sudo vim /etc/selinux/config
  • 1

設定其中的SELINUX=disabled從而關閉Selinux。
設定完畢需要重啟虛擬機器,如果暫時不想重啟,則必須使之臨時生效

[root@cos100 flume]# sudo setenforce 0
  • 1

8. 啟動ganglia

[root@cos100 flume]# sudo service httpd start
  • 1
[root@cos100 flume]# sudo service gmetad start
  • 1
[root@cos100 flume]# sudo service gmond start
  • 1

9. 網頁上瀏覽Ganglia頁面

開啟網頁,輸入網址:http://cos100/ganglia即可顯示如下頁面:
在這裡插入圖片描述注意:如果完成如上配置,訪問網頁顯示許可權不足,如下圖所示:
在這裡插入圖片描述
此情況為/var/lib/ganglia目錄的許可權不足問題導致,授予許可權即可

[root@cos100 flume]# sudo chmod -R 777 /var/lib/ganglia
  • 1

二. 使用Ganglia監控Flume

1. 修改Flume配置檔案flume-env.sh

[root@cos100 flume]# vim conf/flume-env.sh
  • 1

在檔案中增加如下內容:

JAVA_OPTS="-Dflume.monitoring.type=ganglia
-Dflume.monitoring.hosts=cos100:8649
-Xms100m
-Xmx200m"
  • 1
  • 2
  • 3
  • 4

2. 啟動Flume任務

[root@cos100 flume]# bin/flume-ng agent --conf conf/ --name a1 --conf-file job/flume-netcat-logger.conf -Dflume.root.logger==INFO,console -Dflume.monitoring.type=ganglia -Dflume.monitoring.hosts=cos100:8649
  • 1

此時即可在網頁檢視Flume的狀態,如下紅色框選部分
1). Grid下拉框選擇Source為本機主機名
2). 點選選擇進入新的網頁後繼續選擇Node為本機主機名
3). 點選選擇進入網頁後在如下右側框選下拉框部分選擇Metric Group為flume
在這裡插入圖片描述
選擇完成後即顯示Flume的狀態頁面
在這裡插入圖片描述
此時,Flume便被Ganglia實時監控。

3. 傳送資料觀察Ganglia監測圖

新開一個客戶端視窗,通過netcat實時生產資料

[root@cos100 flume]# nc localhost 44444
hello world 
OK
  • 1
  • 2
  • 3

服務端監控頁面顯示:

2020-02-18 04:59:02,343 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 68 65 6C 6C 6F 20 77 6F 72 6C 64 20             hello world  
  • 1

網頁Flume監控頁面顯示:
在這裡插入圖片描述
如下為各個監控頁面的具體說明:

圖表名稱具體說明
EventPutAttemptCountsource嘗試寫入channel的事件總數量
EventPutSuccessCount成功寫入channel且提交的事件總數量
EventTakeAttemptCountsink嘗試從channel拉取事件的總數量。這不意味著每次事件都被返回,因為sink拉取的時候channel可能沒有任何資料。
EventTakeSuccessCountsink成功讀取的事件的總數量
StartTimechannel啟動的時間(毫秒)
StopTimechannel停止的時間(毫秒)
ChannelSize目前channel中事件的總數量
ChannelFillPercentagechannel佔用百分比
ChannelCapacitychannel的容量

完畢!

相關文章