monitoring-stack-deployment #8

Merged
admin merged 2 commits from monitoring-stack-deployment into main 2026-02-04 13:25:28 +00:00
13 changed files with 241 additions and 0 deletions
Showing only changes of commit 338e0b0f19 - Show all commits

View File

@ -0,0 +1,6 @@
---
- name: Deploy Alertmanager
hosts: 192.168.0.112 # app3
become: true
roles:
- alertmanager

View File

@ -0,0 +1,6 @@
---
- name: Deploy Loki
hosts: 192.168.0.112 # app3
become: true
roles:
- loki

View File

@ -0,0 +1,6 @@
---
- name: Deploy Node-RED
hosts: 192.168.0.112 # app3
become: true
roles:
- node-red

View File

@ -0,0 +1,6 @@
---
- name: Deploy Promtail on all nodes
hosts: all # Установим Promtail на все хосты для сбора логов
become: true
roles:
- promtail

View File

@ -0,0 +1,33 @@
---
- name: Create Alertmanager directories
file:
path: "{{ item }}"
state: directory
owner: root
group: root
mode: '0755'
loop:
- /etc/alertmanager
- /var/lib/alertmanager
- name: Deploy Alertmanager configuration
template:
src: alertmanager.yml.j2
dest: /etc/alertmanager/alertmanager.yml
owner: root
group: root
mode: '0644'
- name: Run Alertmanager container
docker_container:
name: alertmanager
image: prom/alertmanager:latest
state: started
restart_policy: always
ports:
- "9093:9093"
volumes:
- /etc/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
- /var/lib/alertmanager:/alertmanager
command: --config.file=/etc/alertmanager/alertmanager.yml --storage.path=/alertmanager
tags: alertmanager

View File

@ -0,0 +1,21 @@
global:
smtp_smarthost: 'localhost:25'
smtp_from: 'alertmanager@example.com'
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'alerts@example.com'
send_resolved: true
- name: 'webhook-notifications'
webhook_configs:
- url: 'http://node-red:1880/alerts'
send_resolved: true

View File

@ -0,0 +1,9 @@
---
# Default port for Loki
loki_port: 3100
# Storage configuration
loki_storage_path: /var/lib/loki
# Retention period
loki_retention_period: 720h # 30 дней

33
roles/loki/tasks/main.yml Normal file
View File

@ -0,0 +1,33 @@
---
- name: Create Loki directories
file:
path: "{{ item }}"
state: directory
owner: root
group: root
mode: '0755'
loop:
- /etc/loki
- /var/lib/loki
- name: Deploy Loki configuration
template:
src: loki-config.yml.j2
dest: /etc/loki/loki-config.yml
owner: root
group: root
mode: '0644'
- name: Run Loki container
docker_container:
name: loki
image: grafana/loki:latest
state: started
restart_policy: always
ports:
- "3100:3100"
volumes:
- /etc/loki/loki-config.yml:/etc/loki/loki-config.yml
- /var/lib/loki:/loki
command: -config.file=/etc/loki/loki-config.yml
tags: loki

View File

@ -0,0 +1,33 @@
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
path_prefix: /tmp/loki # Изменяем путь на /tmp для теста
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
limits_config:
allow_structured_metadata: false
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://alertmanager:9093

View File

@ -0,0 +1,22 @@
---
- name: Create Node-RED data directory
file:
path: /var/lib/node-red
state: directory
owner: root
group: root
mode: '0755'
- name: Run Node-RED container
docker_container:
name: node-red
image: nodered/node-red:latest
state: started
restart_policy: always
ports:
- "1880:1880"
volumes:
- /var/lib/node-red:/data
environment:
NODE_RED_ENABLE_PROJECTS: "false"
tags: node-red

View File

@ -0,0 +1,7 @@
---
# Loki connection
loki_host: 192.168.0.112
loki_port: 3100
# Promtail settings
promtail_port: 9080

View File

@ -0,0 +1,31 @@
---
- name: Create Promtail directories
file:
path: /etc/promtail
state: directory
owner: root
group: root
mode: '0755'
- name: Deploy Promtail configuration
template:
src: promtail-config.yml.j2
dest: /etc/promtail/promtail-config.yml
owner: root
group: root
mode: '0644'
- name: Run Promtail container (using host network)
docker_container:
name: promtail
image: grafana/promtail:latest
state: started
restart_policy: always
network_mode: host # <-- КЛЮЧЕВОЕ ИЗМЕНЕНИЕ
volumes:
- /var/log:/var/log:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /etc/promtail/promtail-config.yml:/etc/promtail/config.yml
command: -config.file=/etc/promtail/config.yml
pid_mode: host
tags: promtail

View File

@ -0,0 +1,28 @@
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://localhost:3100/loki/api/v1/push # Теперь localhost работает
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log
host: "{{ inventory_hostname }}"
- job_name: docker
static_configs:
- targets:
- localhost
labels:
job: docker
__path__: /var/lib/docker/containers/*/*log
host: "{{ inventory_hostname }}"