介面酷炫,功能強大!這款 Linux 效能實時監控工具超好用!老斯機搞它!

民工哥發表於2020-09-22

對於維護、管理Linux系統來說,它的效能監控非常重要,特別是實時監控資料,這個資料有利於我們判斷伺服器的負載壓力,及時調整資源調配,也有助於更好的服務於業務。所以,今天民工哥給大家安利一款 Linux 效能實時監測工具:Netdata。

先搞張效果圖大家先look look

Netdata介紹

Netdata是一款Linux系統效能實時監控工具。是一個高度優化的Linux守護程式,可以對Linux系統、應用程式(包括但不限於Web伺服器,資料庫等)、SNMP服務等提供實時的效能監控。

Netdata用視覺化的手段,將其被監控的資訊展現出來,以便你清楚的瞭解到你的系統、程式、應用的實時執行狀態,而且還可以與Prometheus,Graphite,OpenTSDB,Kafka,Grafana等相整合。

Netdata是免費的開源軟體,目前可在Linux,FreeBSD和macOS以及從它們衍生的其他系統(例如Kubernetes和Docker)上執行。

Netdata倉庫地址:https://github.com/netdata/ne...

Netdata特性

  • 1、友好、美觀的視覺化介面
  • 2、可自定義的控制介面
  • 3、安裝快速且高效
  • 4、配置簡單,甚至可零配置
  • 5、零依賴
  • 6、可擴充套件,自帶外掛API
  • 7、支援的系統平臺廣

Netdata是如何工作的?

Netdata是一個高效,高度模組化的指標管理引擎。它的無鎖設計使其非常適合度量標準上的併發操作。

上圖的各個元件的作用描述,有興趣的可以參考官方的說明,這裡不再贅述了。

Netdata可監控什麼?

Netdata可以收集來自200多種流行服務和應用程式的指標,以及數十種與系統相關的指標,例如CPU,記憶體,磁碟,檔案系統,網路等。我們將這些收集器稱為,它們由外掛管理,該外掛支援多種程式語言,包括Go和Python。

流行的收集器包括Nginx,Apache,MySQL,statsd,cgroups(容器,Docker,Kubernetes,LXC等),Traefik,Web伺服器access.log檔案等。

詳細的支援列表請參考下面的說明:https://github.com/netdata/ne...

Netdata安裝

1、直接安裝

首先需要更新升級系統核心和一些依賴庫檔案

[root@CentOS7-1 ~]# yum update -y

如果沒有操作,你在直接安裝時會出現下面的提示,輸入y讓系統自動更新也是可以的。

執行完更新操作後,直接執行下面的命令進行安裝Netdata。

[root@CentOS7-1 ~]# bash <(curl -Ss https://my-netdata.io/kickstart.sh)

然後,程式會自動執行安裝動作,去下載一系列的包進行安裝,中間需要確認操作一次,如下:

可能會由於訪問國外的資源,和根據你的網路關係,等待的時間或長或短。

一些關鍵的資訊,從安裝過程中也是可以看的出來的,如上圖。

從上圖資訊可以看出訪問方法,啟動、停止服務的命令。

安裝完成如下圖

顯示Netdata已經啟動完成,我們可以使用命令來檢視一下是否啟動完成?

[root@CentOS7-1 ~]# lsof -i :19999
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
netdata 14787 netdata    4u  IPv4  27995      0t0  TCP *:dnp-sec (LISTEN)
netdata 14787 netdata    5u  IPv6  27996      0t0  TCP *:dnp-sec (LISTEN)
[root@CentOS7-1 ~]# ps -ef|grep netdata
netdata   14787      1  2 23:24 ?        00:00:06 /usr/sbin/netdata -P /var/run/netdata/netdata.pid -D
netdata   14800  14787  0 23:24 ?        00:00:00 /usr/sbin/netdata --special-spawn-server
netdata   14954  14787  0 23:24 ?        00:00:01 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
netdata   14974  14787  0 23:24 ?        00:00:02 /usr/bin/python /usr/libexec/netdata/plugins.d/python.d.plugin 1
root      14975  14787  1 23:24 ?        00:00:04 /usr/libexec/netdata/plugins.d/ebpf.plugin 1
netdata   14976  14787  0 23:24 ?        00:00:01 /usr/libexec/netdata/plugins.d/go.d.plugin 1
netdata   14977  14787  1 23:24 ?        00:00:05 /usr/libexec/netdata/plugins.d/apps.plugin 1
root      15277   1149  0 23:29 pts/0    00:00:00 grep --color=auto netdata

2、Docker方式安裝

首先準備Docker環境,然後直接執行下面的命令即可完成安裝操作。

docker run -d --name=netdata 
  -p 19999:19999 
  -v netdatalib:/var/lib/netdata 
  -v netdatacache:/var/cache/netdata 
  -v /etc/passwd:/host/etc/passwd:ro 
  -v /etc/group:/host/etc/group:ro 
  -v /proc:/host/proc:ro 
  -v /sys:/host/sys:ro 
  -v /etc/os-release:/host/etc/os-release:ro 
  --restart unless-stopped 
  --cap-add SYS_PTRACE 
  --security-opt apparmor=unconfined 
  netdata/netdata

