Linux性能實時監(jiān)測工具之NetData搭建
- interactive bootstrap dashboards, 酷炫
- 所有請求每個metreic都在0.5ms內(nèi)響應(yīng),即便是一臺爛機器
- 非常高效,每秒采集數(shù)千個指標(biāo),但僅占cpu單核1%,少量MB的內(nèi)存以及完全沒有磁盤IO
- 提供復(fù)雜的、各種類型的告警,支持動態(tài)閾值、告警模板、多種通知方式等
- 可擴展,使用自帶的插件API(比如bash, python, perl, node.js, java, go, ruby等)來收集任何可以衡量的數(shù)據(jù)
- 零配置:安裝后netdata會自動的監(jiān)測一切
- 零依賴:netdata有自己的web server, 提供靜態(tài)web文件和web API
- 零維護:只管跑上!
- 支撐多種時間序列后端服務(wù),比如graphite, opentsdb, prometheus, json document DBs
NetData工作界面
系統(tǒng)環(huán)境:
Centos7
下載安裝netData
- # 下載項目代碼
- ➜ git clone https://github.com/firehol/netdata.git
- # 安裝變異所需要的包
- ➜ yum -y install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autogen automake pkgconfig
- # 運行自帶的安裝啟動腳本
- ➜ cd ./netdata
- ➜ ./netdata-installer.sh
安裝啟動腳本時,提示netData安裝的詳細(xì)目錄,按下Enter鍵執(zhí)行。

安裝啟動腳本
啟動和配置
安裝完成后,腳本輸出一段信息,包括:KSM、端口、啟動命令
開啟 KSM 以節(jié)省儲存占用
如果有下列信息,說明你的系統(tǒng)有 KSM,但是未啟用,可以按照說明執(zhí)行兩句echo命令,節(jié)省 40-60% 的儲存空間。
- --- Check KSM (kernel memory deduper) ---
- Memory de-duplication instructions
- You have kernel memory de-duper (called Kernel Same-page Merging,
- or KSM) available, but it is not currently enabled.
- To enable it run:
- echo 1 >/sys/kernel/mm/ksm/run
- echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
- If you enable it, you will save 40-60% of netdata memory.
web端口配置
默認(rèn)的web訪問端口為19999。
- netdata by default listens on all IPs on port 19999,
- so you can access it with:
- http://this.machine.ip:19999/
如果修改端口,需要編輯配置文件/etc/netdata/netdata.conf 中的 # default port = 19999。去掉注釋符號#,端口盡量改掉默認(rèn)的19999 !!!
修改端口后重啟生效。
如果有防火墻,需開放端口(CentOS7使用firewalld)。

修改web端口
啟動/關(guān)閉netData
- # 停止
- ➜ systemctl stop netdata
- # 啟動
- ➜ systemctl start netdata
- # 重啟
- ➜ systemctl restart netdata
- # 開機啟動
- ➜ systemctl enable netdata
- # 卸載
- ➜ ./netdata-uninstaller.sh --force
至此,NetData安裝啟動完畢,可以通過http://host_ip:port 進行訪問,無需賬號密碼。
下面將結(jié)合Nginx設(shè)置賬號密碼。
使用Nginx配置域名訪問,設(shè)置賬號密碼授權(quán)
由于netdata沒有帳號密碼體系,為保護服務(wù)器隱私,我們要使用nginx反向代理配置域名訪問,并使用賬號密碼授權(quán)。
事先準(zhǔn)備:
- 如果服務(wù)器沒有Nginx,安裝: yum install nginx
- netdata的域名,如: netdata.example.com
生成Nginx密碼文件
- # 密碼文件存放位置自定義,路徑需記錄下來,放在Nginx配置中。
- ➜ printf "netdata:$(openssl passwd -apr1)" > /usr/local/nginx/conf/htpasswd
配置nginx.conf
在 ...nginx/conf.d 中創(chuàng)建netdata.conf文件,寫入如下內(nèi)容,適當(dāng)修改端口號、域名、auth_basic_user_file。
- upstream backend {
- # the netdata server,請修改具體端口號
- server 127.0.0.1:19999;
- keepalive 64;
- }
- server {
- # nginx listens to this
- listen 80;
- # the virtual host name of this,請求改具體域名
- server_name netdata.example.com;
- # auth password
- auth_basic "netdata Login";
- # 上一步生成的密碼文件路徑
- auth_basic_user_file /usr/local/nginx/conf/htpasswd;
- location / {
- proxy_set_header X-Forwarded-Host $host;
- proxy_set_header X-Forwarded-Server $host;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_pass http://backend;
- proxy_http_version 1.1;
- proxy_pass_request_headers on;
- proxy_set_header Connection "keep-alive";
- proxy_store off;
- }
- }
重啟nginx
- # 密碼文件存放位置自定義,路徑需記錄下來,放在Nginx配置中。
- ➜ systemctl reload nginx
重啟Nginx后,可以直接通過域名netdata.example.com訪問,并且需要輸入賬號和密碼。但是依然可以通過http://IP:Port的方式訪問,接下來禁用IP訪問。
NetData禁用外部IP請求
- 打開NetData配置文件:/etc/netdata/netdata.conf,web項的 bind to修改如下:
- [web]
- bind to = 127.0.0.1 ::1
- 重啟NetData: systemctl restart netdata