欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker-compose搭建prometheus+grafana+釘釘告警

 更新時間:2023年07月24日 09:15:45   作者:在路上的阿帥  
本文主要介紹了docker-compose搭建prometheus+grafana+釘釘告警,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言:

本文將介紹使用docker-compose部署搭建promtheus監(jiān)控容器、主機、服務(wù)等相關(guān)狀態(tài);

配合granfana面板構(gòu)建監(jiān)控大屏;

由于grafana的報警不是很友好,使用dingtalk,配合altermanager,實現(xiàn)釘釘報警。

一、編寫docker-compose(開門見山)

docker環(huán)境搭建不再介紹,網(wǎng)上已經(jīng)一大堆。

 首先介紹一下需要部署的組件:

  • prometheus:監(jiān)控核心組件
  • cadvisor:用于獲取docker容器的指標
  • node-exporter :用戶獲取服務(wù)器的指標
  • grafana:監(jiān)控圖表好用的可視化組件
  • alertmanager:告警組件
  • dingtalk:alert告警不支持釘釘,需要借助dingtalk插件

首先創(chuàng)建一個prometheus目錄,用來放docker-compose文件已經(jīng)集群中需要掛載的配置文件。

在prometheus下面創(chuàng)建兩個目錄

prome:用來存放prometheus相關(guān)配置文件

alert:用來存放報警相關(guān)配置文件

直接上docker-compose.yml文件

version: '2'
networks:
    monitor:
        driver: bridge
services:
    prometheus:
        image: prom/prometheus
        container_name: prometheus
        hostname: prometheus
        restart: always
        command:
          - '--config.file=/etc/prometheus/prometheus.yml'
          - '--web.enable-lifecycle'
          - '--storage.tsdb.retention.time=30d'
        volumes:
            - ./prome:/etc/prometheus
        ports:
            - "29011:9090"
        networks:
            - monitor
    alertmanager:
        image: prom/alertmanager
        container_name: alertmanager
        hostname: alertmanager
        restart: always
        volumes:
            - /home/docker/prometheus/alert/alertmanager.yml:/etc/alertmanager/alertmanager.yml
        ports:
            - "29012:9093"
        environment:
          - TZ=Asia/Shanghai
        networks:
            - monitor
    grafana:
        image: grafana/grafana
        container_name: grafana
        hostname: grafana
        restart: always
        ports:
            - "29013:3000"
        networks:
            - monitor
    node-exporter:
        image: quay.io/prometheus/node-exporter
        container_name: node-exporter
        hostname: node-exporter
        restart: always
        ports:
            - "29014:9100"
        networks:
            - monitor
    cadvisor:
        image: google/cadvisor:latest
        container_name: cadvisor
        hostname: cadvisor
        restart: always
        volumes:
            - /:/rootfs:ro
            - /var/run:/var/run:rw
            - /sys:/sys:ro
            - /home/docker/:/var/lib/docker:ro
        ports:
            - "29015:8080"
        networks:
            - monitor
    dingtalk:
        image: timonwong/prometheus-webhook-dingtalk
        container_name: dingtalk
        hostname: dingtalk
        restart: always
        volumes:
          - ./alert/config.yml:/etc/prometheus-webhook-dingtalk/config.yml
          - ./alert/dingtalk.tmpl:/opt/dingtalk/template/dingtalk.tmpl
        ports:
          - "29016:8060"
        environment:
          - TZ=Asia/Shanghai
        networks:
          - monitor

二、prometheus相關(guān)配置文件

注:以下文件地址及命令均為自己隨機命名,大家可以自行命令,對應(yīng)好配置文件中的地址引用即可

1、prometheus/prome/promethues.yml文件是prometheus的配置文件,用來配置一些組件及監(jiān)控信息,簡單如下,需要將ip替換成自己實際的ip地址。

global:
  scrape_interval:     15s
  evaluation_interval: 15s
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['ip:29012']
rule_files:
  - "/etc/prometheus/rules/*.rules"
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['ip:29011']
  - job_name: 'cadvisor'
    static_configs:
    - targets: ['ip:29015']

2、在prometheus中定義報警規(guī)則,達到報警條件,就會通知alertmanager組件進行報警

prometheus/prome/rules/promethues.yml

