04-prometheus服務的動態發現

一、概述

? ? ? ? 目前,我們每增加一個被監控的節點,就需要修改prometheus的配置文件,然后重新加載prometheus服務,這種方式比較繁瑣,每次新增、刪除被監控節點都需要重新操作一遍,不適合生產環境的大規模監控架構;

? ? ? ? 所以prometheus就提供了這種問題的解決方案,方案有兩種,基于文檔的自動發現和基于網絡的自動發現。

二、基于文檔的自動發現

1,修改prometheus的配置文件

[root@prometheus-server31 ~]# cat /prometheus/soft/prometheus/prometheus.yml?
#通用設置
global:
? #抓取監控的間隔時間,多長時間獲取一次數據(生產環境,建議15-30s);
? scrape_interval: 3s?
? #多久讀一次規則
? evaluation_interval: 15s?

#先不解釋,之后會講
alerting:
? alertmanagers:
? ? - static_configs:
? ? ? ? - targets:
? ? ? ? ? # - alertmanager:9093

#先不講,之后會講
rule_files:
? # - "first_rules.yml"
? # - "second_rules.yml"

#被監控的配置
scrape_configs:
? - job_name: "prometheus"
? ? static_configs:
? ? ? - targets: ["localhost:9090"]
? #另起一個job名稱,被監控的主體自定義名稱
? - job_name: "node-exporter01"
? ? #基于文檔自動發現
? ? file_sd_configs:
? ? ? #文檔的地址路徑
? ? ? - files:
? ? ? ? ? #- /prometheus/soft/prometheus/file-sd.json
? ? ? ? ? - /prometheus/soft/prometheus/file-sd.yaml

2,重新加載prometheus服務

[root@prometheus-server31 ~]# curl -X POST http://10.0.0.31:9090/-/reload

3,編輯自動發現文檔

[root@prometheus-server31 ~]# vim /prometheus/soft/prometheus/file-sd.yaml

- targets:
? ? - '10.0.0.41:9100'
? labels:
? ? xinjizhiwa: prometheus-learn
? ? office: www.xinjizhiwa.com

瀏覽器刷新查看

4,重新編輯自動發現文檔,驗證是否自動更新

· yaml文件寫法

[root@prometheus-server31 ~]# vim /prometheus/soft/prometheus/file-sd.yaml

- targets:
? ? - '10.0.0.41:9100'
? ? - '10.0.0.42:9100'
? labels:
? ? xinjizhiwa: prometheus-learn
? ? office: www.xinjizhiwa.com

· json文件寫法

[root@prometheus-server31 ~]# vim /prometheus/soft/prometheus/file-sd.yaml

[

? ? ? ? {

? ? ? ? ? ? ? ? "targets":["10.0.0.41:9100","10.0.0.42:9100"],

? ? ? ? ? ? ? ? "lables":{

? ? ? ? ? ? ? ? ? ? ? ? "xinjizhiwa":"prometheus-learn","office":"wwwxinjizhiwa.com"

????????????????}

????????}

]

瀏覽器刷新,看是否監控到修改后的自動發現列表

5,小結

? ? ? ? 有了文檔的自動發現,那么我們以后就不需要再修改prometheus的配置文件了,更不需要重新加載prometheus服務了,是不是方便了很多呀!

? ? ? ? 那么有沒有更方便的方式吶?那么接下來,我們學習下基于網絡的自動發現。

三、基于consul網絡集群自動發現

? ? ? ? 搭建一個consul的網絡集群,讓被監控節點全部加入到網絡集群中,然后配置prometheus監控地址為這個網絡集群,日后,只要有被監控節點加入到這個網絡集群中,prometheus就可以自動的發現這些節點,刷新被監控列表;

1,搭建consul網絡集群

????????隨便準備3臺機器,用來搭建consul網絡集群,本次學習,由于環境限制,我們就從使用虛擬機上選擇就行,日后生產環境,需要單獨拿出來節點服務器進行單獨的配置更好;

官網地址參考鏈接:Consul by HashiCorp

· 下載consul工具

下載方式:

wget https://releases.hashicorp.com/consul/1.15.4/consul_1.15.4_linux_amd64.zip

