Merge branch 'monitoring-stack-deployment'

This commit is contained in:
Freazzzing
2026-02-05 02:23:36 +00:00
5 changed files with 90 additions and 28 deletions

View File

@ -0,0 +1,12 @@
---
# Alertmanager settings
alertmanager_port: 9093
alertmanager_config_path: /etc/alertmanager
# Email notifications (заполнить позже)
smtp_host: localhost
smtp_from: alertmanager@example.com
smtp_to: admin@example.com
# Webhook для тестирования
webhook_url: "http://localhost:9099"

View File

@ -7,13 +7,13 @@
group: root
mode: '0755'
loop:
- /etc/alertmanager
- "{{ alertmanager_config_path }}"
- /var/lib/alertmanager
- name: Deploy Alertmanager configuration
template:
src: alertmanager.yml.j2
dest: /etc/alertmanager/alertmanager.yml
dest: "{{ alertmanager_config_path }}/alertmanager.yml"
owner: root
group: root
mode: '0644'
@ -25,9 +25,9 @@
state: started
restart_policy: always
ports:
- "9093:9093"
- "{{ alertmanager_port }}:9093"
volumes:
- /etc/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
- "{{ alertmanager_config_path }}/alertmanager.yml:/etc/alertmanager/alertmanager.yml"
- /var/lib/alertmanager:/alertmanager
command: --config.file=/etc/alertmanager/alertmanager.yml --storage.path=/alertmanager
tags: alertmanager

View File

@ -1,21 +1,52 @@
global:
smtp_smarthost: 'localhost:25'
smtp_from: 'alertmanager@example.com'
# Настройки для уведомлений (можно настроить позже)
# smtp_smarthost: 'smtp.gmail.com:587'
# smtp_from: 'alertmanager@example.com'
# smtp_auth_username: 'user@gmail.com'
# smtp_auth_password: 'password'
# smtp_require_tls: true
route:
group_by: ['alertname']
# Основной маршрут - все алерты идут в Node-RED
receiver: 'node-red-webhook'
group_by: ['alertname', 'severity']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
# Вложенные маршруты
routes:
- match:
severity: critical
receiver: 'node-red-critical'
group_wait: 5s
repeat_interval: 10m
- match:
severity: warning
receiver: 'node-red-warning'
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'email-notifications'
repeat_interval: 2h
receivers:
- name: 'email-notifications'
email_configs:
- to: 'alerts@example.com'
- name: 'node-red-webhook'
webhook_configs:
- url: 'http://node-red:1880/webhook/alertmanager'
send_resolved: true
- name: 'webhook-notifications'
- name: 'node-red-critical'
webhook_configs:
- url: 'http://node-red:1880/alerts'
- url: 'http://node-red:1880/webhook/critical'
send_resolved: true
- name: 'node-red-warning'
webhook_configs:
- url: 'http://node-red:1880/webhook/warning'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'instance']

View File

@ -0,0 +1,9 @@
---
# Node-RED settings
node_red_port: 1880
node_red_data_dir: /var/lib/node-red
node_red_image: nodered/node-red:latest
# Persistence settings
node_red_persist_flows: true
node_red_enable_projects: false

View File

@ -1,22 +1,32 @@
---
- name: Create Node-RED data directory
- name: Create Node-RED data directory with correct permissions
file:
path: /var/lib/node-red
path: "{{ node_red_data_dir }}"
state: directory
owner: root
group: root
owner: 1000 # Node-RED контейнер запускается от пользователя 1000
group: 1000
mode: '0755'
- name: Run Node-RED container
docker_container:
name: node-red
image: nodered/node-red:latest
image: "{{ node_red_image }}"
state: started
restart_policy: always
ports:
- "1880:1880"
- "{{ node_red_port }}:1880"
volumes:
- /var/lib/node-red:/data
environment:
NODE_RED_ENABLE_PROJECTS: "false"
- "{{ node_red_data_dir }}:/data"
user: "1000:1000" # Запускаем от правильного пользователя
env:
NODE_RED_ENABLE_PROJECTS: "{{ 'true' if node_red_enable_projects else 'false' }}"
TZ: "UTC"
tags: node-red
- name: Display Node-RED access info
debug:
msg: |
Node-RED is available at:
- Web UI: http://{{ inventory_hostname }}:{{ node_red_port }}
- API: http://{{ inventory_hostname }}:{{ node_red_port }}/red/api
tags: node-red