From 64ad0c49bc2dd175841ac9b43d7d77c6983029b5 Mon Sep 17 00:00:00 2001 From: Administrator Date: Mon, 24 Nov 2025 06:53:55 +0000 Subject: [PATCH] Update 3 files - /roles/docker/tasks/main.yml - /roles/grafana/templates/vmagent.yaml.j2 - /group_vars/all.yml --- group_vars/all.yml | 18 ++--- roles/docker/tasks/main.yml | 96 ++++++++++++++++++++++++- roles/grafana/templates/vmagent.yaml.j2 | 28 ++++---- 3 files changed, 118 insertions(+), 24 deletions(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 0876d28..43f7b46 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -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 diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 794c412..5cd12fb 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -60,4 +60,98 @@ - name: Show Docker Compose version debug: - msg: "Docker Compose version: {{ docker_compose_version.stdout }}" \ No newline at end of file + 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 \ No newline at end of file diff --git a/roles/grafana/templates/vmagent.yaml.j2 b/roles/grafana/templates/vmagent.yaml.j2 index 48568a2..a8dff11 100644 --- a/roles/grafana/templates/vmagent.yaml.j2 +++ b/roles/grafana/templates/vmagent.yaml.j2 @@ -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'