本次學習,同樣給大家準備了安裝包,在百度云盤;

鏈接:https://pan.baidu.com/s/1qaIutR6qzmJbz72yWy3t_A?pwd=bppk?
提取碼:bppk

· 上傳解壓軟件包

? ? ? ? 本次使用31、71、41作為consul集群的搭建節點;

rz -E
ll
-rw-r--r-- 1 root root 60030076 Nov ?8 01:42 consul_1.16.1_linux_amd64.zip

解壓到全局命令下;

unzip consul_1.16.1_linux_amd64.zip -d /usr/local/bin

· 運行consul服務

1,服務端創建集群

本次學習,我們拿31服務器節點當做consul集群的服務端;

[root@prometheus-server31 consul]# consul agent -server -bootstrap -bind=10.0.0.31 -data-dir=/consul -client=10.0.0.31 -ui

也可以查看下端口8500有沒有開啟~

瀏覽器訪問,可以看到,只有31一個節點;

10.0.0.31:8500

此時集群服務端已經啟動。

2,consul客戶端加入集群

[root@grafana71 consul]# consul agent ?-bind=10.0.0.71 -data-dir=/consul -client=10.0.0.71 -ui -retry-join=10.0.0.31

[root@prometheus-node41 consul]# consul agent ?-bind=10.0.0.41 -data-dir=/consul -client=10.0.0.41 -ui -retry-join=10.0.0.31

3,查看瀏覽器consul地址

此時,consul集群搭建完成;

至此,consul網絡集群服務搭建成功!~

2,配置prometheus配置文件

? ? ? ? 目的是讓prometheus去consul網絡中抓取被監控的節點;

[root@prometheus-server31 ~]# cat /prometheus/soft/prometheus/prometheus.yml?
#通用設置
global:
? #抓取監控的間隔時間,多長時間獲取一次數據(生產環境,建議15-30s);
? scrape_interval: 3s?
? #多久讀一次規則
? evaluation_interval: 15s?

#先不解釋,之后會講
alerting:
? alertmanagers:
? ? - static_configs:
? ? ? ? - targets:
? ? ? ? ? # - alertmanager:9093

#先不講,之后會講
rule_files:
? # - "first_rules.yml"
? # - "second_rules.yml"

#被監控的配置
scrape_configs:
? - job_name: "prometheus"
? ? static_configs:
? ? ? - targets: ["localhost:9090"]
? #另起一個job名稱,被監控的主體自定義名稱
? - job_name: "node-exporter01"
? ? #基于consul服務自動發現
? ? consul_sd_configs:
? ? ? #指定consul的服務器地址,若不指定,默認“localhost:8500”
? ? ? - server: 10.0.0.31:8500
? ? ? - server: 10.0.0.71:8500
? ? ? - server: 10.0.0.41:8500
? ? relabel_configs:
? ? ? #匹配consul的源標簽字段,表示服務的名稱
? ? ? - source_labels: [__meta_consul_service]
? ? ? ? # 指定源標簽的正則表達式,若不定義,默認值為"(.*)"
? ? ? ? regex: consul
? ? ? ? # 執行動作為刪除,默認值為"replace",有效值: replace, keep, and drop
? ? ? ? action: drop

[root@prometheus-server31 ~]# curl -X POST http://10.0.0.31:9090/-/reload

3,被監控節點加入consul服務

· 被監控節點41加入

[root@prometheus-node41 ~]# curl -X PUT -d '{"id":"prometheus-node41","name":"prometheus-node41","address":"10.0.0.41","port":9100,"tags":["node-exporter"],"checks": [{"http":"http://10.0.0.41:9100","interval":"5m"}]}' http://10.0.0.31:8500/v1/agent/service/register

· consul集群頁面查看

41加入成功;

· 被監控節點42加入

[root@prometheus-node42 node_exporter]# curl -X PUT -d '{"id":"prometheus-node42","name":"prometheus-node42","address":"10.0.0.42","port":9100,"tags":["node-exporter"],"checks": [{"http":"http://10.0.0.42:9100","interval":"5m"}]}' http://10.0.0.31:8500/v1/agent/service/register

· consul集群頁面查看

42加入成功

4,prometheus頁面查看

