對於維護、管理Linux系統來講,它的性能監控很是重要,特別是實時監控數據,這個數據有利於咱們判斷服務器的負載壓力,及時調整資源調配,也有助於更好的服務於業務。因此,今天民工哥給你們安利一款 Linux 性能實時監測工具:Netdata。前端
先搞張效果圖你們先look look python
Netdata是一款Linux系統性能實時監控工具。是一個高度優化的Linux守護進程,能夠對Linux系統、應用程序(包括但不限於Web服務器,數據庫等)、SNMP服務等提供實時的性能監控。git
Netdata用可視化的手段,將其被監控的信息展示出來,以便你清楚的瞭解到你的系統、程序、應用的實時運行狀態,並且還能夠與Prometheus,Graphite,OpenTSDB,Kafka,Grafana等相集成。github
Netdata是免費的開源軟件,目前可在Linux,FreeBSD和macOS以及從它們衍生的其餘系統(例如Kubernetes和Docker)上運行。web
Netdata倉庫地址:_github.com/netdata/ne...docker
一、友好、美觀的可視化界面 二、可自定義的控制界面 三、安裝快速且高效 四、配置簡單,甚至可零配置 五、零依賴 六、可擴展,自帶插件API 七、支持的系統平臺廣數據庫
Netdata是一個高效,高度模塊化的指標管理引擎。它的無鎖設計使其很是適合度量標準上的併發操做。 編程
上圖的各個組件的做用描述,有興趣的能夠參考官方的說明,這裏再也不贅述了。vim
Netdata能夠收集來自200多種流行服務和應用程序的指標,以及數十種與系統相關的指標,例如CPU,內存,磁盤,文件系統,網絡等。咱們將這些收集器稱爲,它們由插件管理,該插件支持多種編程語言,包括Go和Python。api
流行的收集器包括Nginx,Apache,MySQL,statsd,cgroups(容器,Docker,Kubernetes,LXC等),Traefik,Web服務器access.log文件等。
詳細的支持列表請參考下面的說明:_github.com/netdata/ne...
Netdata安裝 一、直接安裝
首先須要更新升級系統內核和一些依賴庫文件
[root@CentOS7-1 ~]# yum update -y
複製代碼
若是沒有操做,你在直接安裝時會出現下面的提示,輸入y讓系統自動更新也是能夠的。
執行完更新操做後,直接執行下面的命令進行安裝Netdata。
[root@CentOS7-1 ~]# bash <(curl -Ss https://my-netdata.io/kicksta...
複製代碼
而後,程序會自動執行安裝動做,去下載一系列的包進行安裝,中間須要確認操做一次,以下:
可能會因爲訪問國外的資源,和根據你的網絡關係,等待的時間或長或短。
一些關鍵的信息,從安裝過程當中也是能夠看的出來的,如上圖。
從上圖信息能夠看出訪問方法,啓動、中止服務的命令。
安裝完成以下圖
顯示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
複製代碼
二、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
複製代碼
安裝完成後,就能夠經過下面的方式進行訪問了。
一、整體數據界面
二、內存
三、CPU
四、磁盤
五、網絡
六、應用
七、網絡接口
八、數據同步功能
Netdata儀表板上的圖表彼此同步,沒有主圖表。能夠隨時平移或縮聽任何圖表,其餘全部圖表也將隨之出現。
經過使用鼠標拖動能夠平移圖表。當鼠標指針懸停在圖表上時,可使用SHIFT+ 放大/縮小mouse wheel圖表。
之因此如此強大,是由於它與各種應用的配合與支持,直接上圖說明:
上面展現的只是單一服務器的監控數據,並且netdata有一個缺點就是全部被監控的服務器都須要安裝agent,因此,這裏就是出現一個問題,就是如何將監控數據統一管理與展現?
netdata官方並沒設計主從模式,像zabbix那樣,能夠一臺作爲主服務器,其它的作爲從服務器,將數據收集到主服務器統一處理與展現,可是,官方也給出了相關的解決方案。
一、netdata.cloud 使用自帶的 netdata.cloud,也就是每個安裝節點WEB界面右上角的signin。只要咱們使用同一個帳號登陸netdata.cloud(須要kexue上網),以後各個節點之間就能夠輕鬆經過一個帳號控制。每一個節點開啓19999端口與容許管理員查看數據,而後控制中心經過前端從各節點的端口收集的數據,傳給netdata.cloud記錄並展現。
這是一種被動的集羣監控,本質上仍是獨立的機器,且不方便作自定義的集羣dashboard。
二、stream 插件 因此,爲了解決上面這種方案的弊端,netdata又提供了另外一種方法,將各節點的數據集中彙總到一臺(主)服務器,數據處理也在這臺服務器上,其它節點無需開放19999端口。 算是一種主動傳輸模式,把收集到的數據發送到主服務器上,這樣在主服務器上能夠進行自定義的dashboard開發。
缺點:主服務器流量、負載都會比較大(在集羣服務器數量較多的狀況下),若是主服務器負載太高,咱們能夠經過設置節點服務器的數據收集週期(update every)來解決這個問題。
不少文章都只是介紹了其安裝與一些界面的展現結果,並無提供集羣監控這一解決方案與其具體的配置,民工哥也是查了不少的資料,如今將其配置過程分享給你們。
對於streaming的配置不熟悉的能夠參考官方的文檔說明:docs.netdata.cloud/st...
一、節點服務器配置
[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
複製代碼
二、主服務器配置
在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文件。 原文地址:docs.netdata.cloud/we...
到這裏,這款實用、酷炫的服務器性能實時監控工具就介紹完了,原創不易,若有幫助,請點在贊、轉發分享支持一下民工哥,大家支持是我最大的創做動力。