新增部署Prometheus监控工具脚本;更新README.md文件

This commit is contained in:
2023-12-12 16:08:29 +08:00
committed by huty
parent 32e4e8070b
commit 30c8ad0f9a
98 changed files with 4591 additions and 2 deletions

View File

@@ -0,0 +1,2 @@
---
flag: ~/.flag/{{ role_name }}

View File

@@ -0,0 +1,40 @@
{{ define "email.to.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
========= **监控告警** =========
**告警程序:** Alertmanager
**告警类型:** {{ $alert.Labels.alertname }}
**告警级别:** {{ $alert.Labels.severity }} 级
**告警状态:** {{ .Status }}
**故障主机:** {{ $alert.Labels.instance }} {{ $alert.Labels.device }}
**告警主题:** {{ .Annotations.summary }}
**告警详情:** {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
**主机标签:** {{ range .Labels.SortedPairs }} </br> [ {{ .Name }}: {{ .Value | markdown | html }} ]
{{- end }} </br>
**故障时间:** {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
========= = end = =========
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
========= 告警恢复 =========
**告警程序:** Alertmanager
**告警类型:** {{ .Labels.alertname }}
**告警级别:** {{ $alert.Labels.severity }} 级
**告警状态:** {{ .Status }}
**告警主机:** {{ .Labels.instance }}
**告警主题:** {{ $alert.Annotations.summary }}
**告警详情:** {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
**故障时间:** {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
**恢复时间:** {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
========= = **end** = =========
{{- end }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,70 @@
---
# 校验 PrometheusWebhookDingtalk 是否安装
- name: '<{{ cmd | upper }}> | 校验 PrometheusWebhookDingtalk 是否安装'
stat:
path: '{{ flag }}'
register: ret
# 安装 PrometheusWebhookDingtalk
- block:
- name: '<{{ cmd | upper }}> | 创建 PrometheusWebhookDingtalk 相关目录'
file:
path: '{{ item.value }}'
state: directory
loop: '{{ prometheus_webhook_dingtalk.dir | dict2items }}'
- name: '<{{ cmd | upper }}> | 安装 PrometheusWebhookDingtalk'
template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
loop:
- src: docker-compose.yml.j2
dest: '{{ prometheus_webhook_dingtalk.dir.main }}/docker-compose.yml'
- src: conf/config.yml.j2
dest: '{{ prometheus_webhook_dingtalk.dir.conf }}/config.yml'
- name: '<{{ cmd | upper }}> | 初始化 PrometheusWebhookDingtalk 告警模板文件'
copy:
src: '{{ item }}'
dest: '{{ prometheus_webhook_dingtalk.dir.template }}'
with_fileglob: 'files/template/*'
- name: '<{{ cmd | upper }}> | 启动 PrometheusWebhookDingtalk 容器'
shell: |
. /etc/profile
cd {{ prometheus_webhook_dingtalk.dir.main }}
docker-compose down
docker-compose up -d
- name: '<{{ cmd | upper }}> | 等待 PrometheusWebhookDingtalk 服务启动'
wait_for:
port: '{{ prometheus_webhook_dingtalk.port }}'
- name: '<{{ cmd | upper }}> | 创建 PrometheusWebhookDingtalk 安装标记'
shell: |
set -ex
mkdir -p ~/.flag
touch {{ flag }}
when:
- cmd == "install"
- not ret.stat.exists
- prometheus_webhook_dingtalk.enable
# 卸载 PrometheusWebhookDingtalk
- block:
- name: '<{{ cmd | upper }}> | 卸载 PrometheusWebhookDingtalk'
shell: |
. /etc/profile
cd {{ prometheus_webhook_dingtalk.dir.main }}
docker-compose down
- name: '<{{ cmd | upper }}> | 清除 PrometheusWebhookDingtalk 相关文件'
shell: |
rm -rf {{ prometheus_webhook_dingtalk.dir.main }}
rm -rf {{ flag }}
when:
- cmd == "remove"
- ret.stat.exists
- prometheus_webhook_dingtalk.enable

View File

@@ -0,0 +1,35 @@
## Request timeout
# timeout: 5s
## Uncomment following line in order to write template from scratch (be careful!)
#no_builtin_template: true
## Customizable templates path
#templates:
# - contrib/templates/legacy/template.tmpl
templates:
- /etc/prometheus-webhook-dingtalk/templates/legacy/template.tmpl
## Targets, previously was known as "profiles"
targets:
webhook1:
url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx
# secret for signature
secret: SEC000000000000000000000
webhook2:
url: https://oapi.dingtalk.com/robot/send?access_token={{ alert.dingtalk.access_token }}
webhook_legacy:
url: https://oapi.dingtalk.com/robot/send?access_token={{ alert.dingtalk.access_token }}
# Customize template content
message:
# Use legacy template
title: '{{ alert.message.title }}'
text: '{{ alert.message.text }}'
webhook_mention_all:
url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx
mention:
all: true
webhook_mention_users:
url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx
mention:
mobiles: ['156xxxx8827', '189xxxx8325']

View File

@@ -0,0 +1,23 @@
version: "3.9"
services:
prometheus-webhook-dingtalk:
image: {{ prometheus_webhook_dingtalk.image }}
container_name: {{ docker.network.name }}-prometheus-webhook-dingtalk
hostname: prometheus-webhook-dingtalk
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- {{ prometheus_webhook_dingtalk.dir.conf }}/config.yml:/etc/prometheus-webhook-dingtalk/config.yml
- {{ prometheus_webhook_dingtalk.dir.template }}/template.tmpl:/etc/prometheus-webhook-dingtalk/templates/legacy/template.tmpl
networks:
- {{ docker.network.name }}
ports:
- {{ prometheus_webhook_dingtalk.port }}:8060
environment:
- config.file=/etc/prometheus-webhook-dingtalk/config.yml
networks:
{{ docker.network.name }}:
external: true
name: {{ docker.network.name }}