介紹
Netdata通過(guò)可擴(kuò)展的Web儀表板提供準(zhǔn)確的性能監(jiān)控,可以顯示Linux系統(tǒng)上的流程和服務(wù)。它監(jiān)控有關(guān)CPU,內(nèi)存,磁盤(pán),網(wǎng)絡(luò),進(jìn)程等的指標(biāo)。
Netdata一旦安裝就不需要額外的配置,但提供了重要的定制。該應(yīng)用程序的效率和速度旨在與本機(jī)控制臺(tái)管理工具(如vmstat
,iostat
和htop
)相媲美。
本教程中的步驟涵蓋了使用其內(nèi)置Web服務(wù)器或可選地使用Nginx成功設(shè)置運(yùn)行Netdata的一臺(tái)Ubuntu 16.04服務(wù)器所需的一切。
準(zhǔn)備
要學(xué)習(xí)本教程,您需要:
- 一個(gè)Ubuntu 16.04服務(wù)器,包括具有sudo權(quán)限的非root用戶。
- 服務(wù)器上安裝Git。
- (可選)在服務(wù)器上安裝Nginx。這不是強(qiáng)制性的,但允許比Netdata的內(nèi)置Web服務(wù)器更多的功能和安全性。
第一步 - 安裝Netdata
在我們安裝任何東西之前,請(qǐng)確保系統(tǒng)包索引是最新的。
$ sudo apt-get update
接下來(lái),安裝Netdata的依賴項(xiàng),其中包括gcc
(一個(gè)C編譯器),GNU Autoconf工具,GUID管理和Netdata內(nèi)部Web服務(wù)器的壓縮庫(kù)。
$ 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。與系統(tǒng)包管理器捆綁在一起的穩(wěn)定版Node.js適用于Netdata的要求。接下來(lái)安裝它們。
$ sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat
要安裝Netdata本身,我們必須使用項(xiàng)目的GitHub存儲(chǔ)庫(kù)。將Netdata存儲(chǔ)庫(kù)克隆到您的主目錄中。
$ git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata
移至新克隆的目錄。
$ cd ~/netdata
現(xiàn)在使用此目錄中的netdata-installer.sh shell
腳本構(gòu)建和安裝應(yīng)用程序。確保在這里附加sudo
,否則Netdata收集系統(tǒng)數(shù)據(jù)的方式(通過(guò)數(shù)據(jù)收集器)將無(wú)法正常運(yùn)行。
$ sudo ./netdata-installer.sh
您最初將看到的輸出包含有關(guān)Netdata將存儲(chǔ)其所有組件的位置的信息。您可以通讀這些內(nèi)容,這樣您就可以更熟悉程序在安裝后如何在文件系統(tǒng)上展開(kāi)。
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
繼續(xù)安裝。片刻之后,在輸出的末尾,您將看到以下消息:
Installer Output
. . .
^
|.-. .-. .-. .-. .-. . netdata .-. .-
| '-' '-' '-' '-' '-' is installed and running now! -' '-'
+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->
enjoy real-time performance and health monitoring...
Netdata現(xiàn)在已成功安裝并運(yùn)行,并且在重新啟動(dòng)服務(wù)器時(shí)也會(huì)自動(dòng)運(yùn)行。如果您啟用了UFW,您需要為Netdata的內(nèi)部Web服務(wù)器打開(kāi)端口19999
。
$ sudo ufw allow 19999/tcp
此時(shí),您可以通過(guò)在您喜歡的瀏覽器中訪問(wèn)http:// your_server_ip:19999/
來(lái)查看默認(rèn)儀表板。 您將看到系統(tǒng)的實(shí)時(shí)指標(biāo)的概述。
第二步 - 配置Netdata的內(nèi)存使用情況
您可以通過(guò)在瀏覽器中訪問(wèn)http://your_server_ip:19999/netdata.conf
查看Netdata的當(dāng)前配置。
您將在此處看到所有(或大多數(shù))可配置選項(xiàng)都已注釋掉(即以#開(kāi)頭)。這是因?yàn)镹etdata的配置使用一組假定的默認(rèn)值。任何禁用的設(shè)置都使用Netdata的默認(rèn)值; 如果取消注釋某個(gè)設(shè)置,則指定的值將覆蓋默認(rèn)值。這使配置文件僅包含您修改的內(nèi)容。
回到您的服務(wù)器上,配置文件本身就是/etc/netdata/netdata.conf
。我們將在本教程中自定義的選項(xiàng)是history參數(shù)。它控制Netdata使用的內(nèi)存數(shù)據(jù)庫(kù)的大小。
在這里,您需要確定要為Netdata提供多少RAM,或者在丟失之前將記錄的圖表數(shù)據(jù)保留多長(zhǎng)時(shí)間:
- 3600秒(圖表數(shù)據(jù)保留1小時(shí))使用15 MB RAM
- 7200秒(圖表數(shù)據(jù)保留2小時(shí))使用30 MB RAM
- 14400秒(圖表數(shù)據(jù)保留4小時(shí))使用60 MB RAM
- 28800秒(圖表數(shù)據(jù)保留8小時(shí))使用120 MB RAM
- 43200秒(圖表數(shù)據(jù)保留12小時(shí))使用180 MB RAM
- 86400秒(24小時(shí)圖表數(shù)據(jù)保留)使用360 MB RAM
請(qǐng)記住,上述估算是基于庫(kù)存儀表板使用的圖表數(shù)量。將來(lái)刪除或添加自定義圖表會(huì)影響這些估算值。
使用nano
或您喜歡的文本編輯器打開(kāi)Netdata的主配置文件。
$ sudo nano /etc/netdata/netdata.conf
找到[global]
部分中的histor
y選項(xiàng)。
/etc/netdata/netdata.conf
復(fù)制代碼 代碼如下:
. . .[global] # glibc malloc arena max for plugins = 1. . . # hostname = test-netdata # history = 3600 # update every = 1. . .
將3600值替換為您之前決定的值。在這里,我們正在使用14400,這為我們提供了4小時(shí)的數(shù)據(jù)保留。確保通過(guò)除#符號(hào)來(lái)取消注釋該行,以便Netdata不再忽略此選項(xiàng)。
/etc/netdata/netdata.conf
. . .
[global]
# glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
# history = 3600
# update every = 1
. . .
進(jìn)行此更改后保存并關(guān)閉文件。雖然這種修改可能會(huì)增加Netdata將使用的RAM量,但我們將在下一步中實(shí)施的下一個(gè)修改應(yīng)該會(huì)顯著減少它。
第三步 - 啟用內(nèi)核同頁(yè)合并
即使Netdata直接運(yùn)行并初始情況下使用,我們可以對(duì)Netdata使用系統(tǒng)資源的方式進(jìn)行更多修改,這將加速并優(yōu)化其性能。我們將從啟用內(nèi)核同頁(yè)合并(簡(jiǎn)稱KSM)開(kāi)始。Netdata開(kāi)發(fā)人員估計(jì)這會(huì)將Netdata的內(nèi)存使用量降低40-60%。
啟用后,KSM守護(hù)程序會(huì)定期掃描內(nèi)存,查找可由單個(gè)寫(xiě)保護(hù)頁(yè)替換的相同內(nèi)容的頁(yè)面。在此上下文中,它允許在系統(tǒng)上運(yùn)行的不同進(jìn)程或程序之間共享相同的內(nèi)存頁(yè)。這減少了不必要的重復(fù)內(nèi)存內(nèi)容的創(chuàng)建。
要永久啟用Linux系統(tǒng)內(nèi)核的此方面,請(qǐng)使用文本編輯器打開(kāi)/etc/rc.local
文件。
復(fù)制代碼 代碼如下:
$ sudo nano /etc/rc.local
在啟動(dòng)所有其他正常Linux系統(tǒng)服務(wù)和進(jìn)程之后,將執(zhí)行/etc/rc.local
文件或運(yùn)行控制文件。它對(duì)于指定自定義服務(wù)很有用-或者,在我們的示例中,用于在服務(wù)器運(yùn)行時(shí)啟用KSM。
將下面顯示的兩個(gè)命令添加到文件末尾,在最后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
第一個(gè)命令將1添加到runKSM內(nèi)核文件中,該文件啟用該功能。第二個(gè)命令echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
告訴KSM守護(hù)程序每秒運(yùn)行一次并評(píng)估100個(gè)頁(yè)面以進(jìn)行重復(fù)數(shù)據(jù)刪除。
保存并關(guān)閉文件后,KSM現(xiàn)在將在下次服務(wù)器重新啟動(dòng)時(shí)啟用,并在將來(lái)重新啟動(dòng)時(shí)保留。要在此服務(wù)器的當(dāng)前正常運(yùn)行時(shí)間內(nèi)啟用它,您需要在命令行上手動(dòng)運(yùn)行您添加到rc.local
的兩個(gè)命令。
首先,通過(guò)在sudo
中使用-
s標(biāo)志,啟動(dòng)并輸入新的shell會(huì)話作為服務(wù)器的root
用戶。這是必要的,因?yàn)樵缙诘膬蓚€(gè)命令使用輸出重定向(通過(guò)>運(yùn)算符)并且需要由root shell
執(zhí)行才能成功。
$ sudo -s
現(xiàn)在輸入之前的兩個(gè)命令:
echo 1 > /sys/kernel/mm/ksm/runecho 1000 > /sys/kernel/mm/ksm/sleep_millisecs
然后,保留root shell
并返回正常的shel
l會(huì)話。
$ exit
最后,要應(yīng)用我們?cè)诖瞬襟E以及此前的步驟中執(zhí)行的所有更改,我們必須重新啟動(dòng)Netdata。
$ sudo systemctl restart netdata
您可以通過(guò)在Netdata儀表板中查找新添加的活動(dòng)KSM圖表來(lái)驗(yàn)證KSM現(xiàn)在是否已啟用。這可以在右側(cè)菜單樹(shù)中的Memory > Memory Deduper下找到。
KSM Chart Image
現(xiàn)在我們知道儀表板和KSM正在運(yùn)行,值得通過(guò)像Nginx這樣的Web服務(wù)器而不是內(nèi)置的Web服務(wù)器來(lái)訪問(wèn)儀表板。這不是完全必要的,但建議使用,因此請(qǐng)按照下一步進(jìn)行設(shè)置。
第四步 - 通過(guò)Nginx托管儀表板(可選)
通過(guò)Nginx托管Netdata可以更輕松地保護(hù)對(duì)儀表板的訪問(wèn),并且如果需要,還可以讓您在將來(lái)指向其他服務(wù)器的Netdata儀表板。
您還需要安裝apache2-utils
軟件包。該軟件包包含htpasswd
程序,稍后我們將需要該程序來(lái)保護(hù)對(duì)儀表板頁(yè)面的訪問(wèn)。
$ sudo apt-get install apache2-utils
接下來(lái),創(chuàng)建一個(gè)新的Nginx主機(jī)配置文件。請(qǐng)注意,在這里,我們?cè)?code>/conf.d目錄中使用了一個(gè)文件,但是如果您使用Nginx進(jìn)行Netdata以外的其他操作,則可以使用/sites-available
和/ sites-enabled
。
$ sudo nano /etc/nginx/conf.d/default.conf
此配置文件將告訴Nginx代理儀表板頁(yè)面的傳入請(qǐng)求。我們還將添加一個(gè)簡(jiǎn)單的身份驗(yàn)證提示,以便只有具有正確用戶名和密碼的人才能訪問(wèn)它。
以下是您要復(fù)制和粘貼的整個(gè)配置文件。將上述listen
和server_name
指令的兩個(gè)紅色突出顯示項(xiàng)分別更改為服務(wù)器的IP地址和分配的域名。注意在每個(gè)末尾包括;
。如果您沒(méi)有域名,可以將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;
}
}
一旦確定自己的文件與此代碼塊匹配,就可以保存并退出以返回到命令提示符。
讓我們解釋一下這個(gè)文件,讓你了解它在做什么。這是第一部分:
/etc/nginx/conf.d/default.conf
upstream netdata-backend { server 127.0.0.1:19999; keepalive 64;}
這個(gè)名為netdata-backend
的upstream
模塊使用服務(wù)器的環(huán)回地址127.0.0.1
和Netdata的端口19999
來(lái)定位內(nèi)置的Netdata Web服務(wù)器。keepalive
指令設(shè)置在任何給定時(shí)間(對(duì)于每個(gè)Nginx工作進(jìn)程)可以保持打開(kāi)的上游空閑連接的最大數(shù)量。proxy_pass
指令稍后需要此upstream
模塊定義。
在此之后直接是主要server塊。
/etc/nginx/conf.d/default.conf
upstream netdata-backend {
server 127.0.0.1:19999;
keepalive 64;
}
塊中的前兩行定義了Nginx在客戶端嘗試連接時(shí)應(yīng)該listen的外部IP地址。server_name
指令告訴Nginx在客戶端使用指定的域名時(shí)運(yùn)行此服務(wù)器塊。
此代碼段中的最后兩行設(shè)置了簡(jiǎn)單的HTTP用戶名和密碼身份驗(yàn)證。它使用auth_basic
模塊顯示用戶名和密碼提示。您可以自定義提示消息;
在這里,它設(shè)置為Authentication Required。auth_basic_user_file
指定用于存儲(chǔ)身份驗(yàn)證提示的登錄憑據(jù)的文件名和位置,稍后在此步驟中創(chuàng)建。
最后一個(gè)location
塊嵌套在server
塊內(nèi),處理代理并將傳入的請(qǐng)求傳遞給Nginx。
/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;
總而言之,此代碼是將客戶端請(qǐng)求傳遞給Netdata Web
服務(wù)器,然后是儀表板的代碼。proxy_pass
指令行引用回文件開(kāi)頭的upstream
模塊必須通過(guò)名稱netdata-backend指向它。
如果尚未安裝,則可以保存并關(guān)閉此配置文件。這里是apache2-utils
包中的htpasswd
程序幫助我們?yōu)閮x表板登錄提示創(chuàng)建用戶登錄憑據(jù)的地方。
首先,我們將創(chuàng)建用戶名和密碼。運(yùn)行以下命令,將sammy替換為您要在Netdata中使用的用戶名。出現(xiàn)提示時(shí),輸入您要使用的密碼。
$ sudo htpasswd -c /etc/nginx/netdata-access sammy
這將在/etc / nginx / netdata-access
中創(chuàng)建一個(gè)包含您提供的用戶名和密碼的文件。
生成的密碼在文件中加密,因此不能將其視為純文本。
重新啟動(dòng)Nginx以使我們添加的新配置處于活動(dòng)狀態(tài)。
$ sudo systemctl restart nginx
要首次測(cè)試Nginx配置,請(qǐng)?jiān)谀矚g的Web瀏覽器訪問(wèn)http://your_server_ip
。您將看到身份驗(yàn)證提示。輸入您在此步驟中先前提供的用戶名和密碼,以訪問(wèn)儀表板,我們將在第五步中進(jìn)行探討。
第五步 - 探索儀表板
如果您沒(méi)有按照可選第四步進(jìn)行操作,請(qǐng)立即在您喜歡的瀏覽器訪問(wèn)http://your_server_ip:19999/
以訪問(wèn)儀表板。
您將看到儀表板以及系統(tǒng)實(shí)時(shí)指標(biāo)的概述。當(dāng)您在后續(xù)圖形中的每個(gè)時(shí)間段上鼠標(biāo)懸停時(shí),頁(yè)面頂部的HUD樣式指示器會(huì)發(fā)生變化。
HUD Indicators Image
此概述部分中的各個(gè)圖形和圖表提供了每個(gè)系統(tǒng)方面的詳細(xì)說(shuō)明,范圍從CPU到內(nèi)存到網(wǎng)絡(luò)流量等。
CPU Chart Example
圖表是交互式的,可以使用鼠標(biāo)按鈕向左或向右拖動(dòng),以在不同的時(shí)間間隔內(nèi)來(lái)回平移。
RAM Chart Example
按住SHIFT并使用鼠標(biāo)滾輪在圖形上滾動(dòng)或滾出將縮小或加寬時(shí)間標(biāo)記。雙擊圖表將其重置為默認(rèn)外觀和視圖。
Network Chart Example
在儀表板上導(dǎo)航的最快方法是使用頁(yè)面右側(cè)的菜單樹(shù)。這會(huì)根據(jù)您當(dāng)前正在查看的頁(yè)面部分更改焦點(diǎn)和顏色。