groups:
- name: 主機存活告警  # 命名
  rules:
  - alert: 主機存活告警 # 命名
    expr: up == 0 # 表達式,分析指標判定告警
    for: 60s  # 觸發(fā)告警持續(xù)時間
    labels:   # 自定義告警標簽
      severity: warning
    annotations:   # 告警內(nèi)容注釋,根據(jù)需要制定
      summary: "{{ $labels.instance }} 宕機超過1分鐘!"
- name: 主機內(nèi)存使用率告警
  rules:
  - alert: 主機內(nèi)存使用率告警
    expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 80
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "內(nèi)存利用率大于80%, 實例: {{ $labels.instance }},當前值:{{ $value }}%"
- name: 主機CPU使用率告警
  rules:
  - alert: 主機CPU使用率告警
    expr: 100 - (avg by (instance)(irate(node_cpu_seconds_total{mode="idle"}[1m]) )) * 100 > 70
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "CPU近10分鐘使用率大于70%, 實例: {{ $labels.instance }},當前值:{{ $value }}%"
- name: 主機磁盤使用率告警
  rules:
  - alert: 主機磁盤使用率告警
    expr: 100 - node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"xfs|ext4"} * 100 > 80
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "磁盤使用率大于80%, 實例: {{ $labels.instance }},當前值:{{ $value }}%"
 

三、報警模塊相關(guān)配置文件

1、alertmanager相關(guān)

alertmanager是prometheus依賴的報警組件,所有的報警消息均是依賴alertmanager進行報警。

由于要配置釘釘報警,默認alertmanager不支持釘釘,需要引用dingtalk組件,以下配置文件中需要配置dingtalkd的url        prometheus/alert/alertmanager.yml

global:
  # 每5分鐘檢查一次是否恢復(fù)
  resolve_timeout: 5m
# route用來設(shè)置報警的分發(fā)策略
route:
  # 采用哪個標簽來作為分組依據(jù)
  group_by: ['alertname']
  # 組告警等待時間。也就是告警產(chǎn)生后等待30s,如果有同組告警一起發(fā)出
  group_wait: 30s
  # 兩組告警的間隔時間
  group_interval: 30s
  # 重復(fù)告警的間隔時間,減少相同告警的發(fā)送頻率
  repeat_interval: 1h
  # 設(shè)置默認接收人
  receiver: 'webhook'
receivers:
- name: 'webhook'
  webhook_configs:
  - url: 'http://ip:29016/dingtalk/webhook/send'
    send_resolved: true

2、 dingtalk相關(guān)

首先要添加釘釘報警機器人:

在釘釘上創(chuàng)建一個報警群,打開群設(shè)置,選擇機器人。

添加一個自定義的機器人

 選擇加簽,創(chuàng)建完成后,會生成機器人的接口,復(fù)制保存后用。

回到dingtalk組件中,配置相對應(yīng)的釘釘機器人的接口。

prometheus/alert/config.yml

## Request timeout
## timeout: 5s
### Uncomment following line in order to write template from scratch (be careful!)
##no_builtin_template: true
### Customizable templates path
#templates:
#- '/opt/dingtalk/template/dingtalk.tmpl'
### You can also override default template using `default_message`
### The following example to use the 'legacy' template from v0.3.0
##default_message:
##  title: '{{ template "legacy.title" . }}'
##  text: '{{ template "legacy.content" . }}'
### Targets, previously was known as "profiles"
targets:
  webhook:
    url: 'https://oapi.dingtalk.com/robot/send?access_token=????相對應(yīng)的token?????'
    # secret for signature
    secret: '相對應(yīng)的secrt'

然后創(chuàng)建報警的模板格式

prometheus/alert/dingtalk.tmpl

{{ define "__subject" }}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]
{{ end }}
{{ define "__alert_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
告警狀態(tài):{{ .Status }}
告警級別:{{ .Labels.severity }}
告警類型:{{ .Labels.alertname }}
告警主機:{{ .Labels.instance }}
告警詳情:{{ .Annotations.description }}
告警時間:{{ (.StartsAt.Add 28800e9).Format "2023-01-01 10:00:00" }}
{{ end }}{{ end }}
{{ define "__resolved_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
告警狀態(tài):{{ .Status }}
告警級別:{{ .Labels.severity }}
告警類型:{{ .Labels.alertname }}
告警主機:{{ .Labels.instance }}
告警詳情:{{ .Annotations.description }}
告警時間:{{ (.StartsAt.Add 28800e9).Format "2023-01-01 10:00:00" }}
恢復(fù)時間:{{ (.EndsAt.Add 28800e9).Format "2023-01-01 10:00:00" }}
{{ end }}{{ end }}
{{ define "default.title" }}
{{ template "__subject" . }}
{{ end }}
{{ define "default.content" }}
{{ if gt (len .Alerts.Firing) 0 }}
**Prometheus故障告警**
{{ template "__alert_list" .Alerts.Firing }}
---
{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}
**Prometheus故障恢復(fù)**
{{ template "__resolved_list" .Alerts.Resolved }}
{{ end }}
{{ end }}
{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}
{{ template "default.title" . }}
{{ template "default.content" . }}

四、運行docker-compose

然后運行docker-compose。所有的容器和配置都會啟動

docker-compose up -d

正常所有的容器都會拉起來,如果遇到狀態(tài)為restarting,可能有問題,需要docker logs查看下具體報錯信息,相對應(yīng)解決。

到此這篇關(guān)于docker-compose搭建prometheus+grafana+釘釘告警的文章就介紹到這了,更多相關(guān)docker compose搭建promtheus 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker File創(chuàng)建鏡像失敗ERROR [3/4] RUN yum -y install vim的解決

    Docker File創(chuàng)建鏡像失敗ERROR [3/4] RUN yum&nbs

    文章描述了在使用DockerFile創(chuàng)建基于CentOS Linux 8的鏡像時遇到的問題,即無法下載vim軟件包的元數(shù)據(jù),問題的原因是CentOS Linux 8的AppStream倉庫沒有可用的URL,為了解決這個問題,作者建議將CentOS版本修改為7,因為CentOS Linux 7的AppStream倉庫通常有可用的URL
    2024-11-11
  • docker配置node項目的實現(xiàn)步驟

    docker配置node項目的實現(xiàn)步驟

    本文主要介紹了docker配置node項目的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • docker使用alpine構(gòu)建jdk21鏡像的詳細步驟

    docker使用alpine構(gòu)建jdk21鏡像的詳細步驟

    這篇文章主要給大家介紹了關(guān)于docker使用alpine構(gòu)建jdk21鏡像的詳細步驟,鏡像中包含了應(yīng)用程序所需要的運行環(huán)境,函數(shù)庫,配置,以及應(yīng)用本身等各種文件,這些文件分層打包而成,需要的朋友可以參考下
    2024-03-03
  • 查看Docker容器的IP地址的四種方法

    查看Docker容器的IP地址的四種方法

    本文主要介紹了查看Docker容器的IP地址的四種方法,包括docker inspect命令、結(jié)合網(wǎng)絡(luò)名稱、在容器內(nèi)執(zhí)行命令、docker network inspect命令這四種,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • 5分鐘安裝docker詳細步驟

    5分鐘安裝docker詳細步驟

    官方推薦使用通過設(shè)置docker倉庫的方法來安裝,安裝和升級都簡單些,今天就來教大家5分鐘入手安裝docker教程超詳細的安裝步驟,感興趣的朋友一起看看吧
    2021-05-05
  • Docker 中的容器完全解析

    Docker 中的容器完全解析

    這篇文章主要介紹了Docker 中的容器完全解析的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 淺談Docker運行Tensorboard和jupyter的方法

    淺談Docker運行Tensorboard和jupyter的方法

    本篇文章主要介紹了淺談Docker 運行Tensorboard 和 jupyter的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Docker Redis 7.2.3 部署方式

    Docker Redis 7.2.3 部署方式

    使用Docker啟動Redis時若遇到不斷重啟的問題,可能是由于配置文件中的“daemonize yes”與Docker的重啟策略“--restart=always”發(fā)生沖突,本文給大家介紹Docker Redis 7.2.3 部署方式,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • 基于docker的?nacos安裝部署過程

    基于docker的?nacos安裝部署過程

    這篇文章主要介紹了基于docker的?nacos安裝部署,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • Mysql 在 Docker 中的時區(qū)問題記錄

    Mysql 在 Docker 中的時區(qū)問題記錄

    Mysql 時區(qū)一般是跟著系統(tǒng)走的,而在 Docker 中安裝 Mysql 默認時區(qū)是 UTC,下面介紹,創(chuàng)建Docker容器前、后,分別如何設(shè)置 Mysql 時區(qū),感興趣的朋友跟隨小編一起看看吧
    2024-07-07

最新評論