查看是否監控到41和42節點

5,拓展:節點下線consul服務

舉個花生/栗子:節點41下線,不讓prometheus監控了;

注意:

? ? ? ? 我們consul集群中有3臺集群,31、41、71,當被監控節點加入consul時選擇哪個集群節點加入的,那么退出集群時也需要指定加入時的節點;

? ? ? ? 加入指定的31退出也必須指定31.

curl -X PUT http://10.0.0.31:8500/v1/agent/service/deregister/prometheus-node41

四、總結

構建prometheus基于consul局域網絡監控自動發現節點的步驟;

1,構建consul局域網絡集群;

2,被監控節點“加入”consul集群;

3,修改prometheus配置文件,指定consul服務進行監控;

就此,成功了;

###############

至此,prometheus的服務發現,就學習完畢了;

###############

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717994.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717994.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717994.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Go-zero中分布式事務的實現(DTM分布式事務管理器,在一個APi中如何調用兩個不同服務的rpc層,并保證兩個不同服務之間的業務邏輯同時成功)

涉及到的相關技術 1.DTM分布式事務管理器,解決跨數據庫、跨服務、跨語言棧更新數據的一致性問題。 2.SAGA事務模式,SAGA事務模式是DTM中常用的一種模式,簡單易上手.(當然還有其它更多的事務模式,這里采用的SAGA只不過是其中一種較為簡單的方法) 3.Go-zero框架,ETCD服務注冊... …

Windows 2012 設置 nginx 開機自啟動(適用于windows2012/10)

Windows 2012 設置 nginx 開機自啟動(適用于windows2012/10)https://www.cnblogs.com/xuegqcto/articles/7521483.html 在windows server 2012上安裝nginx,同時配置開機自啟動服務(推薦使用“Windows Service Wrapper”工具&…

leetcode 740.刪除并活得點數

這道題和打家劫舍得思路很像。 思路:首先我們看到題目的意思,就是說我們如果選擇了一個數,那么它相鄰的數就會不得選入,也就是刪除。這就是上一個題那個相鄰的家不能偷的問題唄! 我們從那個地方轉換一下,…

【Linux】線程概念|線程理解|線程控制

文章目錄 線程概念Linux中線程是否存在的討論線程創建和線程控制線程的終止和等待(三種終止方式 pthread_join()的void**retval) 線程概念 線程就是進程內部的一個執行流,線程在進程內運行,線程在進程的地址空間內運行&#xff0…

LeetCode-第14題-最長公共前綴

1.題目描述 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴,返回空字符串 ""。 2.樣例描述 3.思路描述 按字符串數組每個數組的長度,將字符串數組從小到大排序;他們的公共前綴一定小于或等于最長元素長度…

(Aliyun AI ACP 06)視覺智能基礎知識:視覺智能常用模型與算法

文章目錄 阿里云人工智能工程師ACP認證考試知識點輔助閱讀(Aliyun AI ACP 06)視覺智能基礎知識:視覺智能常用模型與算法視覺智能建模流程圖像預處理技術圖像特征提取算法深度學習模型 阿里云人工智能工程師ACP認證考試知識點輔助閱讀 &#…

2024年智能駕駛年度策略:自動駕駛開始由創造型行業轉向工程型行業

感知模塊技術路徑已趨于收斂,自動駕駛從創造型行業邁向工程型行業。在特斯拉的引領下,國內主機廠2022年以來紛紛跟隨特斯拉相繼提出“重感知、輕地圖”技術方案,全球自動駕駛行業感知模塊技術路徑從百花齊放開始走向收斂。我們認為主機廠智能…

2023.3.3周報

目錄 摘要 一、文獻閱讀 1、題目 2、摘要 3、模型架構 4、文獻解讀 一、Introduction 二、實驗 三、結論 二、PINN 一、PINN比傳統數值方法有哪些優勢 二、PINN方法 三、正問題與反問題 三、PINN實驗 一、數學方程 二、模型搭建 總結 摘要 本周我閱讀了一篇…

Postman上傳文件的操作方法

