diff --git a/README.md b/README.md new file mode 100644 index 0000000..9b823ae --- /dev/null +++ b/README.md @@ -0,0 +1,133 @@ +# Домашнее задание 22 + +## Zabbix/Prometheus/Grafana + +Базовые принципы работы с Zabbix, Prometheus и Grafana. + + +### Подготовка + +Будем одновременно разворачивать zabbix, prometheus и grafana используя Docker Compose + + +Подготовим каталоги для данных + +```bash + +root@ubuntu-pc:~# mkdir -p /var/monitorig/zabbix +root@ubuntu-pc:~# mkdir -p /var/monitorig/prometheus/conf +root@ubuntu-pc:~# mkdir /var/monitorig/prometheus/data +root@ubuntu-pc:~# mkdir /var/monitorig/grafana + +``` + +Давадим отдельные права на католог /var/monitorig/prometheus/data, иначе prometheus не может записать данные + +```bash +root@ubuntu-pc:~# chown 65534:65534 /var/monitorig/prometheus/data +``` + +Создадим к конфиг для prometheus +```bash +root@ubuntu-pc:~# vi /var/monitorig/prometheus/conf/prometheus.yml +``` + +Со следующим содержимом +``` +scrape_configs: + - job_name: node + scrape_interval: 5s + static_configs: + - targets: ['192.168.50.23:9100'] +``` + + + + +Создадим ![docker-compose.yml](docker-compose.yml) , я его поместил в каталог /var/monitorig/. + +Разварачивать бедем следующие контейнеры +1. **mysql-server** - для zabbix сервера +2. **zabbix-server-mysql** - сам zabbix сервер +3. **zabbix-web-nginx-mysql** - web интерфейс для zabbix сервера +4. **prometheus** - prometheus сервер +5. **node-exporter** - exporter для мониторинга хостовой машины + + +Запускаем docker + +```bash +root@ubuntu-pc:/var/monitorig# docker compose up -d +WARN[0000] /var/monitorig/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion +[+] up 50/50 + ✔ Image prom/prometheus:latest Pulled 47.0s + ✔ Image grafana/grafana Pulled 47.7s + ✔ Image zabbix/zabbix-server-mysql:alpine-latest Pulled 17.4s + ✔ Image zabbix/zabbix-web-nginx-mysql:alpine-latest Pulled 40.1s + ✔ Image prom/node-exporter Pulled 4.5ss + ✔ Container prometheus Created 2.6s + ✔ Container exporter Created 2.6s + ✔ Container monitorig-grafana-1 Created 2.6s + ✔ Container monitorig-mysql-server-1 Created 2.6s + ✔ Container monitorig-zabbix-server-mysql-1 Created 0.1s + ✔ Container monitorig-zabbix-web-nginx-mysql-1 Created 0.1s + +``` + +проверим, что все контейнеры запущены +```bash +root@ubuntu-pc:/var/monitorig# docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +8bfcff326ace zabbix/zabbix-web-nginx-mysql:alpine-latest "docker-entrypoint.sh" 6 minutes ago Up 6 minutes (healthy) 0.0.0.0:80->8080/tcp 0.0.0.0:443->8443/tcp monitorig-zabbix-web-nginx-mysql-1 +25b83675c59e zabbix/zabbix-server-mysql:alpine-latest "/usr/bin/docker-ent…" 6 minutes ago Up 6 minutes 0.0.0.0:10051->10051/tcp monitorig-zabbix-server-mysql-1 +18b199a01f6e mysql:8.0 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp monitorig-mysql-server-1 +b40d475c6a6a prom/prometheus:latest "/bin/prometheus --c…" 6 minutes ago Up 6 minutes 0.0.0.0:9090->9090/tcp prometheus +70095b8684ee grafana/grafana "/run.sh" 6 minutes ago Up 6 minutes 0.0.0.0:3000->3000/tcp monitorig-grafana-1 +18795bc922a3 prom/node-exporter "/bin/node_exporter …" 6 minutes ago Up 6 minutes exporter +``` + +Установим zabbix-agent на хостовую машину + + +### Настройка + +#### Настройка Zabbix + +Перейдем на страницу http://127.0.0.1/, по умолчанию логин **Admin** а пароль **zabbix** + +Я создал наипростейший шаблон для мониторинга Linux систем, который мониторит: +1. Загруpка CPU в % +2. Колличество опративной памяти, и занятой в % +3. Автообнаружение примонтированных устройств, их общий объем и занятость в % +4. Автообнаружение сетевыйх устройств, и колличество переданной и полученной иформации в битах + +![myLinuxTemplate.yml](myLinuxTemplate.yaml) + +Переходим в **Data collection -> Temptlates**. +Загружаем шаблон через **import** + +Далее переходим в **Data collection -> Hosts** +Добавляем хостовую машину, не забывая выбрать template **myLinuxTemplate** +![22_1.img](image/22_1.img]) + +Все готово. Убедиться что zabbix получает данный от агента можно в ** Monitoring -> Latest data**, выбрав наш добавленный хост +![22_2.img](image/22_2.img]) + +#### prometheus + +Перейдем на страницу http://127.0.0.1:9090/targets, и убедимся, что prometheus видит наш exporter +![22_3.img](image/22_3.img]) + + +#### Настройка Grafana +Перейдем на страницу http://127.0.0.1:3000/, по умолчанию логин **admin** пароль **admin** + +Переходим в **Administration -> Plugins and data -> Plugins**. Тут мы ищем и устанавливаем 2 плагина. Prometheus и Zabbix + +Далее переходим в **Collections -> Data sources**, и настравиваем подключения к zabbix и prometheus. + +Я создал небольшой dashboard, который показывает данные как из zabbix так и из prometheus, импортируем его и смотрим что получилось +![22_4.img](image/22_4.img]) + +Все готово! Домашние задание выполнено! +