Update 8 files

- /roles/pve_monitoring/tasks/main.yml
- /roles/pve_monitoring/templates/pve_exporter_config.yml.j2
- /roles/[delete]pve_monitoring/tasks/main.yml
- /roles/[delete]pve_monitoring/templates/pve_exporter_config.yml.j2
- /roles/cadvisor/tasks/main.yml
- /roles/cadvisor/templates/docker-compose.yml.j2
- /roles/grafana/files/vmagent.yaml
- /group_vars/all.yml
This commit is contained in:
Administrator 2025-11-19 12:47:30 +00:00
parent 02a6137d41
commit 6927198e63
6 changed files with 180 additions and 37 deletions

View File

@ -4,9 +4,45 @@ timezone: Asia/Yekaterinburg
system_locale: ru_RU.UTF-8 system_locale: ru_RU.UTF-8
x11_display_host: "192.168.1.101" x11_display_host: "192.168.1.101"
# ------------ Группы серверов для мониторинга ------------
monitoring_groups:
# Все серверы с node_exporter
node_exporter_servers:
- "{{ server_ips.olimp }}"
- "{{ server_ips.gateway }}"
- "{{ server_ips.data }}"
- "{{ server_ips.media }}"
- "{{ server_ips.photo }}"
- "{{ server_ips.nextcloud }}"
- "{{ server_ips.talk }}"
- "{{ server_ips.games }}"
- "{{ 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 }}"
# Proxmox VE
proxmox_servers:
- "{{ server_ips.olimp }}"
# ------------ Порты для сервисов мониторинга ------------
monitoring_ports:
node_exporter: 9100
cadvisor: 45133
proxmox_exporter: 9223
vmagent: 8429
victoriametrics: 8428
proxmox_node: "Olimp" proxmox_node: "Olimp"
admin_user: root admin_user: root
# Устанвливаем базовые пакеты
base_packages: base_packages:
- curl - curl
- wget - wget
@ -48,6 +84,18 @@ pve_exporter_user: "pve_exporter@pve"
pve_exporter_token_name: "grafana" pve_exporter_token_name: "grafana"
pve_exporter_token_value: "ae683c34-c539-4b08-b539-6c9b7e570411" pve_exporter_token_value: "ae683c34-c539-4b08-b539-6c9b7e570411"
# ------------ Мониторинг Docker ------------
# cAdvisor на всех серверах с Docker
cadvisor_enabled: true
cadvisor_base_dir: "/opt/cadvisor"
cadvisor_config_dir: "{{ cadvisor_base_dir }}/config"
cadvisor_internal_port: 8080
# VictoriaMetrics & Grafana
victoriametrics_retention_months: 2
victoriametrics_version: v1.101.0
grafana_version: 11.2.0
# ------------ gateway (192.168.1.201) ------------ # ------------ gateway (192.168.1.201) ------------
npm_base_dir: "/opt/npm" npm_base_dir: "/opt/npm"
npm_data_dir: "/opt/npm/data" npm_data_dir: "/opt/npm/data"
@ -188,18 +236,13 @@ meshcentral_port: "45131"
# Grafana # Grafana
grafana_base_dir: /mnt/grafana grafana_base_dir: /mnt/grafana
grafana_data_dir: "{{ grafana_base_dir }}/data" # Grafana DB, plugins, etc. grafana_data_dir: "{{ grafana_base_dir }}/data"
grafana_config_dir: "{{ grafana_base_dir }}/config" # provisioning (datasources, dashboards) grafana_config_dir: "{{ grafana_base_dir }}/config"
grafana_vm_data_dir: "{{ grafana_base_dir }}/victoriametrics" # VM data (TSDB) grafana_vm_data_dir: "{{ grafana_base_dir }}/victoriametrics"
grafana_vmagent_tmp_dir: "{{ grafana_base_dir }}/vmagent/tmp" # vmagent temp files grafana_vmagent_tmp_dir: "{{ grafana_base_dir }}/vmagent/tmp"
grafana_vmagent_config: "{{ grafana_base_dir }}/vmagent/vmagent.yaml" grafana_vmagent_config: "{{ grafana_base_dir }}/vmagent/vmagent.yaml"
grafana_port: 45132 grafana_port: 45132
grafana_admin_user: admin grafana_admin_user: admin
grafana_admin_password: 13qeadZC grafana_admin_password: 13qeadZC
grafana_root_url: https://mon.zailon.ru grafana_root_url: https://mon.zailon.ru
victoriametrics_retention_months: 2
victoriametrics_version: v1.101.0
grafana_version: 11.2.0

View File