Menu Tree
向下滾動(dòng)頁(yè)面或使用菜單樹(shù)可以訪問(wèn)更深入的圖表。這些非常詳細(xì),并且以與初始概述部分中的圖表相同的方式進(jìn)行控制。
Menu Tree Image
Netdata提供了許多這些額外的特定于統(tǒng)計(jì)數(shù)據(jù)的圖表。
GUI的一個(gè)重要部分是更新頁(yè)面。Netdata定期接收更新,并使您的安裝保持最新?tīng)顟B(tài)。儀表板頂部包含一個(gè)“更新”按鈕,可用于檢查新版本是否可供下載。

Update Button Image
單擊此按鈕將打開(kāi)一個(gè)包含更多詳細(xì)信息的新菜單,并打開(kāi)“立即檢查”按鈕以手動(dòng)檢查更新。

Update Check Details Image
如果有可用的更新,您只需要從Netdata Git存儲(chǔ)庫(kù)運(yùn)行提供的更新腳本,我們?cè)诘谝徊街袑⑵淇寺〉絃inux用戶的主目錄。也就是說(shuō),當(dāng)更新可用時(shí),只需從命令行運(yùn)行sudo ~/netdata/netdata-updater.sh
。
結(jié)論
Netdata wiki中介紹了Netdata注冊(cè)表,設(shè)置警報(bào)和安裝自定義圖表/模塊的信息,還討論了生成HTML徽章或處理Netdata日志文件等主題。
總結(jié)
以上所述是小編給大家介紹的Ubuntu上使用Netdata設(shè)置實(shí)時(shí)性能監(jiān)控的詳細(xì)流程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!