国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

docker安裝prometheus和grafana

這篇具有很好參考價值的文章主要介紹了docker安裝prometheus和grafana。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

docker安裝prometheus和grafana

  • docker安裝prometheus和grafana
    • 概念簡述
    • 安裝prometheus
      • 第一步:確保安裝有docker
      • 第二步:拉取鏡像
      • 第三步:準(zhǔn)備相關(guān)掛載目錄及文件
      • 第四步:啟動容器
      • 第五步:訪問測試
    • 安裝grafana
      • 第一步:確保安裝有docker
      • 第二步:拉取鏡像
      • 第三步:準(zhǔn)備相關(guān)掛載目錄及文件
      • 第四步:啟動容器
      • 第五步:訪問測試
      • 第六步:使用測試
    • 安裝exporter監(jiān)控采集程序,采集數(shù)據(jù)進prometheus
      • node-exporter
    • 安裝alertmanager,集成進prometheus
      • 安裝alertmanager
        • 第一步:確保安裝有docker
        • 第二步:拉取鏡像
        • 第三步:準(zhǔn)備相關(guān)掛載目錄及文件
        • 第四步:啟動容器
        • 第五步:確保alertmanager正常啟動
      • 集成進prometheus
        • 第一步:啟用alertmanager
        • 第二步:增加prometheus預(yù)警規(guī)則
        • 第三步:使得最新的prometheus配置生效
        • 第四步:驗證預(yù)警生效
    • 相關(guān)資料

概念簡述

  • prometheus(普羅米修斯):天生為采集存儲監(jiān)控數(shù)據(jù)而生的時序數(shù)據(jù)庫。prometheus通過各種Exporter采集到監(jiān)控數(shù)據(jù),然后存儲進prometheus中,以供查詢展示

  • grafana:一個監(jiān)控儀表系統(tǒng)。grafana的數(shù)據(jù)來源可以有很多(如:Prometheus、Graphite、OpenTSDB、InfluxDB、MySQL/PostgreSQL、Microsoft SQL Serve等等),其中用得最多的數(shù)據(jù)源是prometheus

    注:prometheus也有自己的UI,不過功能沒有g(shù)rafana強大

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

安裝prometheus

第一步:確保安裝有docker

查看docker版本

docker -v

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

第二步:拉取鏡像

# 你也可以直接拉docker pull prom/prometheus, 即拉取最新的鏡像docker pull prom/prometheus:lastest
docker pull prom/prometheus:v2.41.0

第三步:準(zhǔn)備相關(guān)掛載目錄及文件

準(zhǔn)備目錄

# /opt/prometheus/data目錄,準(zhǔn)備用來掛載放置prometheus的數(shù)據(jù)
# /opt/prometheus/config目錄,準(zhǔn)備用來放置prometheus的配置文件
# /opt/prometheus/rules目錄,準(zhǔn)備用來掛載放置prometheus的規(guī)則文件
mkdir -p /opt/prometheus/{data,config,rules}
# 授權(quán)相關(guān)文件夾權(quán)限
chmod -R 777 /opt/prometheus/data
chmod -R 777 /opt/prometheus/config
chmod -R 777 /opt/prometheus/rules

準(zhǔn)備文件

# 配置文件
cat > /opt/prometheus/config/prometheus.yml << \EOF
global:
  # 數(shù)據(jù)采集間隔
  scrape_interval:     45s
  # 告警檢測間隔
  evaluation_interval: 45s

