1. 程式人生 > 實用技巧 >Prometheus之監控節點

Prometheus之監控節點

最近閒暇之餘,或者java學累了,就會看看別的視訊,最近學的Prometheus中,發現他講的和我看的書內容基本一模一樣《Prometheus監控實戰》,視訊也是個人出的,講的實戰一般般,有興趣的人可以看看這本書,還有一本原始碼我也買了,還沒有開始看。

監控節點

Prometheus使用exporter工具來暴露主機和應用程式上的指標,目前有很多可用於各種目的的exporter。現在我們將專注於一個特定的exporter:NodeExporter。它是用Go語言編寫的,提供了一個可用於收集各種主機指標資料(包括CPU、記憶體和磁碟)的庫。它還有一個textfile收集器,允許你匯出靜態指標,我們很快就會看到這對傳送有關節點的資訊很有幫助,此外它還可以從批處理作業匯出指標。注意 我們有時會使用術語“節點”來指代主機。首先選擇其中一臺Linux主機,然後下載並安裝Node Exporter。我們將選擇一個Docker守護程序主機。提示 如果你不想使用exporter,那麼還有很多支援Prometheus的主機監控客戶端。例如,collectd也可以收集Prometheus指標。

###安裝Node Exporter

你可以通過tar包來安裝Node Exporter,在部分作業系統上也可以通過軟體包進行安裝。可以從Prometheus官網下載Node Exporter的tar包。下載並解壓縮Node Exporter,然後將二進位制檔案移動到環境變數path包含的路徑中。

wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
tar -zvxf node_exporter-0.18.1.linux-amd64.tar.gz
mv node_exporter-0.18.1.linux-amd64 node_exporter
cd node_exporter
cp node_exporter /usr/local/bin/
node_exporter --version

###配置textfile收集器

我們還想配置一個特定的收集器,即textfile收集器,本章後面將使用它。textfile收集器非常有用,因為它允許我們暴露自定義指標。這些自定義指標可能是批處理或cron作業等無法抓取的,可能是沒有exporter的源,甚至可能是為主機提供上下文的靜態指標。收集器通過掃描指定目錄中的檔案,提取所有格式為Prometheus指標的字串,然後暴露它們以便抓取。現在讓我們設定收集器,首先建立一個目錄來儲存指標定義檔案。

可以看到它包含一個指標名稱(metadata)和兩個標籤。一個標籤role定義節點的角色。在示例中,標籤的值為docker_server。另一個標籤datacenter定義主機的地理位置。最後,指標的值為1,因為它不是計數型、測量型或計時型的指標,而是提供上下文。讓我們將這個指標新增到textfile_collector目錄下的metadata.prom檔案中

mkdir -p /var/lib/node_exporter/textfile_collector
echo 'metadata{role="docker_server",datacenter="NJ"} 1' | sudo tee /var/lib/node_exporter/textfile_collector/metadata.prom

在這裡,我們將指標傳遞到名為metadata.prom的檔案中。提示 在真實環境中,建議使用配置管理工具來編輯該檔案。例如,在配置新主機時,可以從模板建立元資料指標,這可以讓你自動對主機和服務進行分類。要啟用textfile收集器,我們不需要配置引數,它預設就會被載入。但我們需要指定textfile_exporter目錄,以便Node Exporter知道在哪裡可以找到自定義指標。為此,我們需要指定--collector.textfile.directory引數。

執行節點匯出器

注:我這裡只收集常見的3個服務。它們是Docker守護程序、SSH守護程序和RSyslog守護程序。使用--collector.systemd.unit-whitelist引數進行配置,它會匹配systemd的正則表示式。

nohup node_exporter --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd --collector.systemd.unit-whitelist="(docker|sshd|rsyslog).service" &>/dev/null &

###過濾收集器

Node Exporter可以返回很多指標,也許你並不想把它們全部收集上來。除了通過本地配置來控制Node Exporter在本地執行哪些收集器之外,Prometheus還提供了一種方式來限制收集器從伺服器端實際抓取的資料,尤其是在你無法控制正抓取的主機的配置時,這種方式非常有幫助。Prometheus通過新增特定收集器列表來實現作業配置。

這裡,我們將被抓取的指標限制在上面的收集器列表中,使用params塊中的collect[]列表指定,然後將它們作為URL引數傳遞給抓取請求。你可以使用NodeExporter例項上的curl命令來對此進行測試。

在 prometheus 伺服器配置 scrap