歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
介紹
Netdata通過可擴充套件的Web儀表板提供準確的效能監控,可以顯示Linux系統上的流程和服務。它監控有關CPU,記憶體,磁碟,網路,程式等的指標。
Netdata一旦安裝就不需要額外的配置,但提供了重要的定製。該應用程式的效率和速度旨在與本機控制檯管理工具(如vmstat
,iostat
和htop
)相媲美。
本教程中的步驟涵蓋了使用其內建Web伺服器或可選地使用Nginx成功設定執行Netdata的一臺Ubuntu 16.04伺服器所需的一切。
準備
要學習本教程,您需要:
- 一個Ubuntu 16.04伺服器,包括具有sudo許可權的非root使用者。
- 伺服器上安裝Git。
- (可選)在伺服器上安裝Nginx。這不是強制性的,但允許比Netdata的內建Web伺服器更多的功能和安全性。
第一步 - 安裝Netdata
在我們安裝任何東西之前,請確保系統包索引是最新的。
$ sudo apt-get update
複製程式碼
接下來,安裝Netdata的依賴項,其中包括gcc
(一個C編譯器),GNU Autoconf工具,GUID管理和Netdata內部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的要求。接下來安裝它們。
$ sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat
複製程式碼
要安裝Netdata本身,我們必須使用專案的GitHub儲存庫。將Netdata儲存庫克隆到您的主目錄中。
$ 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/
來檢視預設儀表板。 您將看到系統的實時指標的概述。
第二步 - 配置Netdata的記憶體使用情況
您可以通過在瀏覽器中訪問http://your_server_ip:19999/netdata.conf
檢視Netdata的當前配置。
您將在此處看到所有(或大多數)可配置選項都已註釋掉(即以#開頭)。這是因為Netdata的配置使用一組假定的預設值。任何禁用的設定都使用Netdata的預設值; 如果取消註釋某個設定,則指定的值將覆蓋預設值。這使配置檔案僅包含您修改的內容。
回到您的伺服器上,配置檔案本身就是/etc/netdata/netdata.conf
。我們將在本教程中自定義的選項是history引數。它控制Netdata使用的記憶體資料庫的大小。
在這裡,您需要確定要為Netdata提供多少RAM,或者在丟失之前將記錄的圖表資料保留多長時間:
- 3600秒(圖表資料保留1小時)使用15 MB RAM
- 7200秒(圖表資料保留2小時)使用30 MB RAM
- 14400秒(圖表資料保留4小時)使用60 MB RAM
- 28800秒(圖表資料保留8小時)使用120 MB RAM
- 43200秒(圖表資料保留12小時)使用180 MB RAM
- 86400秒(24小時圖表資料保留)使用360 MB 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託管儀表板(可選)
通過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 送你一份技術課程大禮包!
海量技術實踐經驗,盡在雲加社群!