Update 3 files

- /roles/docker/tasks/main.yml
- /roles/grafana/templates/vmagent.yaml.j2
- /group_vars/all.yml
This commit is contained in:
Administrator 2025-11-24 06:53:55 +00:00
parent e017af1504
commit 64ad0c49bc
3 changed files with 118 additions and 24 deletions

View File

@ -25,14 +25,14 @@ monitoring_groups:
- "{{ server_ips.manage }}"
# Серверы с Docker (cAdvisor)
cadvisor_servers:
- "{{ server_ips.gateway }}"
- "{{ server_ips.data }}"
- "{{ server_ips.media }}"
- "{{ server_ips.photo }}"
- "{{ server_ips.talk }}"
- "{{ server_ips.games }}"
- "{{ server_ips.manage }}"
#cadvisor_servers:
# - "{{ server_ips.gateway }}"
# - "{{ server_ips.data }}"
# - "{{ server_ips.media }}"
# - "{{ server_ips.photo }}"
# - "{{ server_ips.talk }}"
# - "{{ server_ips.games }}"
# - "{{ server_ips.manage }}"
# Proxmox VE
proxmox_servers:
@ -52,7 +52,7 @@ monitoring_groups:
# ------------ Порты для сервисов мониторинга ------------
monitoring_ports:
node_exporter: 9100
cadvisor: 8080
#cadvisor: 8080
proxmox_exporter: 9223
vmagent: 8429
victoriametrics: 8428

View File

@ -60,4 +60,98 @@
- name: Show Docker Compose version
debug:
msg: "Docker Compose version: {{ docker_compose_version.stdout }}"
msg: "Docker Compose version: {{ docker_compose_version.stdout }}"
- name: Setup Docker monitoring
block:
- name: Create scripts directory
file:
path: /opt/scripts
state: directory
mode: '0755'
become: yes
- name: Deploy Docker metrics script
copy:
content: |
#!/bin/bash
# Docker metrics script for Node Exporter textfile collector
OUTFILE="/var/lib/node_exporter/textfile_collector/docker_metrics.prom"
# Get container counts
TOTAL_CONTAINERS=$(docker ps -a -q 2>/dev/null | wc -l)
RUNNING_CONTAINERS=$(docker ps -q 2>/dev/null | wc -l)
EXITED_CONTAINERS=$((TOTAL_CONTAINERS - RUNNING_CONTAINERS))
# Write metrics in Prometheus format
cat << EOF > $OUTFILE
# HELP docker_containers_total Total number of Docker containers
# TYPE docker_containers_total gauge
docker_containers_total $TOTAL_CONTAINERS
# HELP docker_containers_running Number of running Docker containers
# TYPE docker_containers_running gauge
docker_containers_running $RUNNING_CONTAINERS
# HELP docker_containers_exited Number of exited Docker containers
# TYPE docker_containers_exited gauge
docker_containers_exited $EXITED_CONTAINERS
EOF
dest: /opt/scripts/docker_metrics.sh
mode: '0755'
become: yes
- name: Create systemd service for Docker metrics
copy:
content: |
[Unit]
Description=Docker metrics script
After=docker.service
[Service]
User=root
ExecStart=/opt/scripts/docker_metrics.sh
dest: /etc/systemd/system/docker-metrics.service
mode: '0644'
become: yes
- name: Create systemd timer for Docker metrics
copy:
content: |
[Unit]
Description=Run Docker metrics every 30 seconds
[Timer]
OnBootSec=1min
OnUnitActiveSec=30s
[Install]
WantedBy=timers.target
dest: /etc/systemd/system/docker-metrics.timer
mode: '0644'
become: yes
- name: Ensure Node Exporter textfile directory exists
file:
path: /var/lib/node_exporter/textfile_collector
state: directory
owner: node_exporter
group: node_exporter
mode: '0755'
become: yes
- name: Enable and start Docker metrics timer
systemd:
name: docker-metrics.timer
enabled: yes
state: started
daemon_reload: yes
become: yes
- name: Test Docker metrics script
command: /opt/scripts/docker_metrics.sh
register: metrics_test
changed_when: false
- name: Show Docker metrics test result
debug:
var: metrics_test.stdout

View File

@ -19,20 +19,20 @@ scrape_configs:
regex: '(.*):{{ monitoring_ports.node_exporter }}'
replacement: '${1}'
# ========== cAdvisor для мониторинга Docker на всех серверах ==========
- job_name: 'cadvisor'
static_configs:
- targets:
{% for server in monitoring_groups.cadvisor_servers %}
- '{{ server }}:{{ monitoring_ports.cadvisor }}'
{% endfor %}
scrape_interval: 30s
metrics_path: /metrics
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '(.*):{{ monitoring_ports.cadvisor }}'
replacement: '${1}'
# # ========== cAdvisor для мониторинга Docker на всех серверах ==========
# - job_name: 'cadvisor'
# static_configs:
# - targets:
#{% for server in monitoring_groups.cadvisor_servers %}
# - '{{ server }}:{{ monitoring_ports.cadvisor }}'
#{% endfor %}
# scrape_interval: 30s
# metrics_path: /metrics
# relabel_configs:
# - source_labels: [__address__]
# target_label: instance
# regex: '(.*):{{ monitoring_ports.cadvisor }}'
# replacement: '${1}'
# ========== Proxmox VE ==========
- job_name: 'proxmox'