歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~node
Netdata經過可擴展的Web儀表板提供準確的性能監控,能夠顯示Linux系統上的流程和服務。它監控有關CPU,內存,磁盤,網絡,進程等的指標。mysql
Netdata一旦安裝就不須要額外的配置,但提供了重要的定製。該應用程序的效率和速度旨在與本機控制檯管理工具(如vmstat
,iostat
和htop
)相媲美。ios
本教程中的步驟涵蓋了使用其內置Web服務器或可選地使用Nginx成功設置運行Netdata的一臺Ubuntu 16.04服務器所需的一切。nginx
要學習本教程,您須要:git
在咱們安裝任何東西以前,請確保系統包索引是最新的。github
$ sudo apt-get update
複製代碼
接下來,安裝Netdata的依賴項,其中包括gcc
(一個C編譯器),GNU Autoconf工具,GUID管理和Netdata內部Web服務器的壓縮庫。web
$ sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl
複製代碼
下一組軟件包是可選的,但Netdata推薦使用,包括Python,一些Python軟件包和Node.JS。與系統包管理器捆綁在一塊兒的穩定版Node.js適用於Netdata的要求。接下來安裝它們。sql
$ sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat
複製代碼
要安裝Netdata自己,咱們必須使用項目的GitHub存儲庫。將Netdata存儲庫克隆到您的主目錄中。shell
$ git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata
複製代碼
移至新克隆的目錄。
$ cd ~/netdata
複製代碼
如今使用此目錄中的netdata-installer.sh shell
腳本構建和安裝應用程序。確保在這裏附加sudo
,不然Netdata收集系統數據的方式(經過數據收集器)將沒法正常運行。
$ sudo ./netdata-installer.sh
複製代碼
您最初將看到的輸出包含有關Netdata將存儲其全部組件的位置的信息。您能夠通讀這些內容,這樣您就能夠更熟悉程序在安裝後如何在文件系統上展開。
Installer Output
. . .
It will be installed at these locations:
- the daemon at /usr/sbin/netdata
- config files at /etc/netdata
- web files at /usr/share/netdata
- plugins at /usr/libexec/netdata
- cache files at /var/cache/netdata
- db files at /var/lib/netdata
- log files at /var/log/netdata
- pid file at /var/run
. . .
複製代碼
按ENTER
繼續安裝。片刻以後,在輸出的末尾,您將看到如下消息:
Installer Output
. . .
^
|.-. .-. .-. .-. .-. . netdata .-. .-
| '-' '-' '-' '-' '-' is installed and running now! -' '-' +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---> enjoy real-time performance and health monitoring... 複製代碼
Netdata如今已成功安裝並運行,而且在從新啓動服務器時也會自動運行。若是您啓用了UFW,您須要爲Netdata的內部Web服務器打開端口19999
。
$ sudo ufw allow 19999/tcp
複製代碼
此時,您能夠經過在您喜歡的瀏覽器中訪問http:// your_server_ip:19999/
來查看默認儀表板。 您將看到系統的實時指標的概述。
您能夠經過在瀏覽器中訪問http://your_server_ip:19999/netdata.conf
查看Netdata的當前配置。
您將在此處看到全部(或大多數)可配置選項都已註釋掉(即以#開頭)。這是由於Netdata的配置使用一組假定的默認值。任何禁用的設置都使用Netdata的默認值; 若是取消註釋某個設置,則指定的值將覆蓋默認值。這使配置文件僅包含您修改的內容。
回到您的服務器上,配置文件自己就是/etc/netdata/netdata.conf
。咱們將在本教程中自定義的選項是history參數。它控制Netdata使用的內存數據庫的大小。
在這裏,您須要肯定要爲Netdata提供多少RAM,或者在丟失以前將記錄的圖表數據保留多長時間:
請記住,上述估算是基於庫存儀表板使用的圖表數量。未來刪除或添加自定義圖表會影響這些估算值。
使用nano
或您喜歡的文本編輯器打開Netdata的主配置文件。
$ sudo nano /etc/netdata/netdata.conf
複製代碼
找到[global]
部分中的histor
y選項。
/etc/netdata/netdata.conf
. . .
[global]
# glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
# history = 3600
# update every = 1
. . .
複製代碼
將3600值替換爲您以前決定的值。在這裏,咱們正在使用14400,這爲咱們提供了4小時的數據保留。確保經過除#符號來取消註釋該行,以便Netdata再也不忽略此選項。
/etc/netdata/netdata.conf
. . .
[global]
# glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
history = 14400
# update every = 1
. . .
複製代碼
進行此更改後保存並關閉文件。雖然這種修改可能會增長Netdata將使用的RAM量,但咱們將在下一步中實施的下一個修改應該會顯著減小它。
即便Netdata直接運行並初始狀況下使用,咱們能夠對Netdata使用系統資源的方式進行更多修改,這將加速並優化其性能。咱們將從啓用內核同頁合併(簡稱KSM)開始。Netdata開發人員估計這會將Netdata的內存使用量下降40-60%。
啓用後,KSM守護程序會按期掃描內存,查找可由單個寫保護頁替換的相同內容的頁面。在此上下文中,它容許在系統上運行的不一樣進程或程序之間共享相同的內存頁。這減小了沒必要要的重複內存內容的建立。
要永久啓用Linux系統內核的此方面,請使用文本編輯器打開/etc/rc.local
文件。
$ sudo nano /etc/rc.local
複製代碼
在啓動全部其餘正常Linux系統服務和進程以後,將執行/etc/rc.local
文件或運行控制文件。它對於指定自定義服務頗有用-或者,在咱們的示例中,用於在服務器運行時啓用KSM。
將下面顯示的兩個命令添加到文件末尾,在最後exit 0
一行以前,以下所示:
/etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
exit 0
複製代碼
echo 1 > /sys/kernel/mm/ksm/run
第一個命令將1添加到runKSM內核文件中,該文件啓用該功能。第二個命令echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
告訴KSM守護程序每秒運行一次並評估100個頁面以進行重複數據刪除。
保存並關閉文件後,KSM如今將在下次服務器從新啓動時啓用,並在未來從新啓動時保留。要在此服務器的當前正常運行時間內啓用它,您須要在命令行上手動運行您添加到rc.local
的兩個命令。
首先,經過在sudo
中使用-
s標誌,啓動並輸入新的shell會話做爲服務器的root
用戶。這是必要的,由於早期的兩個命令使用輸出重定向(經過>運算符)而且須要由root shell
執行才能成功。
$ sudo -s
複製代碼
如今輸入以前的兩個命令:
echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
複製代碼
而後,保留root shell
並返回正常的shel
l會話。
$ exit
複製代碼
最後,要應用咱們在此步驟以及此前的步驟中執行的全部更改,咱們必須從新啓動Netdata。
$ sudo systemctl restart netdata
複製代碼
您能夠經過在Netdata儀表板中查找新添加的活動KSM圖表來驗證KSM如今是否已啓用。這能夠在右側菜單樹中的Memory > Memory Deduper下找到。
KSM Chart Image如今咱們知道儀表板和KSM正在運行,值得經過像Nginx這樣的Web服務器而不是內置的Web服務器來訪問儀表板。這不是徹底必要的,但建議使用,所以請按照下一步進行設置。
經過Nginx託管Netdata能夠更輕鬆地保護對儀表板的訪問,而且若是須要,還可讓您在未來指向其餘服務器的Netdata儀表板。
您還須要安裝apache2-utils
軟件包。該軟件包包含htpasswd
程序,稍後咱們將須要該程序來保護對儀表板頁面的訪問。
$ sudo apt-get install apache2-utils
複製代碼
接下來,建立一個新的Nginx主機配置文件。請注意,在這裏,咱們在/conf.d
目錄中使用了一個文件,可是若是您使用Nginx進行Netdata之外的其餘操做,則可使用/sites-available
和/ sites-enabled
。
$ sudo nano /etc/nginx/conf.d/default.conf
複製代碼
此配置文件將告訴Nginx代理儀表板頁面的傳入請求。咱們還將添加一個簡單的身份驗證提示,以便只有具備正確用戶名和密碼的人才能訪問它。
如下是您要複製和粘貼的整個配置文件。將上述listen
和server_name
指令的兩個紅色突出顯示項分別更改成服務器的IP地址和分配的域名。注意在每一個末尾包括;
。若是您沒有域名,能夠將server_name
指令保留爲example.com
。
/etc/nginx/conf.d/default.conf
upstream netdata-backend {
server 127.0.0.1:19999;
keepalive 64;
}
server {
listen your_server_ip:80;
server_name example.com;
auth_basic "Authentication Required";
auth_basic_user_file netdata-access;
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://netdata-backend;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}
複製代碼
一旦肯定本身的文件與此代碼塊匹配,就能夠保存並退出以返回到命令提示符。
讓咱們解釋一下這個文件,讓你瞭解它在作什麼。這是第一部分:
/etc/nginx/conf.d/default.conf
upstream netdata-backend {
server 127.0.0.1:19999;
keepalive 64;
}
複製代碼
這個名爲netdata-backend
的upstream
模塊使用服務器的環回地址127.0.0.1
和Netdata的端口19999
來定位內置的Netdata Web服務器。keepalive
指令設置在任何給定時間(對於每一個Nginx工做進程)能夠保持打開的上游空閒鏈接的最大數量。proxy_pass
指令稍後須要此upstream
模塊定義。
在此以後直接是主要server塊。
/etc/nginx/conf.d/default.conf
server {
listen your_server_ip:80;
server_name example.com;
auth_basic "Authentication Required";
auth_basic_user_file netdata-access;
複製代碼
塊中的前兩行定義了Nginx在客戶端嘗試鏈接時應該listen的外部IP地址。server_name
指令告訴Nginx在客戶端使用指定的域名時運行此服務器塊。
此代碼段中的最後兩行設置了簡單的HTTP用戶名和密碼身份驗證。它使用auth_basic
模塊顯示用戶名和密碼提示。您能夠自定義提示消息;
在這裏,它設置爲Authentication Required。auth_basic_user_file
指定用於存儲身份驗證提示的登陸憑據的文件名和位置,稍後在此步驟中建立。
最後一個location
塊嵌套在server
塊內,處理代理並將傳入的請求傳遞給Nginx。
/etc/nginx/conf.d/default.conf
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://netdata-backend;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}
複製代碼
總而言之,此代碼是將客戶端請求傳遞給Netdata Web
服務器,而後是儀表板的代碼。proxy_pass
指令行引用迴文件開頭的upstream
模塊必須經過名稱netdata-backend指向它。
若是還沒有安裝,則能夠保存並關閉此配置文件。這裏是apache2-utils
包中的htpasswd
程序幫助咱們爲儀表板登陸提示建立用戶登陸憑據的地方。
首先,咱們將建立用戶名和密碼。運行如下命令,將sammy替換爲您要在Netdata中使用的用戶名。出現提示時,輸入您要使用的密碼。
$ sudo htpasswd -c /etc/nginx/netdata-access sammy
複製代碼
這將在/etc / nginx / netdata-access
中建立一個包含您提供的用戶名和密碼的文件。
生成的密碼在文件中加密,所以不能將其視爲純文本。
從新啓動Nginx以使咱們添加的新配置處於活動狀態。
$ sudo systemctl restart nginx
複製代碼
要首次測試Nginx配置,請在您喜歡的Web瀏覽器訪問http://your_server_ip
。您將看到身份驗證提示。輸入您在此步驟中先前提供的用戶名和密碼,以訪問儀表板,咱們將在第五步中進行探討。
若是您沒有按照可選第四步進行操做,請當即在您喜歡的瀏覽器訪問http://your_server_ip:19999/
以訪問儀表板。
您將看到儀表板以及系統實時指標的概述。當您在後續圖形中的每一個時間段上鼠標懸停時,頁面頂部的HUD樣式指示器會發生變化。
HUD Indicators Image此概述部分中的各個圖形和圖表提供了每一個系統方面的詳細說明,範圍從CPU到內存到網絡流量等。
CPU Chart Example圖表是交互式的,可使用鼠標按鈕向左或向右拖動,以在不一樣的時間間隔內來回平移。
RAM Chart Example按住SHIFT並使用鼠標滾輪在圖形上滾動或滾出將縮小或加寬時間標記。雙擊圖表將其重置爲默認外觀和視圖。
Network Chart Example在儀表板上導航的最快方法是使用頁面右側的菜單樹。這會根據您當前正在查看的頁面部分更改焦點和顏色。
Menu Tree向下滾動頁面或使用菜單樹能夠訪問更深刻的圖表。這些很是詳細,而且以與初始概述部分中的圖表相同的方式進行控制。
Menu Tree ImageNetdata提供了許多這些額外的特定於統計數據的圖表。
GUI的一個重要部分是更新頁面。Netdata按期接收更新,並使您的安裝保持最新狀態。儀表板頂部包含一個「**更新」**按鈕,可用於檢查新版本是否可供下載。
Update Button Image單擊此按鈕將打開一個包含更多詳細信息的新菜單,並打開「**當即檢查」**按鈕以手動檢查更新。
Update Check Details Image若是有可用的更新,您只須要從Netdata Git存儲庫運行提供的更新腳本,咱們在第一步中將其克隆到Linux用戶的主目錄。也就是說,當更新可用時,只需從命令行運行sudo ~/netdata/netdata-updater.sh
。
Netdata wiki中介紹了Netdata註冊表,設置警報和安裝自定義圖表/模塊的信息,還討論了生成HTML徽章或處理Netdata日誌文件等主題。
參考文獻:《How to Set Up Real-Time Performance Monitoring with Netdata on Ubuntu 16.04》
問答
相關閱讀
此文已由做者受權騰訊雲+社區發佈,原文連接:cloud.tencent.com/developer/a…
搜索關注公衆號「雲加社區」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!
海量技術實踐經驗,盡在雲加社區!