🖥️ Безплатен мониторинг на 100+ сървъра с Zabbix и Grafana

🖥️ Безплатен мониторинг на 100+ сървъра с Zabbix и Grafana

Пълна инсталация и конфигурация за CPU, RAM, диск, мрежа + email/SMS алерти
Стартира всичко с една команда!


✅ Защо да следим сървърите си?

Представете си, че имате 5, 10 или дори 100 сървъра. Един от тях спира. Никой не ви казва. Критична услуга спира да работи. Край на спокойствието. 😰

Мониторинг системата е вашият “доктор по сървъри” – тя следи състоянието на машините и ви казва, ако нещо тръгне на зле.

Конкретна полза:

  • Откривате проблемите преди да причинят щети
  • Реагирате бързо – чрез email или SMS
  • Пестите време, пари и нерви

🧰 Какво ще постигнем?

Ще изградим напълно безплатна система за мониторинг на над 100 сървъра. Само с една команда ще получите:

  • 📈 Готови Grafana dashboard-и
  • 🛠️ Zabbix шаблони за CPU, RAM, диск, мрежа
  • 🔔 Аларми по email и SMS
  • 🧠 Интуитивен уеб интерфейс
  • 🔒 Сигурна, мащабируема архитектура
  • 📊 Данни в реално време, запазвани с месеци

🔍 Какво ще използваме?

  • Zabbix – най-популярната open-source мониторинг платформа
  • Grafana – кралят на визуализациите
  • Docker – за лесно и бързо стартиране
  • Telegram или SMS – за мигновени известия
  • MariaDB – за база данни на Zabbix
  • Prometheus Node Exporter (по избор) – за допълнителни метрики

🧠 Основна архитектура

+-------------+         +------------+       +-------------+
| Zabbix | <----> | MariaDB | | Grafana |
| Server | | (DB) | | (Dashboards)
+-------------+ +------------+ +-------------+
|
v
+------------------+ +------------------+
| Zabbix Agents | | Node Exporters |
| (всички сървъри) | | (по избор) |
+------------------+ +------------------+

🚀 Стъпка 1: Стартиране с една команда

Създайте празна директория и запишете следното в docker-compose.yml:

version: '3.5'

services:
  zabbix-db:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbixpass
    volumes:
      - ./zabbix-db:/var/lib/mysql

  zabbix-server:
    image: zabbix/zabbix-server-mysql
    ports:
      - "10051:10051"
    environment:
      DB_SERVER_HOST: zabbix-db
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbixpass
    depends_on:
      - zabbix-db

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql
    ports:
      - "8080:8080"
    environment:
      DB_SERVER_HOST: zabbix-db
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbixpass
      ZBX_SERVER_NAME: MyZabbix

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana

volumes:
  grafana-data:

Стартирайте всичко с:

docker compose up -d

⏱️ Измерима стойност: Всичко е готово за 2-3 минути!


🌐 Достъп до интерфейси


🛡️ Стъпка 2: Инсталиране на Zabbix агент на сървърите

На всеки сървър, който искате да наблюдавате:

sudo apt install zabbix-agent -y

Конфигурирайте /etc/zabbix/zabbix_agentd.conf:

Server=IP_НА_ZABBIX_SERVER
ServerActive=IP_НА_ZABBIX_SERVER
Hostname=името_на_сървъра

След това рестартирайте агента:

sudo systemctl restart zabbix-agent

🔧 Можете да автоматизирате тази инсталация с Ansible или bash скрипт, ако имате много сървъри.


📊 Стъпка 3: Визуализация с Grafana

Grafana няма нужда от ръчна инсталация – вече работи! Свържете го със Zabbix:

  1. Влезте в Grafana (http://localhost:3000)
  2. Отидете в Settings > Plugins
  3. Инсталирайте Zabbix plugin
  4. Добавете нов Data Source от тип Zabbix
  5. Настройте URL: http://zabbix-web:8080/api_jsonrpc.php
  6. Въведете user/pass: Admin/zabbix

🎯 Готово! Вече може да добавяте dashboard-и и панели за CPU, RAM и др.


🧩 Стъпка 4: Импортиране на готови dashboards

  1. Отворете Grafana
  2. Отидете на Dashboards > Import
  3. Въведете следните ID номера:
DashboardID
Linux Server928
Zabbix Overview11165
Network Usage12039
Disk Performance11378

📥 Така получавате красиви, готови панели за всички важни метрики.


📣 Стъпка 5: Алерти чрез Email и SMS

Email аларми:

  1. Влезте в Zabbix Web
  2. Отидете в Administration > Media types > Email
  3. Въведете SMTP настройки (например Gmail или Mailgun)
SMTP server: smtp.mailgun.org
SMTP helo: yourdomain.com
SMTP email: alerts@yourdomain.com
Authentication: enabled
Username: alerts@yourdomain.com
Password: [API Key or password]

Добавете получатели в Users > Media

Присвойте тригери от шаблоните – пример:

CPU > 90% за 5 минути = аларма
RAM > 95% = аларма
Диск < 5% свободно място = аларма

SMS аларми (чрез Telegram Bot):

  1. Създайте бот в Telegram чрез @BotFather
  2. Вземете API Token
  3. Вземете вашия Chat ID от @userinfobot
  4. Добавете нов Media type в Zabbix – Telegram script
  5. Скрипт пример за /usr/lib/zabbix/alertscripts/telegram.sh:
#!/bin/bash
TOKEN='ВАШИЯТ_ТОКЕН'
CHAT_ID='ВАШИЯТ_CHAT_ID'
MESSAGE=$1

curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" -d text="$MESSAGE"

💼 Реални ползи

ПолзаСъдържаниеИзмерима стойност
Пълна видимостCPU, RAM, диск, мрежа за 100+ сървъраПод 5 минути за добавяне на нов сървър
Мигновени известияEmail и Telegram алармиРеакция в рамките на 1 минута
Лесна визуализацияGrafana dashboards + Zabbix тригериСпестявате часове за диагностика
Безплатна и мащабируема системаDocker + Open Source инструменти0 лв. за 100+ сървъра

📌 Заключение

Системата, която създадохме, е стабилна, визуално атрактивна и безплатна.
Инсталацията отнема само няколко минути, а мониторингът ви спестява много главоболия. 🧠

Сега сте готови да следите сървърите си професионално – всеки ден, 24/7.


🤝 Споделете и приложете

Ако тази статия ви е помогнала – споделете я с колеги!
Колкото повече хора използват правилните инструменти, толкова по-добър става интернет.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: