通常來說,作為一個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的界面看起來都非常的酷炫!
