NetData搭建 -- Linux性能實(shí)時(shí)監(jiān)測(cè)工具

從Github上能夠看到netdata的主要功能,主要有幾點(diǎn):

  • interactive bootstrap dashboards, 酷炫
  • 所有請(qǐng)求每個(gè)metreic都在0.5ms內(nèi)響應(yīng),即便是一臺(tái)爛機(jī)器
  • 非常高效,每秒采集數(shù)千個(gè)指標(biāo),但僅占cpu單核1%,少量MB的內(nèi)存以及完全沒有磁盤IO
  • 提供復(fù)雜的、各種類型的告警,支持動(dòng)態(tài)閾值、告警模板、多種通知方式等
  • 可擴(kuò)展,使用自帶的插件API(比如bash, python, perl, node.js, java, go, ruby等)來收集任何可以衡量的數(shù)據(jù)
  • 零配置:安裝后netdata會(huì)自動(dòng)的監(jiān)測(cè)一切
  • 零依賴:netdata有自己的web server, 提供靜態(tài)web文件和web API
  • 零維護(hù):只管跑上!
  • 支撐多種時(shí)間序列后端服務(wù),比如graphite, opentsdb, prometheus, json document DBs
NetData工作界面

系統(tǒng)環(huán)境:

Centos7

下載安裝netData

# 下載項(xiàng)目代碼
? git clone https://github.com/firehol/netdata.git
# 安裝變異所需要的包
? yum -y install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autogen automake pkgconfig
# 運(yùn)行自帶的安裝啟動(dòng)腳本
? cd ./netdata
? ./netdata-installer.sh

安裝啟動(dòng)腳本時(shí),提示netData安裝的詳細(xì)目錄,按下Enter鍵執(zhí)行。

安裝啟動(dòng)腳本

啟動(dòng)和配置

安裝完成后,腳本輸出一段信息,包括:KSM、端口、啟動(dòng)命令

開啟 KSM 以節(jié)省儲(chǔ)存占用

如果有下列信息,說明你的系統(tǒng)有 KSM,但是未啟用,可以按照說明執(zhí)行兩句echo命令,節(jié)省 40-60% 的儲(chǔ)存空間。

 --- 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/
  1. 如果修改端口,需要編輯配置文件/etc/netdata/netdata.conf 中的 # default port = 19999。去掉注釋符號(hào)#端口盡量改掉默認(rèn)的19999 !!!
  2. 修改端口后重啟生效。
  3. 如果有防火墻,需開放端口(CentOS7使用firewalld)。
修改web端口

啟動(dòng)/關(guān)閉netData

# 停止
? systemctl stop netdata
# 啟動(dòng)
? systemctl start netdata
# 重啟
? systemctl restart netdata
# 開機(jī)啟動(dòng)
? systemctl enable netdata
# 卸載
? ./netdata-uninstaller.sh --force

至此,NetData安裝啟動(dòng)完畢,可以通過http://host_ip:port 進(jìn)行訪問,無需賬號(hào)密碼。
下面將結(jié)合Nginx設(shè)置賬號(hào)密碼。


使用Nginx配置域名訪問,設(shè)置賬號(hào)密碼授權(quán)

由于netdata沒有帳號(hào)密碼體系,為保護(hù)服務(wù)器隱私,我們要使用nginx反向代理配置域名訪問,并使用賬號(hào)密碼授權(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)修改端口號(hào)、域名、auth_basic_user_file

upstream backend {
    # the netdata server,請(qǐng)修改具體端口號(hào)
    server 127.0.0.1:19999;
    keepalive 64;
}

server {
    # nginx listens to this
    listen 80;

    # the virtual host name of this,請(qǐng)求改具體域名
    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訪問,并且需要輸入賬號(hào)和密碼。但是依然可以通過http://IP:Port的方式訪問,接下來禁用IP訪問。

NetData禁用外部IP請(qǐng)求

  • 打開NetData配置文件:/etc/netdata/netdata.conf,web項(xiàng)的 bind to修改如下:
[web]
    bind to = 127.0.0.1 ::1
  • 重啟NetData: systemctl restart netdata

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容