前言 調用某個接口,測試上傳文件功能。一時間不知如何上傳文件,本文做個操作記錄,期望與你有益。 步驟一、設置Headers key:Content-Type value:multipart/form-data 步驟二、設置Body 選擇form-data key:file下拉框選擇file類型value&…

STM32(8)NVIC編程

中斷源由部分片上外設產生 在misc.h中找,雜項 配置NVIC GPIO和AFIO不能產生中斷源,但能通過EXTI,由EXTI產生中斷源 NVIC不需要開啟時鐘,因為NVIC模塊位于內核內部,芯片一上電就能工作。 中斷響應函數 中斷向量表在啟…

Java:JVM基礎

文章目錄 參考JVM內存區域程序計數器虛擬機棧本地方法棧堆方法區符號引用與直接引用運行時常量池字符串常量池直接內存 參考 JavaGuide JVM內存區域 程序計數器 程序計數器是一塊較小的內存空間,可以看做是當前線程所執行的字節碼的行號指示器,各線程…

Unity 常用的4種燈光、制作鏡子、燈光的調用修改數值、

創建燈光時,一般用4種:定向光、點光源、聚光、區域光、 定向光:太陽 點光源:燈泡 聚光燈:手電筒 區域光:烘焙-貼圖 燈光選擇已烘焙 需要先選擇被烘焙的物體,然后再選擇Contribute GI 等待進…

java中的set

Set Set集合概述和特點 不可以存儲重復元素 沒有索引,不能使用普通for循環遍歷 哈希值 哈希值簡介 是JDK根據對象的地址或者字符串或者數字算出來的int類型的數值 如何獲取哈希值 Object類中的public int hashCode():返回對象的哈希碼值。 哈希值的特點 同一個…

分布式ID生成算法|雪花算法 Snowflake | Go實現

寫在前面 在分布式領域中,不可避免的需要生成一個全局唯一ID。而在近幾年的發展中有許多分布式ID生成算法,比較經典的就是 Twitter 的雪花算法(Snowflake Algorithm)。當然國內也有美團的基于snowflake改進的Leaf算法。那么今天我們就來介紹一下雪花算法…

計算機視覺基礎知識(二)---數字圖像

像素 像素是分辨率的單位;構成位圖圖像的最基本單元;每個像素都有自己的顏色; 圖像分辨率 單位英寸內的像素點數;單位為PPI(Pixels Per Inch),為像素每英寸;PPI表示每英寸對角線上所擁有的像素數目:,x:長度像素數目,y:寬度像素數目,Z:屏幕大小;屏幕尺寸(大小)指的是對角線長…

GO語言學習筆記(與Java的比較學習)(八)

接口與反射 接口是什么 Go 語言不是一種 “傳統” 的面向對象編程語言:它里面沒有類和繼承的概念。 但是 Go 語言里有非常靈活的 接口 概念,通過它可以實現很多面向對象的特性。接口提供了一種方式來 說明 對象的行為:如果誰能搞定這件事&…

springer模板參考文獻不顯示

Spring期刊模板網站,我的問題是23年12月的版本 https://www.springernature.com/gp/authors/campaigns/latex-author-support/see-where-our-services-will-take-you/18782940 參考文獻顯示問好,在sn-article.tex文件中,這個sn-mathphys-num…

數據結構c版(3)——排序算法

本章我們來學習一下數據結構的排序算法! 目錄 1.排序的概念及其運用 1.1排序的概念 1.2 常見的排序算法 2.常見排序算法的實現 2.1 插入排序 2.1.1基本思想: 2.1.2直接插入排序: 2.1.3 希爾排序( 縮小增量排序 ) 2.2 選擇排序 2.2…

rtt的io設備框架面向對象學習-io設備管理層

目錄 1.設備基類2.rtt基類2.1 rtt基類定義2.2 對象容器定義2.3 rtt基類構造函數 3.io設備管理接口4.總結 這層我的理解就是rtt基類和設備基類所在,所以抽離出來好點,不然每個設備類都要重復它。 1.設備基類 /include/rtdef.h中定義了設備基類struct rt_…

記錄踩過的坑-PyTorch

安裝報錯 按PyTorch官網給出的命令 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 報錯 ERROR: Could not find a version that satisfies the requirement torch (from versions: none) ERROR: No matching distributio…