日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Prometheus-----2

發(fā)布時間:2024/1/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Prometheus-----2 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • prometheus數(shù)據(jù)模型
      • 概述
      • 指標類型
      • 作業(yè)job和實例targets/instance
      • prometheusQL(數(shù)據(jù)查詢語言也是[時序數(shù)據(jù)庫](https://so.csdn.net/so/search?q=時序數(shù)據(jù)庫&spm=1001.2101.3001.7020)使用語言)
    • prometheus數(shù)據(jù)模塊
    • 表達式瀏覽器(promQL過濾使用)
    • 部署service discovery服務(wù)發(fā)現(xiàn)
      • Prometheus指標抓取的[生命周期](https://so.csdn.net/so/search?q=生命周期&spm=1001.2101.3001.7020)
      • prometheus 服務(wù)發(fā)現(xiàn)機制
      • 靜態(tài)配置發(fā)現(xiàn)
      • 動態(tài)發(fā)現(xiàn)
        • 基于文件服務(wù)發(fā)現(xiàn)
          • 編寫Prometheus.yml文件
          • 指定配置文件啟動
          • 在node節(jié)點開啟服務(wù)
          • 文件發(fā)現(xiàn)的作用
      • 基于DNS自動發(fā)現(xiàn)
      • 基于consul發(fā)現(xiàn)
        • 1)相關(guān)概念
        • 2)安裝consul_1.9.0版本
        • 3)啟動開發(fā)者模式
        • 4)編輯/etc/consul目錄下的prometheus-servers.json配置文件
        • 5)創(chuàng)建consul自動發(fā)現(xiàn)的prometheus.yml文件
        • 6)注冊其他node節(jié)點
    • 總結(jié)
      • 指標類型
      • 作業(yè)job和實例targets/instance
      • prometheusQL兩種向量
      • prometheus的配置文件
      • prometheus架構(gòu)模型(工作流程)

prometheus數(shù)據(jù)模型

概述

  • prometheus僅用鍵值方式存儲時序式的聚合數(shù)據(jù),他不支持文本信息
  • 從每個target中會采集出很多指標,那么每個指標會暴露很多樣本數(shù)據(jù)點,而這些數(shù)據(jù)點pro都需要存儲而這些指標會以固定時間間隔生成很多樣本數(shù)據(jù)點,而如何標示這些樣本數(shù)據(jù)點,則是數(shù)據(jù)模型學(xué)習(xí)的意義

①時序列標識:key+lables

②當前時間序列的樣本值value

③這些標簽可以作為過濾器進行指標過濾及聚合運算,如何從上萬的數(shù)據(jù)過濾出關(guān)鍵有限的時間序列,同時從有限的時間序列在特定范圍的樣本那就需要手動編寫出時間序列的樣本表達式來過濾出我們需求的樣本數(shù)據(jù)

指標類型

  • 默認都是以雙精度浮點型數(shù)據(jù)(服務(wù)端無數(shù)據(jù)量類型數(shù)據(jù)–類型是對客戶端有意義的)

①counter : 計數(shù)器單調(diào)遞增
②gauge:儀表盤:有起伏特征的
③histogram:直方圖(統(tǒng)計的概念,做分位數(shù)統(tǒng)計):
在一段時間范圍內(nèi)對數(shù)據(jù)采樣的相關(guān)結(jié)果,并記入配置的bucket中,他可以存儲更多的數(shù)據(jù),包括樣本值分布在每個bucket的數(shù)量,從而iprometheus就可以使用內(nèi)置函數(shù)進行計算:

計算樣本平均值:以值得綜合除以值的數(shù)量
計算樣本分位值:分位數(shù)有助于了解符合特定標準的數(shù)據(jù)個數(shù),例如評估響應(yīng)時間超過1秒的請求比例,若超過20%則進行告警等

④summary(統(tǒng)計數(shù)據(jù)),摘要,histogram的擴展類型,它是直接由監(jiān)控端自行聚合計算出分位數(shù),同時將計算結(jié)果響應(yīng)給prometheus server的樣本采集請求,因而,其分位數(shù)計算是由監(jiān)控端完成

