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:
parent
02a6137d41
commit
6927198e63
@ -4,9 +4,45 @@ timezone: Asia/Yekaterinburg
|
||||
system_locale: ru_RU.UTF-8
|
||||
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"
|
||||
admin_user: root
|
||||
# Устанвливаем базовые пакеты
|
||||
|
||||
base_packages:
|
||||
- curl
|
||||
- wget
|
||||
@ -48,6 +84,18 @@ pve_exporter_user: "pve_exporter@pve"
|
||||
pve_exporter_token_name: "grafana"
|
||||
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) ------------
|
||||
npm_base_dir: "/opt/npm"
|
||||
npm_data_dir: "/opt/npm/data"
|
||||
@ -188,18 +236,13 @@ meshcentral_port: "45131"
|
||||
|
||||
# Grafana
|
||||
grafana_base_dir: /mnt/grafana
|
||||
grafana_data_dir: "{{ grafana_base_dir }}/data" # Grafana DB, plugins, etc.
|
||||
grafana_config_dir: "{{ grafana_base_dir }}/config" # provisioning (datasources, dashboards)
|
||||
grafana_vm_data_dir: "{{ grafana_base_dir }}/victoriametrics" # VM data (TSDB)
|
||||
grafana_vmagent_tmp_dir: "{{ grafana_base_dir }}/vmagent/tmp" # vmagent temp files
|
||||
grafana_data_dir: "{{ grafana_base_dir }}/data"
|
||||
grafana_config_dir: "{{ grafana_base_dir }}/config"
|
||||
grafana_vm_data_dir: "{{ grafana_base_dir }}/victoriametrics"
|
||||
grafana_vmagent_tmp_dir: "{{ grafana_base_dir }}/vmagent/tmp"
|
||||
grafana_vmagent_config: "{{ grafana_base_dir }}/vmagent/vmagent.yaml"
|
||||
|
||||
grafana_port: 45132
|
||||
grafana_admin_user: admin
|
||||
grafana_admin_password: 13qeadZC
|
||||
grafana_root_url: https://mon.zailon.ru
|
||||
|
||||
victoriametrics_retention_months: 2
|
||||
victoriametrics_version: v1.101.0
|
||||
grafana_version: 11.2.0
|
||||
|
||||
|
||||
59
roles/cadvisor/tasks/main.yml
Normal file
59
roles/cadvisor/tasks/main.yml
Normal 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)
|
||||
29
roles/cadvisor/templates/docker-compose.yml.j2
Normal file
29
roles/cadvisor/templates/docker-compose.yml.j2
Normal 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
|
||||
@ -5,10 +5,42 @@ global:
|
||||
environment: 'production'
|
||||
|
||||
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'
|
||||
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
|
||||
params:
|
||||
module: [default]
|
||||
@ -16,42 +48,22 @@ scrape_configs:
|
||||
relabel_configs:
|
||||
- source_labels: [__address__]
|
||||
target_label: instance
|
||||
replacement: '192.168.1.200:9223'
|
||||
|
||||
# ========== 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'
|
||||
regex: '(.*):{{ monitoring_ports.proxmox_exporter }}'
|
||||
replacement: '${1}'
|
||||
|
||||
# ========== Self-monitoring vmagent ==========
|
||||
# ========== Self-monitoring ==========
|
||||
- job_name: 'vmagent'
|
||||
static_configs:
|
||||
- targets: ['vmagent:8429']
|
||||
- targets: ['localhost:{{ monitoring_ports.vmagent }}']
|
||||
scrape_interval: 30s
|
||||
relabel_configs:
|
||||
- source_labels: [__address__]
|
||||
target_label: instance
|
||||
replacement: 'vmagent'
|
||||
|
||||
# ========== VictoriaMetrics self-monitoring ==========
|
||||
- job_name: 'victoriametrics'
|
||||
static_configs:
|
||||
- targets: ['victoriametrics:8428']
|
||||
- targets: ['localhost:{{ monitoring_ports.victoriametrics }}']
|
||||
scrape_interval: 30s
|
||||
metrics_path: /metrics
|
||||
relabel_configs:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user