# 告警規(guī)則
rule_files:
  # 這里匹配指定目錄下所有的.rules文件
  - /prometheus/rules/*.rules

# 采集配置
scrape_configs:
  # 采集項(prometheus)
  - job_name: 'prometheus'
    static_configs:
      # prometheus自帶了對自身的exporter監(jiān)控程序,所以不需額外安裝exporter就可配置采集項
      - targets: ['localhost:9090']
EOF

# 查看一下配置文件
cat /opt/prometheus/config/prometheus.yml

prometheus配置項說明

  • global:全局配置 (如果有內(nèi)部單獨設(shè)定,會覆蓋這個參數(shù))
  • alerting:告警插件定義。這里會設(shè)定alertmanager這個報警插件
  • rule_files:告警規(guī)則。 按照設(shè)定參數(shù)進行掃描加載,用于自定義報警規(guī)則,其報警媒介和route路由由alertmanager插件實現(xiàn)
  • scrape_configs:采集配置。配置數(shù)據(jù)源,包含分組job_name以及具體target。又分為靜態(tài)配置和服務(wù)發(fā)現(xiàn)
  • remote_write:用于遠(yuǎn)程存儲寫配置
  • remote_read:用于遠(yuǎn)程讀配置

第四步:啟動容器

# 啟動prometheus
# config.file:指定容器中,配置文件的位置
# web.enable-lifecycle:啟動此項后,當(dāng)配置文件發(fā)生變化后,可通過HTTP API 發(fā)送 post 請求到 /-/reload,實現(xiàn)熱加載,如:curl -X POST http://47.105.39.189:9090/-/reload
# -v /etc/localtime:/etc/localtime:ro表示讓容器使用宿主機的時間, :ro表示只讀(注:此方式只針對宿主機和容器的時區(qū)文件均為/etc/localtime)
docker run --name prometheus -d \
    -p 9090:9090 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /opt/prometheus/data:/prometheus/data \
    -v /opt/prometheus/config:/prometheus/config \
    -v /opt/prometheus/rules:/prometheus/rules \
    prom/prometheus:v2.41.0 --config.file=/prometheus/config/prometheus.yml --web.enable-lifecycle

第五步:訪問測試

訪問{ip}:9090即可

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

安裝grafana

第一步:確保安裝有docker

查看docker版本

docker -v

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

第二步:拉取鏡像

鏡像有哪些版本,可以通過查看一個docker鏡像有哪些版本查看

# 你也可以直接拉docker pull grafana/grafana, 即拉取最新的鏡像docker pull grafana/grafana:lastest
docker pull grafana/grafana:9.3.2

第三步:準(zhǔn)備相關(guān)掛載目錄及文件

準(zhǔn)備目錄

# /opt/grafana/data目錄,準(zhǔn)備用來掛載放置grafana的數(shù)據(jù)
# /opt/grafana/plugins目錄,準(zhǔn)備用來放置grafana的插件
# /opt/grafana/config目錄,準(zhǔn)備用來掛載放置grafana的配置文件
mkdir -p /opt/grafana/{data,plugins,config}
# 授權(quán)相關(guān)文件夾權(quán)限
chmod -R 777 /opt/grafana/data
chmod -R 777 /opt/grafana/plugins
chmod -R 777 /opt/grafana/config

準(zhǔn)備配置文件

# 先臨時啟動一個容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana:9.3.2
# 將容器中默認(rèn)的配置文件拷貝到宿主機上
docker cp grafana-tmp:/etc/grafana/grafana.ini /opt/grafana/config/grafana.ini
# 移除臨時容器
docker stop grafana-tmp
docker rm grafana-tmp

# 修改配置文件(需要的話)
# vim /opt/grafana/config/grafana.ini

第四步:啟動容器

# 啟動prometheus
# 環(huán)境變量GF_SECURITY_ADMIN_PASSWORD:指定admin的密碼
# 環(huán)境變量GF_INSTALL_PLUGINS:指定啟動時需要安裝得插件
#         grafana-clock-panel代表時間插件
#         grafana-simple-json-datasource代表json數(shù)據(jù)源插件
#         grafana-piechart-panel代表餅圖插件
docker run -d \
    -p 3000:3000 \
    --name=grafana \
    -v /etc/localtime:/etc/localtime:ro \
    -v /opt/grafana/data:/var/lib/grafana \
    -v /opt/grafana/plugins/:/var/lib/grafana/plugins \
    -v /opt/grafana/config/grafana.ini:/etc/grafana/grafana.ini \
    -e "GF_SECURITY_ADMIN_PASSWORD=admin" \
    -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" \
    grafana/grafana:9.3.2

第五步:訪問測試

訪問{ip}:3000即可,使用賬密admin/admin進行登錄即可

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

第六步:使用測試

  1. 添加數(shù)據(jù)源

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

    選擇普羅米修斯作為數(shù)據(jù)源

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

  2. 制作(或?qū)耄﹥x表盤

    grafana官網(wǎng)提供了很多模板,選擇你喜歡的樣式,直接輸入Dashboard Id即可直接導(dǎo)入

    這里列出幾個本人使用的Dashboard Id

    • 12633:Linux主機詳情

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

此時,界面就出來了

提示:這會兒還沒有數(shù)據(jù),是因為prometheus里面本來就沒有數(shù)據(jù),后面我們只需要使用相應(yīng)的exporter往prometheus錄入一些監(jiān)控數(shù)據(jù)(如:安裝node-exporter),這里就會顯示出來了

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

安裝exporter監(jiān)控采集程序,采集數(shù)據(jù)進prometheus

node-exporter

官方不建議通過Docekr方式部署node-exporter,因為它需要訪問主機系統(tǒng)

node-exporter 可以采集機器(物理機、虛擬機、云主機等)的監(jiān)控指標(biāo)數(shù)據(jù),能夠采集到的指標(biāo)包括 CPU, 內(nèi)存,磁盤,網(wǎng)絡(luò),文件數(shù)等信息

  1. 安裝node-exporter

    # 下載
    wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
    # 解壓
    tar -xvf node_exporter-1.1.2.linux-amd64.tar.gz
    cd node_exporter-1.1.2.linux-amd64
    # 啟動
    nohup ./node_exporter  --web.listen-address=":9100" &
    
  2. 訪問一下,確保node-exporter已正常啟動

    或者直接curl 47.105.39.189:9100進行驗證也可

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

  3. 在prometheus中配置當(dāng)前采集項

    編輯配置文件

    vim /opt/prometheus/config/prometheus.yml
    

    增加當(dāng)前采集項目

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

  4. 使得最新的prometheus配置生效

    你可以重啟prometheus或者使用熱加載使新配置生效,這里我們使用熱加載的方式

    # 前提條件:啟動prometheus時,啟用了web.enable-lifecycle
    # 發(fā)送post請求到prometheus的/-/reload下觸發(fā)熱加載配置
    curl -X POST http://47.105.39.189:9090/-/reload
    

    注:若你觸發(fā)熱加載后,過個一會兒還沒看到監(jiān)控的變化, 那么你可以使用docker logs {prometheus容器}查看prometheus日志,看到底是否觸發(fā)了熱加載

  5. 驗證一下

    此時,我們再在grafana上看監(jiān)控面板,就會發(fā)現(xiàn)有數(shù)據(jù)了

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

安裝alertmanager,集成進prometheus

安裝alertmanager

第一步:確保安裝有docker

查看docker版本

docker -v

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

第二步:拉取鏡像

鏡像有哪些版本,可以通過查看一個docker鏡像有哪些版本查看

# 你也可以直接拉docker pull prom/alertmanager, 即拉取最新的鏡像docker pull prom/alertmanager:lastest
docker pull prom/alertmanager:v0.25.0
第三步:準(zhǔn)備相關(guān)掛載目錄及文件

準(zhǔn)備目錄

# /opt/alertmanager/config目錄,準(zhǔn)備用來放置alertmanager的配置文件
# /opt/alertmanager/template目錄,準(zhǔn)備用來掛載放置alertmanager的模板文件
mkdir -p /opt/alertmanager/{config,template}
# 授權(quán)相關(guān)文件夾權(quán)限
chmod -R 777 /opt/alertmanager/config
chmod -R 777 /opt/alertmanager/template

準(zhǔn)備配置文件

# 配置文件
cat > /opt/alertmanager/config/alertmanager.yml << \EOF
global:
  resolve_timeout: 5m
  # 發(fā)件人
  smtp_from: '1612513157@qq.com'
  # 郵箱服務(wù)器的 POP3/SMTP 主機配置 smtp.qq.com 端口為 465 或 587
  smtp_smarthost: 'smtp.qq.com:465'
  # 用戶名
  smtp_auth_username: '1612513157@qq.com'
  # 授權(quán)碼 或 密碼
  smtp_auth_password: '你的qq授權(quán)碼'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
templates:
  # 指定預(yù)警內(nèi)容模板
  - '/etc/alertmanager/template/email.tmpl'
route:
  # 指定通過什么字段進行告警分組(如:alertname=A和alertname=B的將會被分導(dǎo)兩個組里面)
  group_by: ['alertname']
  # 在組內(nèi)等待所配置的時間,如果同組內(nèi),5 秒內(nèi)出現(xiàn)相同報警,在一個組內(nèi)出現(xiàn)
  group_wait: 5s
  # 如果組內(nèi)內(nèi)容不變化,合并為一條警報信息,5 分鐘后發(fā)送
  group_interval: 5m
  # 發(fā)送告警間隔時間 s/m/h,如果指定時間內(nèi)沒有修復(fù),則重新發(fā)送告警
  repeat_interval: 5m
  # 默認(rèn)的receiver。 如果一個報警沒有被任何一個route匹配,則發(fā)送給默認(rèn)的接收器
  receiver: 'justrydeng163email'
  #子路由(上面所有的route屬性都由所有子路由繼承,并且可以在每個子路由上進行覆蓋)
  routes:
  # 當(dāng)觸發(fā)當(dāng)前預(yù)警的prometheus規(guī)則滿足:標(biāo)簽alarmClassify的為normal時(標(biāo)簽名、標(biāo)簽值可以自定義,只要和編寫的prometheus的rule里面設(shè)置的標(biāo)簽呼應(yīng)上即可),往justrydeng163email發(fā)送郵件
  - receiver: justrydeng163email
    match_re:
      alarmClassify: normal
  # 當(dāng)觸發(fā)當(dāng)前預(yù)警的prometheus規(guī)則滿足:標(biāo)簽alarmClassify的值為special時(標(biāo)簽名、標(biāo)簽值可以自定義,只要和編寫的prometheus的rule里面設(shè)置的標(biāo)簽呼應(yīng)上即可),往justrydengQQemail發(fā)送郵件
  - receiver: justrydengQQemail
    match_re:
      alarmClassify: special
receivers:
- name: 'justrydeng163email'
  email_configs:
  # 如果想發(fā)送多個人就以 ',' 做分割
  - to: '13548417409@163.com'
    send_resolved: true
    # 接收郵件的標(biāo)題
    headers: {Subject: "alertmanager報警郵件"}
- name: 'justrydengQQemail'
  email_configs:
  # 如果想發(fā)送多個人就以 ',' 做分割
  - to: '1249823187@qq.com'
    send_resolved: true
    # 接收郵件的標(biāo)題
    headers: {Subject: "alertmanager報警郵件"}
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
EOF

# 查看一下配置文件
cat /opt/alertmanager/config/alertmanager.yml

準(zhǔn)備預(yù)警內(nèi)容模板文件

# 因為我們進行了掛載,所以我們只需編輯宿主機上的模板文件即可
cat > /opt/alertmanager/template/email.tmpl << \EOF
{{ define "email.html" }}
<table border="1">
        <tr>
                <td>報警項</td>
                <td>實例</td>
                <td>報警閥值</td>
                <td>開始時間</td>
                <td>告警信息</td>
        </tr>
        {{ range $i, $alert := .Alerts }}
                <tr>
                        <td>{{ index $alert.Labels "alertname" }}</td>
                        <td>{{ index $alert.Labels "instance" }}</td>
                        <td>{{ index $alert.Annotations "value" }}</td>
                        <td>{{ $alert.StartsAt }}</td>
                        <td>{{ index $alert.Annotations "description" }}</td>
                </tr>
        {{ end }}
</table>
{{ end }}
EOF

# 查看一下模板文件
cat /opt/alertmanager/template/email.tmpl

提示:模板文件中,占位符取值,取的是prometheus的rules文件中對應(yīng)的值,你可以先寫好prometheus的規(guī)則文件后,再來編寫模板文件

第四步:啟動容器
# 啟動alertmanager (啟動后docker ps檢查一下,確保alertmanager起來了即可)
docker run -d --name=alertmanager \
    -p 9093:9093 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /opt/alertmanager/config/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
    -v /opt/alertmanager/template:/etc/alertmanager/template \
    prom/alertmanager:v0.25.0
第五步:確保alertmanager正常啟動
# 查看一下docker容器
docker ps | grep alertmanager
# 再看一下alertmanager的日志
docker logs --tail=50 alertmanager

集成進prometheus

第一步:啟用alertmanager

編輯配置文件

vim /opt/prometheus/config/prometheus.yml

啟用alertmanager

# 啟用alertmanager
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # alertmanager的地址
          - 172.31.113.186:9093

docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

第二步:增加prometheus預(yù)警規(guī)則

提示:prometheus的rules機制,即便不集成alertmanager也是可以用的

# 因為我們啟動prometheus時,是掛載了宿主機的/opt/prometheus/rules目錄到/prometheus/rules下,且配置了/prometheus/rules目錄下所有的.rules文件都會被作為規(guī)則文件的
# 所以我們只需要將規(guī)則文件創(chuàng)建到宿主機的/opt/prometheus/rules目錄下即可
cat > /opt/prometheus/rules/os.rules << \EOF
groups:
- name: os
  rules:
  # prometheus是通過對應(yīng)exporter的metric指標(biāo)查詢接口獲取到被監(jiān)測對象的數(shù)據(jù)的。當(dāng)這個接口調(diào)用不通(或調(diào)用出錯時),會認(rèn)為up == 0,當(dāng)持續(xù)時間滿足for時,會發(fā)出對應(yīng)的節(jié)點宕機預(yù)警
  # 實際上,exporter的指標(biāo)查詢接口調(diào)不通,也可能是因為超時或者其它什么導(dǎo)致的,并不一定是被監(jiān)控節(jié)點down機了
  - alert: instance不可用(宕機或忙)告警
    expr: up == 0
    for: 1m
    labels:
      alarmClassify: normal
    annotations:
      summary: "監(jiān)控程序{{ $labels.job }}所監(jiān)控機器不可用"
      description: "監(jiān)控程序 {{ $labels.job }}(監(jiān)控程序地址為{{ $labels.instance }}) down機超過1分鐘了"
  - alert: CPU告警
    expr: 100-(avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)* 100) > 90
    for: 5m
    labels:
      alarmClassify: normal
    annotations:   
      summary: "CPU告警:CPU使用大于90%(目前使用:{{$value}}%)"
      description: "CPU告警:監(jiān)控程序{{$labels.instance}}所監(jiān)控機器的CPU使用大于90%(目前使用:{{$value}}%). 已經(jīng)持續(xù)5分鐘了"
  - alert: 內(nèi)存告警
    expr: 100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes) > 90
    for: 30m
    labels:
      alarmClassify: normal
    annotations:
      summary: "內(nèi)存告警:內(nèi)存使用大于80%(目前使用:{{$value}}%)"
      description: "內(nèi)存告警:監(jiān)控程序{{$labels.instance}}所監(jiān)控機器的內(nèi)存使用大于80%(目前使用:{{$value}}%)"
  - alert: 磁盤分區(qū)使用率報警
    expr: 100 - ((node_filesystem_avail_bytes{fstype=~"rootfs|xfs",mountpoint=~"/|/etc/hosts"} * 100) / node_filesystem_size_bytes{fstype=~"rootfs|xfs",mountpoint=~"/|/etc/hosts"}) > 80
    for: 1m
    labels:
      alarmClassify: normal
    annotations:
      summary: "磁盤分區(qū)告警:{{$labels.mountpoint}} 磁盤分區(qū)使用大于80%(目前使用:{{$value}}%)"
      description: "磁盤分區(qū)告警:監(jiān)控程序{{$labels.instance}}所監(jiān)控機器的磁盤分區(qū)使用量大于80%(目前使用:{{$value}}%). 其它信息:device:{{$labels.device}}, mount:{{$labels.mountpoint}} "
  - alert: 掛載磁盤分區(qū)使用率報警
    expr: 100 - ((node_filesystem_avail_bytes{mountpoint=~"/rootfs/newDisk|/backup"} * 100) / node_filesystem_size_bytes{mountpoint=~"/rootfs/newDisk|/backup"}) > 80
    for: 1m
    labels:
      alarmClassify: normal
    annotations:
      summary: "掛載磁盤分區(qū)告警:{{$labels.mountpoint}} 掛載磁盤分區(qū)使用大于80%(目前使用:{{$value}}%)"
      description: "掛載磁盤分區(qū)告警:監(jiān)控程序{{$labels.instance}}所監(jiān)控機器的掛載磁盤分區(qū)使用量大于80%(目前使用:{{$value}}%). 其它信息:device:{{$labels.device}}, mount:{{$labels.mountpoint}} "
  - alert: IO性能
    expr: ((irate(node_disk_io_time_seconds_total[30m]))* 100) > 95
    for: 1m
    labels:
      alarmClassify: normal
    annotations:
      summary: "{{$labels.mountpoint}} 流入磁盤IO使用率過高"
      description: "監(jiān)控程序{{$labels.instance}}所監(jiān)控機器的{{$labels.mountpoint }}流入磁盤IO大于95%(目前使用:({{$value}}))"
  - alert: 網(wǎng)絡(luò)()
    expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 10240
    for: 5m
    labels:
      alarmClassify: normal
    annotations:
      summary: "{{$labels.mountpoint}} 流入網(wǎng)絡(luò)帶寬過高"
      description: "監(jiān)控程序{{$labels.instance}}所監(jiān)控機器的 {{$labels.mountpoint }} 流入網(wǎng)絡(luò)帶寬持續(xù)5分鐘高于10M. RX帶寬使用率{{$value}}"
  - alert: 網(wǎng)絡(luò)()
    expr: ((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 10240
    for: 5m
    labels:
      alarmClassify: normal
    annotations:
      summary: "{{$labels.mountpoint}} 流出網(wǎng)絡(luò)帶寬過高"
      description: "監(jiān)控程序{{$labels.instance}}所監(jiān)控機器的 {{$labels.mountpoint }} 流出網(wǎng)絡(luò)帶寬持續(xù)5分鐘高于10M. RX帶寬使用率{{$value}}"
EOF

# 查看一下os.rules規(guī)則
cat /opt/prometheus/rules/os.rules
  • 一條告警規(guī)則主要由以下幾部分組成

    • alert:告警規(guī)則的名稱

    • expr:基于PromQL表達(dá)式告警觸發(fā)條件,用于計算是否有時間序列滿足該條件

    • for:評估等待時間,可選參數(shù)。用于表示只有當(dāng)觸發(fā)條件持續(xù)一段時間后才發(fā)送告警。在等待期間新產(chǎn)生告警的狀態(tài)為pending

    • labels:自定義標(biāo)簽,允許用戶指定要附加到告警上的一組附加標(biāo)簽(注:如果自定義的標(biāo)簽名與prometheus.yml下內(nèi)置的或配置的標(biāo)簽名一樣,則會以這里設(shè)置的標(biāo)簽為主)

      注:labels下標(biāo)簽 = prometheus.yml下設(shè)置的標(biāo)簽(scrape_configs.job_name[*].static_configs.labels[*]) + rule文件中用戶設(shè)置的標(biāo)簽(groups.rules.alert[*].labels[*]

      注:labels下默認(rèn)有這些標(biāo)簽

      • alertname:告警規(guī)則的名稱(即:alert指定的名稱)

      • device:機器設(shè)備

      • fstype:文件系統(tǒng)類型

      • mountpoint:掛載點

      • job:采集任務(wù)名。(即:當(dāng)前預(yù)警所屬采集任務(wù)名,假設(shè)prometheus.yml如下所示,采集項aliyun-node預(yù)警了,那么這里對應(yīng)的job值為:xxx)

      • instance:采集對象。(即:當(dāng)前預(yù)警所屬采集項地址,假設(shè)prometheus.yml如下所示,采集項aliyun-node預(yù)警了,那么這里對應(yīng)的instance值為:47.105.39.189:9100)

        global:
        。。。省略
        alerting:
        。。。省略
        rule_files:
        。。。省略
        scrape_configs:
          # 采集任務(wù)
          - job_name: 'xxx'
            static_configs:
              - targets: ['47.105.39.189:9100']
                # 設(shè)置采集任務(wù)標(biāo)簽 (注:如果預(yù)警規(guī)則里面設(shè)置有同名標(biāo)簽的話,預(yù)警時則會覆蓋此標(biāo)簽)
                labels:
                  env: prod
                  name: justrydeng
                  instance: xxx-instance
                  group: 'ds'
        
    • annotations:用于指定一組附加信息,比如用于描述告警詳細(xì)信息的文字等,annotations的內(nèi)容在告警產(chǎn)生時會一同作為參數(shù)發(fā)送到Alertmanager

  • 占位符{{$xxx}},用于取值xxx對應(yīng)的值

    如:{{$labels.instance}},取當(dāng)前規(guī)則文件下,instance標(biāo)簽的值

    如:在annotations中,使用{{$value}}取觸發(fā)當(dāng)前預(yù)警的預(yù)警值

  • 檢查預(yù)警規(guī)則文件是否正確

    # 進入容器
    # docker exec -it {容器id 或 容器名} /bin/sh
    docker exec -it prometheus /bin/sh
    # 使用promtool 工具,執(zhí)行check指令
    # promtool check rules {規(guī)則文件,后綴名隨意都可以}
    promtool check rules /prometheus/rules/os.rules
    
第三步:使得最新的prometheus配置生效

因為這里啟用了alertmanager,為保險起見,本人這里選擇重啟prometheus(而不是使用prometheus的熱加載)來使生效

# 重啟容器prometheus
docker restart prometheus
# 查看日志
docker logs --tail=50 prometheus
第四步:驗證預(yù)警生效
  • 訪問prometheus,查看預(yù)警規(guī)則是否有了

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)

    預(yù)警狀態(tài)說明:

    • Inactive:未觸發(fā)預(yù)警
    • Pending:滿足預(yù)警規(guī)則里面的預(yù)警表達(dá)式expr了,但是持續(xù)時間不滿足預(yù)警規(guī)則里面的for,尚未發(fā)送預(yù)警信息
    • Firing:觸發(fā)預(yù)警且已發(fā)送預(yù)警信息
  • 查看郵箱,發(fā)現(xiàn)收到了預(yù)警消息

    docker安裝prometheus grafana,Docker、Jenkins,docker,prometheus,grafana,監(jiān)控,監(jiān)控系統(tǒng)
    注:因為本人后來優(yōu)化了上面的rule規(guī)則的配置內(nèi)容,所以這里email里面的截圖和上面的配置有點出入文章來源地址http://www.zghlxwxcb.cn/news/detail-658054.html

相關(guān)資料

  • docker安裝prometheus+grafana安裝詳細(xì)教程
  • AlertManager簡介與告警模板
  • 本文已被收錄進《程序員成長筆記》 ,筆者JustryDeng

到了這里,關(guān)于docker安裝prometheus和grafana的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 構(gòu)建Docker容器監(jiān)控系統(tǒng)(Cadvisor +Prometheus+Grafana)

    構(gòu)建Docker容器監(jiān)控系統(tǒng)(Cadvisor +Prometheus+Grafana)

    ????????Cadvisor是Google開源的一款用于展示和分析容器運行狀態(tài)的可視化工具。通過在主機上運行Cadvisor用戶可以輕松的獲取到當(dāng)前主機上容器的運行統(tǒng)計信息,并以圖表的形式向用戶展示。 阿里云鏡像加速器 阿里云登錄 - 歡迎登錄阿里云,安全穩(wěn)定的云計算服務(wù)平臺 歡

    2024年02月14日
    瀏覽(30)
  • 構(gòu)建Docker容器監(jiān)控系統(tǒng)(2)(Cadvisor +Prometheus+Grafana)

    構(gòu)建Docker容器監(jiān)控系統(tǒng)(2)(Cadvisor +Prometheus+Grafana)

    Cadvisor產(chǎn)品簡介 Cadvisor是Google開源的一款用于展示和分析容器運行狀態(tài)的可視化工具。通過在主機上運行Cadvisor用戶可以輕松的獲取到當(dāng)前主機上容器的運行統(tǒng)計信息,并以圖表的形式向用戶展示。 被監(jiān)控主機上部署Cadvisor容器 清空原來的 [root@agent ~]# docker rm -f $(docker ps -aq)

    2024年02月14日
    瀏覽(49)
  • 項目04-基于Docker的Prometheus+Grafana+AlertManager的飛書監(jiān)控報警平臺

    項目04-基于Docker的Prometheus+Grafana+AlertManager的飛書監(jiān)控報警平臺

    1.流程圖 2.拓?fù)鋱D 3.詳細(xì)介紹 項目名稱:基于Docker的Prometheus+Grafana+AlertManager的飛書監(jiān)控報警平臺 項目環(huán)境:CentOS7.9,Docker24.0.5,Prometheus2.47,Grafana10.1.2,AlertManager0.23,Nginx1.25.2,MySQL5.7.43、ansible 2.9.27等 項目描述:旨在構(gòu)建一個高可用的監(jiān)控和報警系統(tǒng),基于Docker技術(shù),結(jié)合

    2024年02月04日
    瀏覽(25)
  • docker安裝prometheus和grafana

    docker安裝prometheus和grafana

    docker安裝prometheus和grafana 概念簡述 安裝prometheus 第一步:確保安裝有docker 第二步:拉取鏡像 第三步:準(zhǔn)備相關(guān)掛載目錄及文件 第四步:啟動容器 第五步:訪問測試 安裝grafana 第一步:確保安裝有docker 第二步:拉取鏡像 第三步:準(zhǔn)備相關(guān)掛載目錄及文件 第四步:啟動容器

    2024年02月12日
    瀏覽(27)
  • Prometheus+grafana環(huán)境搭建Docker服務(wù)(docker+二進制兩種方式安裝)(八)

    Prometheus+grafana環(huán)境搭建Docker服務(wù)(docker+二進制兩種方式安裝)(八)

    ??由于所有組件寫一篇幅過長,所以每個組件分一篇方便查看,前七篇鏈接如下 Prometheus+grafana環(huán)境搭建方法及流程兩種方式(docker和源碼包)(一)-CSDN博客 Prometheus+grafana環(huán)境搭建rabbitmq(docker+二進制兩種方式安裝)(二)-CSDN博客 Prometheus+grafana環(huán)境搭建mysql(docker+二進制兩種方式安裝

    2024年04月12日
    瀏覽(22)
  • docker-compose安裝node-exporter, prometheus, grafana

    exporter提供監(jiān)控數(shù)據(jù) prometheus拉取監(jiān)控數(shù)據(jù) grafana可視化監(jiān)控數(shù)據(jù) 全部操作在 /root/mypromethus 中執(zhí)行 node-exporter.yaml dcprometheus.yaml prometheus_cnf/prometheus.yml grafana.yaml prometheus和grafana目錄權(quán)限問題 https://blog.csdn.net/qingwufeiyangxz/article/details/108659681 https://grafana.com/grafana/dashboards

    2024年02月11日
    瀏覽(22)
  • docker安裝grafana,prometheus,exporter以及springboot整合詳細(xì)教程(GPE)

    docker安裝grafana,prometheus,exporter以及springboot整合詳細(xì)教程(GPE)

    springboot項目ip:192.168.168.1 測試服務(wù)器ip:192.168.168.81 文章來自互聯(lián)網(wǎng),自己略微整理下,更容易上手,方便自己,方便大家 最終效果: node springboot docker pull prom/node-exporter docker pull prom/mysqld-exporter docker pull google/cadvisor docker pull prom/prometheus docker pull grafana/grafana ? 訪問url: http://192.168

    2024年02月10日
    瀏覽(50)
  • docker容器監(jiān)控:Cadvisor+InfluxDB+Grafana的安裝部署

    docker容器監(jiān)控:Cadvisor+InfluxDB+Grafana的安裝部署

    目錄 Cadvisor+InfluxDB+Grafan安裝部署 1、安裝docker-ce 2、阿里云鏡像加速器 3、下載組件鏡像 4、創(chuàng)建自定義網(wǎng)絡(luò) 5、創(chuàng)建influxdb容器 6、創(chuàng)建Cadvisor 容器 7、查看Cadvisor 容器: (1)準(zhǔn)備測試鏡像 (2)通過http://192.168.100.132:8080端口訪問測試 8、創(chuàng)建granafa容器 [root@huyang2 ~]# iptables -F

    2024年02月14日
    瀏覽(18)
  • docker 部署prometheus+grafana

    docker 部署prometheus+grafana

    2024年03月08日
    瀏覽(32)
  • 基于docker 搭建Prometheus+Grafana

    基于docker 搭建Prometheus+Grafana

    https://www.cnblogs.com/xiao987334176/p/9930517.html Prometheus(普羅米修斯)是一套開源的監(jiān)控報警時間序列數(shù)據(jù)庫的組合,起始是由SoundCloud公司開發(fā)的。隨著發(fā)展,越來越多公司和組織接受采用Prometheus,社會也十分活躍,他們便將它獨立成開源項目,并且有公司來運作。Google SRE的書內(nèi)

    2023年04月13日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包