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"
|
||||
# Опция: пересоздавать папку /home/prod (по умолчанию — нет)
|
||||
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:
|
||||
- name: Обновить SSH host key для избежания ошибок при переустановке
|
||||
@@ -52,8 +55,33 @@
|
||||
- iotop
|
||||
- traceroute
|
||||
- ncdu
|
||||
- prometheus-node-exporter
|
||||
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 до последней версии
|
||||
get_url:
|
||||
url: "https://github.com/docker/compose/releases/latest/download/docker-compose-{{ ansible_system }}-{{ ansible_architecture }}"
|
||||
@@ -92,6 +120,7 @@
|
||||
- "8081" # AnonBot
|
||||
- "9090" # Prometheus
|
||||
- "3000" # Grafana
|
||||
- "9100" # Node Exporter
|
||||
|
||||
- name: Проверить существование пользователя deploy
|
||||
getent:
|
||||
@@ -387,6 +416,16 @@
|
||||
recurse: 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
|
||||
command: make up
|
||||
args:
|
||||
@@ -427,6 +466,37 @@
|
||||
timeout: 30
|
||||
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: Проверка запуска ботов завершена — всё работает 🟢
|
||||
debug:
|
||||
msg: "Все сервисы запущены и слушают нужные порты."
|
||||
|
||||
Reference in New Issue
Block a user