Netdata---Linux系統效能實時監控平臺部署記錄

散盡浮華發表於2017-08-07

 

通常來說,作為一個Linux的SA,很有必要掌握一個專門的系統監控工具,以便能隨時瞭解系統資源的佔用情況。下面就介紹下一款Linux效能實時監測工具-Netdata,它是Linux系統實時效能監測工具,以web的視覺化方式展示系統及應用程式的實時執行狀態(包括cpu、記憶體、硬碟輸入/輸出、網路等linux效能的資料)。Netdata的web前端響應很快,而且不需要Flash外掛。 UI很整潔,保持著 Netdata 應有的特性。第一眼看上去,你能夠看到很多圖表,幸運的是絕大多數常用的圖表資料(像 CPU,RAM,網路和硬碟)都在頂部。如果你想深入瞭解圖形化資料,你只需要下滑滾動條,或者點選在右邊選單的專案。通過每個圖表的右下方的按鈕,Netdata還能控制圖表的顯示,重置,縮放。Netdata文件地址https://github.com/firehol/netdata/wiki

Netdata用視覺化的手段,將被監測者最細微的細節,展現了出來。這樣便可以清晰地瞭解linux系統和應用程式此時的狀況。Netdata主要功能:

優美的介面:bootstrap框架下的控制介面, 酷炫(主要是dark主題,light主題就沒這感覺了)
自定義的控制介面:你可以使用簡單的HTML程式碼去自定義控制介面(不需要使用javascript)
極其的快速而高效:程式使用C進行編寫(預設安裝下,預計只有2%的單核CPU使用率和少許的記憶體使用率)
零配置:你只需要去安裝它,接著它就會自動地監測一切資料
零依賴:它的靜態網路檔案和網路介面擁有自己的網路伺服器. netdata有自己的web server, 提供靜態web檔案和web API
可擴充套件:用它自身的外掛API(可以使用許多方式來製作它的外掛,從bash到node.js),你可以檢測任何可以衡量的資料。
可嵌入:它可以在任何Linux核心可以執行的地方執行
零維護:只管跑上!
匪夷所思的快。。。所有請求每個metreic都在0.5ms內響應,即便是一臺爛機器
非常高效,每秒採集數千個指標,但僅佔cpu單核1%,少量MB的記憶體以及完全沒有磁碟IO
提供複雜的、各種型別的告警,支援動態閾值、告警模板、多種通知方式等
支撐多種時間序列後端服務,比如graphite, opentsdb, prometheus, json document DBs

監測內容:下面是Netdata目前檢測的內容(大多數都不需要進行配置,安裝後即可開始監測)

1.CPU的使用率,中斷,軟中斷和頻率(總量和每個單核)
2.RAM,互換和核心記憶體的使用率(包括KSM和核心記憶體deduper)
3.硬碟輸入/輸出(每個硬碟的頻寬,操作,整理,利用等)
4.IPv4網路(資料包,錯誤,分片):
TCP:連線,資料包,錯誤,握手
UDP:資料包,錯誤
廣播:頻寬,資料包
組播:頻寬,資料包
5.Netfilter/iptables Linux防火牆(連線,連線跟蹤事件,錯誤等)
6.程式(執行,受阻,分叉,活動等)
7.NFS檔案伺服器,v2,v3,v4(輸入/輸出,快取,預讀,RPC呼叫)
8.網路服務質量(唯一一個可實時視覺化網路狀況的工具)
9.應用程式,通過對程式樹進行分組(CPU,記憶體,硬碟讀取,硬碟寫入,交換,執行緒,管道,套接字等)
10.Apache Web伺服器狀態(v2.2, v2.4)
11.Nginx Web伺服器狀態
12.Mysql資料庫(多臺伺服器,單個顯示:頻寬,查詢/s, 處理者,鎖,問題,臨時操作,連線,二進位制日誌,執行緒,innodb引擎等)
13.ISC Bind域名伺服器(多個伺服器,單個顯示:客戶,請求,查詢,更新,失敗等)
14.Postfix郵件伺服器的訊息佇列(條目,大小)
15.Squid代理伺服器(客戶頻寬和請求,服務頻寬和請求)
16.硬體感測器(溫度,電壓,風扇,電源,溼度等)
17.NUT UPSes(負載,充電,電池電壓,溫度,使用指標,輸出指標)
可以監測任意數量的SNMP服務,不過你需要進行配置,還可以對此軟體進行擴充套件,可以使用任何語言編寫外掛,以此來從任何來源收集資料

下面簡單記錄下Netdata的部署過程(Cetnos下):

netdata下載地址:http://firehol.org/download/netdata/releases/v1.0.0/
autogen下載地址:http://ftp.gnu.org/gnu/autogen/5.11.8/

[root@monit ~]# yum install zlib-devel gcc make git autoconf autogen guile-devel automake pkgconfig
[root@monit ~]# rpm -ivh autogen-5.11.8-5.x86_64.rpm --force                    //yum安裝autogen可能會報錯說沒有此包,那麼就單獨下載autogen的rpm包進行安裝
[root@monit ~]# tar -jvxf netdata-1.0.0.tar.bz2
[root@monit ~]# cd netdata-1.0.0
[root@monit netdata-1.0.0]# ./netdata-installer.sh --install /data

按照上面命令執行後的提示進行安裝,安裝後,netdata會自動重啟。埠為19999
[root@monit ~]# ps -ef|grep netdata
netdata  10976     1  0 17:01 ?        00:00:03 /data/netdata/usr/sbin/netdata
netdata  10982 10976  0 17:01 ?        00:00:00 /bin/bash /data/netdata/usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
netdata  10984 10976  0 17:01 ?        00:00:07 /bin/bash /data/netdata/usr/libexec/netdata/plugins.d/charts.d.plugin 1
root     10986 10976  0 17:01 ?        00:00:04 /data/netdata/usr/libexec/netdata/plugins.d/apps.plugin 1
netdata  29395 10982  0 17:22 ?        00:00:00 sleep 0.998
netdata  29401 10984  0 17:22 ?        00:00:00 sleep 0.2
root     29403 25980  0 17:22 pts/0    00:00:00 grep netdata
[root@monit ~]# lsof -i:19999
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
netdata 10976 netdata    3u  IPv6 499147      0t0  TCP *:dnp-sec (LISTEN)

啟動與關閉
啟動:/data/netdata/usr/sbin/netdata
關閉:killall netdata

或者通過下面方式進行安裝:

1) 安裝準備
Netdata提供了一個非常簡便的安裝方法,只需要執行下面的命令即可完成安裝netdata所依賴的各種東西:
# curl -Ss 'https://raw.githubusercontent.com/firehol/netdata-demo-site/master/install-required-packages.sh' >/tmp/kickstart.sh && bash /tmp/kickstart.sh -i netdata

注意,上面的命令是安裝基本的部分,不包括mysql / mariadb, postgres, named, hardware sensors and SNMP. 如果要完整安裝,則需要執行下面的命令:
# curl -Ss 'https://raw.githubusercontent.com/firehol/netdata-demo-site/master/install-required-packages.sh' >/tmp/kickstart.sh && bash /tmp/kickstart.sh -i netdata-all

2) 安裝Netdata
安裝Netdata也很簡單,按照wiki的說明即可:
# git clone https://github.com/firehol/netdata.git --depth=1
# cd netdata
# ./netdata-installer.sh

注意上面要使用root許可權,執行命令後的提示資訊也很豐富有趣

安裝完後,還可以根據wiki所說的配置開機啟動,照做之後執行service netdata start啟動服務,可以訪問http://localhost:19999/ 看到監控介面。

Netdata的訪問,http://localhost:19999     執行動態效果圖如下:

Netdata backend
Netdata也可以後臺服務收集監控指標,多伺服器的監控指標彙總到前臺展示,或者歸檔彙總後提供給其他工具如grafana, 如下圖:

Netdata支援如下幾個backends:
-  graphite;
-  opentsdb;
-  json document DBs.

Netdata還提供了3種計算模式:
-  as collected;
-  average;
-  sum or volume。

具體的可以到netdata wiki檢視。利用這種方式,應該也較容易能夠折騰出來一個叢集監控的解決方案,並且netdata和grafana的介面看起來都非常的酷炫!

相關文章