計數(shù)器:單調(diào)遞增 儀表盤:起伏特征 直方圖:平均數(shù)或分位值 sumamary(統(tǒng)計數(shù)據(jù))

作業(yè)job和實例targets/instance

  • job:能夠接收prometheus server數(shù)據(jù)scrape ;兩種job:“mysql_nodes" “mysql_master_slave”,每一種job會分開進行拉取數(shù)據(jù)以及展示數(shù)據(jù)
  • targets:每一個可以被監(jiān)控的系統(tǒng),成為targets多個相同的targets的集合(類)稱為job
  • instance:實例與targets(類似)
  • 與target相比,instance更趨近于一個具體可以提供監(jiān)控數(shù)據(jù)的實例,而targets則更像一個對象、目標性質(zhì)

    targets 與 instance區(qū)別:都代表了被監(jiān)控端可以吐出監(jiān)控數(shù)據(jù)的被監(jiān)控端這個對象,tagers更傾向于是一個集合,instance更傾向于具體的被監(jiān)控端

    prometheusQL(數(shù)據(jù)查詢語言也是時序數(shù)據(jù)庫使用語言)

    • 支持兩種向量,同時內(nèi)置提供了一組用于數(shù)據(jù)處理的函數(shù),來對樣本數(shù)據(jù)進行基礎(chǔ)的分析(Ai算法、機器學(xué)習(xí)、深度學(xué)習(xí)來分析、預(yù)測系統(tǒng)之后的運行走勢)

    **①即時向量:**最近以此時間戳上跟蹤的數(shù)據(jù)指標(一個時間點上的所有數(shù)據(jù))
    即時向量選擇器:返回0個1個或者多個時間序列上在給定時間戳上的各自的一個樣本,該樣本成為即時樣本

    **②時間范圍向量:**指定時間范圍內(nèi)所有時間戳上的數(shù)據(jù)指標
    范圍向量選擇器:返回0個1個或多個時間序列上在給定時間范圍內(nèi)的各自的一組樣本(范圍向量選擇器無法用于繪圖)

    prometheus數(shù)據(jù)模塊

    global:全局配置

    altermanager configuration:告警模塊(通過prometheusQL+布爾值表達式產(chǎn)生告警信息)

    rules

    scrape

    表達式瀏覽器(promQL過濾使用)

    表達式瀏覽器常規(guī)使用
    在prometheusUI控制臺上可以進行數(shù)據(jù)過濾
    簡單的用法:

    • CPU使用總量
    node_cpu_seconds_total

    • 計算過去5分鐘內(nèi)的CPU使用速率
    PromQL:(1-avg(irate(node_cpu_seconds_total{cpu="0",mode="idle"}[5m]))by(instance))*100avg:平均值 avg (irate (node_cpu_seconds_total{fmode=‘idle’ } [5m]):可以理解為CPU空閑量的百分比 by (instance):表示的是所有節(jié)點

    • 每臺主機CPU在5分鐘內(nèi)的平均使用率
    PromQL:(1-avg(irate(node_cpu_seconds_total{cpu="0",mode="idle"}[5m]))by(instance))*100avg:平均值 avg (irate (node_cpu_seconds_total{fmode=‘idle’ } [5m]):可以理解為CPU空閑量的百分比 by (instance):表示的是所有節(jié)點

    • 查詢1分鐘平均負載超過主機CPU數(shù)量兩倍的時間序列
    node_load1 > on (instance) 2 * count (node_cpu_seconds_total{mode='idle'})by (instance) node_load5 node_load15 1、5、15分鐘的cpu負載 一般來說以上的值不能長時間大于CPU核心數(shù)量

    • 內(nèi)存使用率
    node_memory_MemTotal_bytes node_memory_MemFree_bytes node_memory_Buffers_bytes node_memory_Cached_ bytes計算使用率: 可用空間:以上后三個指標之和 己用空間:總空間減去可用空間 使用率:己用空間除以總空間

    部署service discovery服務(wù)發(fā)現(xiàn)

    Prometheus指標抓取的生命周期

    • 隱藏敏感數(shù)據(jù) 整合多個標簽,來進行單個自定義指標數(shù)據(jù)的輸出
    • 發(fā)現(xiàn)——> 配置 ——> relabel(配置定義/服務(wù)自身執(zhí)行)——> 指標數(shù)據(jù)抓取——> metrics relabel(自定義)

    Prometheus的服務(wù)發(fā)現(xiàn)(基于文件、DNS、consul、k8s等各種主流的服務(wù)發(fā)現(xiàn)總線)

    #默認:static_config : 靜態(tài)配置形式的服務(wù)發(fā)現(xiàn)

    ①基于文件的服務(wù)發(fā)現(xiàn);
    (定義一組資源"子"配置文件yaml格式 里面只存方需要采集的targets 信息,此種方式可以被pro動態(tài)獲取到,而不需要重啟)

    ②基于DNS的服務(wù)發(fā)現(xiàn);

    ③基于API的服務(wù)發(fā)現(xiàn):Kubernetes、Consul、Azure、重新標記

    • target重新打標

    • metric重新打標

    ④基于K8s的服務(wù)發(fā)現(xiàn)

    prometheus 服務(wù)發(fā)現(xiàn)機制

  • Prometheus Server的數(shù)據(jù)抓取工作于Pull模型,因而,它必需要事先知道各Target的位置,然后才能從相應(yīng)的Exporter或Instrumentation中抓取數(shù)據(jù)
  • 對于小型的系統(tǒng)環(huán)境來說,通過static_dpnfigs指定各Target便能解決問題,這也是最簡單的配置方法;每個Targets用一個網(wǎng)絡(luò)端點(ip:port)進行標識;
  • 對于中大型的系統(tǒng)環(huán)境或具有較強動態(tài)性的云計算環(huán)境來說,靜態(tài)配置顯然難以適用;因此,Prometheus為此專門設(shè)計了一組服務(wù)發(fā)現(xiàn)機制,以便于能夠基于服務(wù)注冊中心(服務(wù)總線)自動發(fā)現(xiàn)、檢測、分類可被監(jiān)控的各Target,以及更新發(fā)生了變動的Target指標抓取的生命周期
  • 在每個scrape_interval期間,Prometheus都會檢查執(zhí)行的作業(yè)(Job);這些作業(yè)首先會根據(jù)Job上指定的發(fā)現(xiàn)配置生成target列表,此即服務(wù)發(fā)現(xiàn)過程;服務(wù)發(fā)現(xiàn)會返回一個Target列表,其中包含一組稱為元數(shù)據(jù)的標簽,這些標簽都以" meta_"為前綴;
  • 服務(wù)發(fā)現(xiàn)還會根據(jù)目標配置來設(shè)置其它標簽,這些標簽帶有"“前綴和后綴,b包括"scheme”、 " address"和" metrics path_",分別保存有target支持使用協(xié)議(http或https,默認為http) 、 target的地址及指標的URI路徑(默認為/metrics) ;
  • 若URI路徑中存在任何參數(shù),則它們的前綴會設(shè)置為" param"這些目標列表和標簽會返回給Prometheus,其中的一些標簽也可以配置中被覆蓋;
  • 配置標簽會在抓取的生命周期中被重復(fù)利用以生成其他標簽,例如,指標上的instance標簽的默認值就來自于address標簽的值;
  • 對于發(fā)現(xiàn)的各目標,Prometheus提供了可以重新標記(relabel)目標的機會,它定義在job配置段的relabel_config配置中,常用于實現(xiàn)如下功能
    • 以上的8條——>詳細版的prometheus工作生命周期
    • 將來自服務(wù)發(fā)現(xiàn)的元數(shù)據(jù)標簽中的信息附加到指標的標簽上
    • 過濾目標(會利用于重打標簽機制上)

    之后便是數(shù)據(jù)抓取,以及指標返回的過程,抓取而來的指標在保存之前,還允許用戶對指標重新打標過濾的方式
    它定義在job配置段的metric_relabel_configs配置中,常用于實現(xiàn)如下功能#冊刪除不必要的指標
    從指標中冊刪除敏感或者不需要的標簽
    添加、編輯或者修改指標的標簽值或標簽格式

    靜態(tài)配置發(fā)現(xiàn)

    • 修改prometheus服務(wù)器上的配置為文件,指定targets的端口上面配置過
    - job_name: "node"static_configs:- targets:- 192.168.116.135:9100- 192.168.116.137:9100- 192.168.116.138:9100

    動態(tài)發(fā)現(xiàn)

    基于文件服務(wù)發(fā)現(xiàn)

    基于文件的服務(wù)發(fā)現(xiàn)僅僅略優(yōu)于靜態(tài)配置的服務(wù)發(fā)現(xiàn)方式,它不依賴于任何平臺或第三方服務(wù),因而也是最為簡單和通用的實現(xiàn)方式。prometheus server定期從文件中加載target信息(pro-server pull指標發(fā)現(xiàn)機制-job_name
    獲取我要pull的對象target)文件可以只用json和yaml格式,它含有定義的target列表,以及可選的標簽信息,以下第一配置,能夠?qū)rometheus默認的靜態(tài)配置轉(zhuǎn)換為基于文件的服務(wù)發(fā)現(xiàn)時所需的配置;(rometheus會周期性的讀取、重載此文件中的配置,從而達到動態(tài)發(fā)現(xiàn)、更新的操作)

    編寫Prometheus.yml文件
    cd /usr/local/prometheus/mkdir file_sd && cd file_sdmkdir targets vim /usr/local/prometheus/prometheus.yml------只列出與靜態(tài)Prometheus.yml文件區(qū)別的地方-------- job_name: 'prometheus'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.file_sd_configs:- files:- targets/prometheus_*.yamlrefresh_interval: 2m# All nodes- job_name: 'nodes'file_sd_configs:- files:- targets/nodes_*.yamlrefresh_interval: 2m

    指定配置文件啟動
    ./prometheus --config.file=./file_sd/prometheus.yml

    在node節(jié)點開啟服務(wù)

    文件發(fā)現(xiàn)的作用

    如果增加node或者prometheus服務(wù)端節(jié)點只需更改nodes_centos.yaml prometheus_server.yaml兩個文件添加地址就行,不需要停止服務(wù)

    基于DNS自動發(fā)現(xiàn)

    基于DNS的服務(wù)發(fā)現(xiàn)針對一組DNS域名進行定期查詢,以發(fā)現(xiàn)待監(jiān)控的目標查詢時使用的DNS服務(wù)器由/etc/resolv.conf文件指定;

    該發(fā)現(xiàn)機制依賴于A、AAAA和SRv資源記錄,且僅支持該類方法,
    尚不支持RFC6763中的高級DNS發(fā)現(xiàn)方式

    • SRV: SRV記錄的作用是指明某域名下提供的服務(wù)。實例:
      _http._tcp.example.com.SRV 10 5 80. www.example.comSRV后面項目的含義:
      10 -優(yōu)先級,類似MX記錄
      5 -權(quán)重
      80-端口
      www.example.com -實際提供服務(wù)的主機名。同時SRV可以指定在端口上對應(yīng)哪個service
    • hprometheus 基于Dws的服務(wù)中的SRV記錄,讓prometheus發(fā)現(xiàn)指定target上對應(yīng)的端口對應(yīng)的是exporter或instrumentation

    基于consul發(fā)現(xiàn)

    1)相關(guān)概念

    一款基于golang開發(fā)的開源工具,主要面向分布式,服務(wù)化的系統(tǒng)提供服務(wù)注冊、服務(wù)一發(fā)現(xiàn)和配置管理的功能提供服務(wù)注冊/發(fā)現(xiàn)、健康檢查、Key/Value存儲、多數(shù)據(jù)中心和分布式一致性保證等功能

    原理:通過定義json文件將可以進行數(shù)據(jù)采集的服務(wù)注冊到consul中,用于自動發(fā)現(xiàn)同時使用prometheus做為client端獲取consul上注冊的服務(wù),從而進行獲取數(shù)據(jù)

    2)安裝consul_1.9.0版本

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

    3)啟動開發(fā)者模式

    consul開發(fā)者模式,可以快速開啟單節(jié)點的consul服務(wù),具有完整功能,方便開發(fā)測試

    mkdir -pv /consul/data/ mkdir /etc/consul && cd /etc/consulconsul agent -dev -ui -data-dir=/consul/data/ \ -config-dir=/etc/consul/ -client=0.0.0.0

    agent -dev:運行開發(fā)模式
    agent -server:運行server模式
    -ui:ui界面
    -data-dir:數(shù)據(jù)位置
    /etc/consul:可以以文件形式定義各個services的配置,也可以基于api接口直接配置
    -client:監(jiān)聽地址

    4)編輯/etc/consul目錄下的prometheus-servers.json配置文件

    vim /etc/consul/prometheus-servers.json{"services": [{"id": "prometheus-server-node01","name": "prom-server-node01","address": "192.168.226.128","port": 9090,"tags": ["prometheus"],"checks": [{"http": "http://192.168.226.128:9090/metrics","interval": "5s"}]}] } consul reload #重載配置文件

    啟動prometheus

    5)創(chuàng)建consul自動發(fā)現(xiàn)的prometheus.yml文件

    cd /usr/local/prometheus/mkdir consul_sd && cd consul_sdvim prometheus.yml- job_name: 'prometheus'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.consul_sd_configs:- server: "192.168.32.10:8500"tags:- "prometheus"refresh_interval: 2m# All nodes- job_name: 'nodes'consul_sd_configs:- server: "192.168.32.10:8500"tags:- "nodes"refresh_interval: 2m

    配置文件啟動prometheus

    ./prometheus --config.file=./consul_sd/prometheus.yml

    開啟consul服務(wù)

    6)注冊其他node節(jié)點

    vim /etc/consul/nodes.json{"services": [{"id": "node_exporter-node01","name": "node01","address": "192.168.116.136","port": 9100,"tags": ["nodes"],"checks": [{"http": "http://192.168.116.136:9100/metrics","interval": "5s"}]},{"id": "node_exporter-node02","name": "node02","address": "192.168.116.137","port": 9100,"tags": ["nodes"],"checks": [{"http": "http://192.168.116.137:9100/metrics","interval": "5s"}]}] }

    重載配置文件

    consul reload

    啟動node節(jié)點

    總結(jié)

    指標類型

    計數(shù)器:單調(diào)遞增

    儀表盤:起伏特征

    直方圖:平均數(shù)或分位值

    sumamary(統(tǒng)計數(shù)據(jù))

    作業(yè)job和實例targets/instance

    ①job:能夠接收prometheus server數(shù)據(jù)scrape ;兩種job:“mysql_nodes" “mysql_master_slave”,每一種job會分開進行拉取數(shù)據(jù)以及展示數(shù)據(jù)

    ②指標(配置文件/promql) : targets 與 instance區(qū)別:都代表了被監(jiān)控端可以吐出監(jiān)控數(shù)據(jù)的被監(jiān)控端這個對象,tagers偏向于表示一個集合,instance偏向于表示具體的一個可提供監(jiān)控數(shù)據(jù)的對象

    PromQL : 指標 {標簽1=標簽值1,......標簽N=標簽值N} 樣本(值)

    prometheusQL兩種向量

    ①即時向量:表示的是一個時間刻度

    ②時間范圍向量:表示的是一組時間區(qū)間

    ③即時向量選擇器:在指定的時間戳上的數(shù)值(稱之為即時向量樣本)

    ④范圍向量選擇器:在一組時間區(qū)間內(nèi)的0或1或多個數(shù)值(范圍向量樣本)

    支持多種即時向量組合形式,不支持多種時間范圍向量組合形式

    prometheus的配置文件

    ①global:全局配置 ②altermanager :告警模塊 ③rules ④scrape(服務(wù)發(fā)現(xiàn))

    prometheus架構(gòu)模型(工作流程)

    crape收集數(shù)據(jù)方式:①exporter ②自建/內(nèi)建指標 ③pushgateway

    服務(wù)發(fā)現(xiàn):①基于fd文件 ②基于DNS——>SRV記錄 ③基于consul——>自動發(fā)現(xiàn),同時利用prometheus的自身周期掃描配置文件更新項并加載的特性,實現(xiàn)動態(tài)更新 ④基于k8s服務(wù)發(fā)現(xiàn)

    總結(jié)

    以上是生活随笔為你收集整理的Prometheus-----2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。