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
|
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
|
|
||||||
|
|
||||||
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'
|
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:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user