@ -0,0 +1,59 @@
---
- name: Check if Docker is installed
command: docker --version
register: docker_check
ignore_errors: yes
changed_when: false
- name: Install cAdvisor (only on Docker hosts)
block:
- name: Create cAdvisor directories
file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- "{{ cadvisor_base_dir }}"
- "{{ cadvisor_config_dir }}"
become: yes
- name: Deploy cAdvisor docker-compose
template:
src: cadvisor-docker-compose.yml.j2
dest: "{{ cadvisor_base_dir }}/docker-compose.yml"
owner: root
group: root
mode: '0644'
become: yes
- name: Run cAdvisor container
docker_compose:
project_src: "{{ cadvisor_base_dir }}"
state: present
restart: yes
become: yes
- name: Wait for cAdvisor to start
wait_for:
host: localhost
port: "{{ cadvisor_internal_port }}"
timeout: 30
state: started
become: yes
- name: Verify cAdvisor is responding
uri:
url: "http://localhost:{{ cadvisor_internal_port }}/metrics"
status_code: 200
timeout: 10
register: cadvisor_check
become: yes
- name: Show cAdvisor status
debug:
msg: "cAdvisor is running and responding on port {{ cadvisor_internal_port }}"
when: cadvisor_check.status == 200
when:
- docker_check.rc == 0
- cadvisor_enabled | default(true)

View File

@ -0,0 +1,29 @@
version: '3.8'
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
restart: unless-stopped
privileged: true
devices:
- /dev/kmsg:/dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
- /cgroup:/cgroup:ro
ports:
- "{{ monitoring_ports.cadvisor }}:{{ cadvisor_internal_port }}"
command:
- --housekeeping_interval=30s
- --docker_only=true
- --port={{ cadvisor_internal_port }}
networks:
- monitoring
networks:
monitoring:
driver: bridge

View File

@ -5,10 +5,42 @@ global:
environment: 'production' environment: 'production'
scrape_configs: scrape_configs:
# ========== Proxmox серверы ========== # ========== Node Exporter со всех серверов ==========
- job_name: 'node'
static_configs:
- targets:
{% for server in monitoring_groups.node_exporter_servers %}
- '{{ server }}:{{ monitoring_ports.node_exporter }}'
{% endfor %}
scrape_interval: 30s
relabel_configs:
- source_labels: [__address__]
target_label: instance
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}'
# ========== Proxmox VE ==========
- job_name: 'proxmox' - job_name: 'proxmox'
static_configs: static_configs:
- targets: ['192.168.1.200:9223'] - targets:
{% for server in monitoring_groups.proxmox_servers %}
- '{{ server }}:{{ monitoring_ports.proxmox_exporter }}'
{% endfor %}
metrics_path: /pve metrics_path: /pve
params: params:
module: [default] module: [default]
@ -16,42 +48,22 @@ scrape_configs:
relabel_configs: relabel_configs:
- source_labels: [__address__] - source_labels: [__address__]
target_label: instance target_label: instance
replacement: '192.168.1.200:9223' regex: '(.*):{{ monitoring_ports.proxmox_exporter }}'
# ========== Node Exporter со всех серверов ==========
- job_name: 'node'
static_configs:
- targets:
- '192.168.1.200:9100' # Proxmox
- '192.168.1.201:9100' # Gateway
- '192.168.1.202:9100' # Data
- '192.168.1.203:9100' # Media
- '192.168.1.204:9100' # Photo
- '192.168.1.205:9100' # Nextcloud
- '192.168.1.206:9100' # Talk
- '192.168.1.207:9100' # Games
- '192.168.1.228:9100' # Manage
scrape_interval: 30s
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '(.*):9100'
replacement: '${1}' replacement: '${1}'
# ========== Self-monitoring vmagent ========== # ========== Self-monitoring ==========
- job_name: 'vmagent' - job_name: 'vmagent'
static_configs: static_configs:
- targets: ['vmagent:8429'] - targets: ['localhost:{{ monitoring_ports.vmagent }}']
scrape_interval: 30s scrape_interval: 30s
relabel_configs: relabel_configs:
- source_labels: [__address__] - source_labels: [__address__]
target_label: instance target_label: instance
replacement: 'vmagent' replacement: 'vmagent'
# ========== VictoriaMetrics self-monitoring ==========
- job_name: 'victoriametrics' - job_name: 'victoriametrics'
static_configs: static_configs:
- targets: ['victoriametrics:8428'] - targets: ['localhost:{{ monitoring_ports.victoriametrics }}']
scrape_interval: 30s scrape_interval: 30s
metrics_path: /metrics metrics_path: /metrics
relabel_configs: relabel_configs: