Загрузка данных
INFRA-SRV3:
Для перехода в суперпользователя используем команду: sudo su -
Установить Docker и Docker Compose можно следующим образом:
apt-get update && apt-get install -y docker-engine docker-compose-v2
Включаем и добавляем в авторзагрузку службу docker:
systemctl enable --now docker.service
Создадим каталог для хранения файлов связанных с системой мониторинга:
mkdir monitoring && cd monitoring
Создаём файл compose.yml и описываем стек контейнеров и параметры необходимые для запуска:
cat <<EOF > compose.yml
services:
prometheus:
image: prom/prometheus:v3.9.0
restart: always
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheusdata:/prometheus
grafana:
image: grafana/grafana:main
restart: always
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=P@ssw0rd
volumes:
- ./grafana/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml
- grafanadata:/var/lib/grafana
volumes:
grafanadata:
prometheusdata:
EOF
Создаём файл prometheus.yml и описываем настройки для Prometheus:
cat <<EOF > prometheus.yml
global:
scrape_interval: 5s
evaluation_interval: 5s
scrape_configs:
- job_name: "node"
static_configs:
- targets:
- infra-srv1.au-team.cloud:9100
- infra-srv2.au-team.cloud:9100
- infra-srv3.au-team.cloud:9100
labels:
target_type: production
- targets:
- k8s-srv1.au-team.cloud:9100
- k8s-srv2.au-team.cloud:9100
- k8s-srv3.au-team.cloud:9100
- k8s-srv4.au-team.cloud:9100
- k8s-srv5.au-team.cloud:9100
labels:
target_type: staging
EOF
Создаём директорию для хранения данных grafana:
mkdir grafana
Создаём файл grafana/datasources.yaml и описываем настройки для Grafana:
cat <<EOF > grafana/datasources.yaml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus:9090
isDefault: true
editable: true
EOF
Запуск с помощью Docker Compose выглядит следующим образом:
docker compose up -d
должно получиться следующее:
Проверить что контейнеры запустились можно следующим образом:
ADM-PC:
Чтобы не устанавливать вручную паке prometheus-node_exporter:
так как у нас есть 2 инвентаря
напишем простенький playbook, например: playbook3_prometheus-node_exporter.yml
cat <<EOF > playbook3_prometheus-node_exporter.yml
---
- name: Installing and launching prometheus-node_exporter
hosts: all
become: true
tasks:
- name: Install package prometheus-node_exporter
community.general.apt_rpm:
name: prometheus-node_exporter
state: present
update_cache: true
- name: Started and enabled prometheus-node_exporter
ansible.builtin.systemd:
name: prometheus-node_exporter
state: started
enabled: true
EOF
Запускаем данный playbook для двух окружений:
ansible-playbook -i inventories/staging/hosts playbook3_prometheus-node_exporter.yml
ansible-playbook -i inventories/production/hosts playbook3_prometheus-node_exporter.yml
должно получиться следующее:
Можно проверить доступность хостов по http://infra-srv3.au-team.cloud:9090/targets:
Переходим по http://infra-srv3.au-team.cloud:3000
и выполняем вход из-под пользователя: admin, с паролем: P@ssw0rd
Импортируем Dashboard с идентификатором 1860 (NodeExporter Full):
В результате должно появиться следующее:
Доступность всех хостов: