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

View File

@@ -0,0 +1,42 @@
global:
resolve_timeout: 5m
route:
group_by: ['env','app','type','name']
group_wait: 30s
group_interval: 30s
repeat_interval: 1h
receiver: 'dingtalk'
{% if prometheus_alert.enable %}
routes:
- receiver: 'message'
continue: true
match:
severity: emergency
- receiver: 'dingtalk'
continue: true
match_re:
severity: critical|warning
{% endif %}
receivers:
{% if prometheus_alert.enable %}
- name: 'dingtalk'
webhook_configs:
- url: 'http://{{ groups.server.0 }}:{{ prometheus_alert.port }}/prometheusalert?type=dd&tpl=prometheus-dd&ddurl=https://oapi.dingtalk.com/robot/send?access_token={{ alert.dingtalk.access_token }}'
- name: 'message'
webhook_configs:
- url: 'http://{{ groups.server.0 }}:{{ prometheus_alert.port }}/prometheusalert?type={{ alert.message.type }}dx&tpl=prometheus-dx&phone={{ alert.message.phone }}'
{% elif prometheus_webhook_dingtalk.enable -%}
- name: 'dingtalk'
webhook_configs:
- url: 'http://{{ groups.server.0 }}:{{ prometheus_webhook_dingtalk.port }}/dingtalk/webhook_legacy/send'
send_resolved: true
{% endif %}
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['env','app','type','name']

View File

@@ -0,0 +1,21 @@
version: "3.9"
services:
alertmanager:
image: {{ alertmanager.image }}
container_name: {{ docker.network.name }}-alertmanager
hostname: alertmanager
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- {{ alertmanager.dir.conf }}/alertmanager.yml:/etc/alertmanager/alertmanager.yml
- {{ alertmanager.dir.template }}:/etc/alertmanager/template
networks:
- {{ docker.network.name }}
ports:
- {{ alertmanager.port }}:9093
networks:
{{ docker.network.name }}:
external: true
name: {{ docker.network.name }}