安裝完成後,就可以通過下面的方式進行訪問了。

介面展示

1、總體資料介面

2、記憶體

3、CPU

4、磁碟

5、網路

6、應用

7、網路介面

8、資料同步功能

Netdata儀表板上的圖表彼此同步,沒有主圖表。可以隨時平移或縮放任何圖表,其他所有圖表也將隨之出現。

通過使用滑鼠拖動可以平移圖表。當滑鼠指標懸停在圖表上時,可以使用SHIFT+ 放大/縮小mouse wheel圖表。

Netdata強大之處

之所以如此強大,是因為它與各類應用的配合與支援,直接上圖說明:

Netdata叢集管理方案

上面展示的只是單一伺服器的監控資料,而且netdata有一個缺點就是所有被監控的伺服器都需要安裝agent,所以,這裡就是出現一個問題,就是如何將監控資料統一管理與展示?

netdata官方並沒設計主從模式,像zabbix那樣,可以一臺做為主伺服器,其它的做為從伺服器,將資料收集到主伺服器統一處理與展示,但是,官方也給出了相關的解決方案。

  • 1、netdata.cloud

使用自帶的 netdata.cloud,也就是每一個安裝節點WEB介面右上角的signin。只要我們使用同一個賬號登入netdata.cloud(需要kexue上網),之後各個節點之間就可以輕鬆通過一個賬號控制。每個節點開啟19999埠與允許管理員檢視資料,然後控制中心通過前端從各節點的埠收集的資料,傳給netdata.cloud記錄並展示。

這是一種被動的叢集監控,本質上還是獨立的機器,且不方便做自定義的叢集dashboard。

  • 2、stream 外掛

所以,為了解決上面這種方案的弊端,netdata又提供了另一種方法,將各節點的資料集中彙總到一臺(主)伺服器,資料處理也在這臺伺服器上,其它節點無需開放19999埠。 算是一種主動傳輸模式,把收集到的資料傳送到主伺服器上,這樣在主伺服器上可以進行自定義的dashboard開發。

缺點:主伺服器流量、負載都會比較大(在叢集伺服器數量較多的情況下),如果主伺服器負載過高,我們可以通過設定節點伺服器的資料收集週期(update every)來解決這個問題。

Netdata叢集監控配置

很多文章都只是介紹了其安裝與一些介面的展示結果,並沒有提供叢集監控這一解決方案與其具體的配置,民工哥也是查了很多的資料,現在將其配置過程分享給大家。

對於streaming的配置不熟悉的可以參考官方的文件說明:https://docs.netdata.cloud/st...

1、節點伺服器配置

[root@CentOS7-1 ~]# cd /etc/netdata/
[root@CentOS7-1 netdata]# vim netdata.conf
#修改配置如下
[global]
    memory mode = none
    hostname = [建議修改成你的主機名]
[web]
    mode = none

然後,在/etc/netdata/目錄下新建一個檔案stream.conf,然後將其配置為如下:

[stream]
    enabled = yes
    destination = MASTER_SERVER_IP:PORT
    api key = xxxx-xxxx-xxxx-xxxx-xxxx
    
#引數說明如下
 destination = MASTER_SERVER_IP:PORT  主伺服器地址與埠
 api key 必需為uuid的字串,Linux系統中可以使用下面的命令自動生成。
 [root@CentOS7-1 netdata]# uuidgen
 480fdc8c-d1ac-4d6f-aa26-128eba744089

配置完成之後,需要重啟節點的netdata服務即可完成整個配置。

[root@CentOS7-1 ~]# systemctl restart netdata

2、主伺服器配置

在netdata.conf的同一目錄下新建stream.conf並寫入如下配置:

[API_KEY]/[480fdc8c-d1ac-4d6f-aa26-128eba744089]
    enabled = yes
    default history = 3600
    default memory mode = save
    health enabled by default = auto
    allow from = *
[API_KEY]
    enabled = yes
    default history = 3600
    default memory mode = save
    health enabled by default = auto
    allow from = *
#其中,API_KEY對應節點伺服器的api key(字串),allow from可以設定資料流的允許來源以保證安全。
#如果有多個節點伺服器,則一起寫在stream.conf裡面

完成配置後重啟netdata:

systemctl restart netdata

所有的配置完成後,就可以在主伺服器的WEB介面右上角看到下拉選單(主機名),點選即可看到相關的監控資訊了。

如果需要自定義控制皮膚,可以參考官方的文件,去修改xml檔案。 原文地址:https://docs.netdata.cloud/we...

到這裡,這款實用、酷炫的伺服器效能實時監控工具就介紹完了,原創不易,如有幫助,請點在贊轉發分享支援一下民工哥,你們支援是我最大的創作動力。

image

相關文章