feat: add Node Exporter Full dashboard and auto-installation
- Add Node Exporter Full dashboard (ID: 1860) from Grafana.com - Configure automatic dashboard installation in playbook.yml - Add prometheus-node-exporter service installation and configuration - Add port 9100 to UFW firewall rules - Add dashboard verification tasks in playbook - Configure Grafana variables for admin credentials
This commit is contained in:
@@ -14,6 +14,9 @@
|
|||||||
old_server: "root@77.223.98.129"
|
old_server: "root@77.223.98.129"
|
||||||
# Опция: пересоздавать папку /home/prod (по умолчанию — нет)
|
# Опция: пересоздавать папку /home/prod (по умолчанию — нет)
|
||||||
recreate_project: false
|
recreate_project: false
|
||||||
|
# Grafana настройки
|
||||||
|
grafana_admin_user: "{{ lookup('env', 'GRAFANA_ADMIN_USER') | default('admin') }}"
|
||||||
|
grafana_admin_password: "{{ lookup('env', 'GRAFANA_ADMIN_PASSWORD') | default('admin') }}"
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Обновить SSH host key для избежания ошибок при переустановке
|
- name: Обновить SSH host key для избежания ошибок при переустановке
|
||||||
@@ -52,8 +55,33 @@
|
|||||||
- iotop
|
- iotop
|
||||||
- traceroute
|
- traceroute
|
||||||
- ncdu
|
- ncdu
|
||||||
|
- prometheus-node-exporter
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
|
- name: Включить и запустить prometheus-node-exporter
|
||||||
|
systemd:
|
||||||
|
name: prometheus-node-exporter
|
||||||
|
enabled: yes
|
||||||
|
state: started
|
||||||
|
|
||||||
|
- name: Проверить статус prometheus-node-exporter
|
||||||
|
command: systemctl status prometheus-node-exporter
|
||||||
|
register: node_exporter_status
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Показать статус prometheus-node-exporter
|
||||||
|
debug:
|
||||||
|
var: node_exporter_status.stdout_lines
|
||||||
|
|
||||||
|
- name: Проверить, что node_exporter слушает на порту 9100
|
||||||
|
command: netstat -tulpn | grep 9100
|
||||||
|
register: node_exporter_port
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Показать информацию о порте 9100
|
||||||
|
debug:
|
||||||
|
var: node_exporter_port.stdout_lines
|
||||||
|
|
||||||
- name: Обновить Docker Compose до последней версии
|
- name: Обновить Docker Compose до последней версии
|
||||||
get_url:
|
get_url:
|
||||||
url: "https://github.com/docker/compose/releases/latest/download/docker-compose-{{ ansible_system }}-{{ ansible_architecture }}"
|
url: "https://github.com/docker/compose/releases/latest/download/docker-compose-{{ ansible_system }}-{{ ansible_architecture }}"
|
||||||
@@ -92,6 +120,7 @@
|
|||||||
- "8081" # AnonBot
|
- "8081" # AnonBot
|
||||||
- "9090" # Prometheus
|
- "9090" # Prometheus
|
||||||
- "3000" # Grafana
|
- "3000" # Grafana
|
||||||
|
- "9100" # Node Exporter
|
||||||
|
|
||||||
- name: Проверить существование пользователя deploy
|
- name: Проверить существование пользователя deploy
|
||||||
getent:
|
getent:
|
||||||
@@ -387,6 +416,16 @@
|
|||||||
recurse: yes
|
recurse: yes
|
||||||
become: yes
|
become: yes
|
||||||
|
|
||||||
|
- name: Убедиться, что дашборд Node Exporter Full скопирован
|
||||||
|
copy:
|
||||||
|
src: "{{ project_root }}/infra/grafana/provisioning/dashboards/node-exporter-full-dashboard.json"
|
||||||
|
dest: "{{ project_root }}/infra/grafana/provisioning/dashboards/node-exporter-full-dashboard.json"
|
||||||
|
owner: "{{ deploy_user }}"
|
||||||
|
group: "{{ deploy_user }}"
|
||||||
|
mode: '0644'
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ deploy_user }}"
|
||||||
|
|
||||||
- name: Запустить ботов через make up
|
- name: Запустить ботов через make up
|
||||||
command: make up
|
command: make up
|
||||||
args:
|
args:
|
||||||
@@ -427,6 +466,37 @@
|
|||||||
timeout: 30
|
timeout: 30
|
||||||
state: started
|
state: started
|
||||||
|
|
||||||
|
- name: Проверить, что порт 9100 (Node Exporter) открыт
|
||||||
|
wait_for:
|
||||||
|
port: 9100
|
||||||
|
host: "{{ ansible_host }}"
|
||||||
|
timeout: 30
|
||||||
|
state: started
|
||||||
|
|
||||||
|
- name: Проверить доступность Grafana API
|
||||||
|
uri:
|
||||||
|
url: "http://{{ ansible_host }}:3000/api/health"
|
||||||
|
method: GET
|
||||||
|
status_code: 200
|
||||||
|
register: grafana_health
|
||||||
|
retries: 5
|
||||||
|
delay: 10
|
||||||
|
|
||||||
|
- name: Проверить, что дашборд Node Exporter загружен в Grafana
|
||||||
|
uri:
|
||||||
|
url: "http://{{ ansible_host }}:3000/api/search?query=Node%20Exporter%20Full"
|
||||||
|
method: GET
|
||||||
|
user: "{{ grafana_admin_user | default('admin') }}"
|
||||||
|
password: "{{ grafana_admin_password | default('admin') }}"
|
||||||
|
status_code: 200
|
||||||
|
register: dashboard_check
|
||||||
|
retries: 3
|
||||||
|
delay: 5
|
||||||
|
|
||||||
|
- name: Показать информацию о найденных дашбордах
|
||||||
|
debug:
|
||||||
|
var: dashboard_check.json
|
||||||
|
|
||||||
- name: Проверка запуска ботов завершена — всё работает 🟢
|
- name: Проверка запуска ботов завершена — всё работает 🟢
|
||||||
debug:
|
debug:
|
||||||
msg: "Все сервисы запущены и слушают нужные порты."
|
msg: "Все сервисы запущены и слушают нужные порты."
|
||||||
|
|||||||
16114
infra/grafana/provisioning/dashboards/node-exporter-full-dashboard.json
Normal file
16114
infra/grafana/provisioning/dashboards/node-exporter-full-dashboard.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user