新增部署Prometheus监控工具脚本;更新README.md文件
This commit is contained in:
2
prometheus/roles/alertmanager/defaults/main.yml
Normal file
2
prometheus/roles/alertmanager/defaults/main.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
---
|
||||
flag: ~/.flag/{{ role_name }}
|
||||
71
prometheus/roles/alertmanager/tasks/main.yml
Normal file
71
prometheus/roles/alertmanager/tasks/main.yml
Normal 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
|
||||
@@ -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']
|
||||
@@ -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 }}
|
||||
Reference in New Issue
Block a user