Dlaczego zmieniłem Munin na Zabbix – monitoring serwera

Dlaczego zmieniłem Munin na Zabbix?

Długo zabierałem się z tą decyzją, ale w końcu zdecydowałem się. Dlaczego tak długo? Zapraszam do wpisu.

Główną motywacją zmiany z Munin na Zabbix była popularność Zabbixa na forach internetowych czy grupach związanych z tematyką sysops i devops. Oprócz popularności, zaczęło mi brakować funkcjonalności informowania mnie o problemach z serwerem i wirtualnymi maszynami. Ponieważ Munin nie ma (nie miał?) możliwości informowania mnie o problemach, zdarzało się, że po wejściu na dashboard widziałem żółte podświetlenie. Najczęściej problemem była przestrzeń dyskowa. Na szczęście było to tylko ostrzeżenie, ale gdybym nie zdecydował się sprawdzić, nie wiedziałbym, że problem potencjalnie istnieje

Dlaczego zwlekałem ze zmianą?

Zabbix is a mature and effortless enterprise-class open source monitoring solution

Powodem dla którego zwlekałem było słowo enterprise. Instalacja Munina była prosta i miałem gotowy skrypt. Ot apt-get install i skopiowanie kilka pluginów odpowiedzialnych za wyświetlanie poszczególnych parametrów. Jednak Zabbix jest enterprise. Pytanie, czy potrzebuję takiej wielkiej kobyły do zarządzania serwerem i 10 wirtualnymi maszynami? Czy poradzę sobie z konfiguracją?

Nie taki diabeł straszny jak go malują

Jednak postanowiłem spróbować rozwiązania.

Zanim uruchomiłem powyższy stos na serwerze, chciałem zrobić ogólne rozeznanie w Zabbix u siebie lokalnie.

Uruchomiłem u siebie na komputerze i zacząłem klikać. Pomimo wielu opcji konfiguracyjnych, konfiguracja do monitoringu serwera dla wybranych hostów jest stosunkowo prosta ze względu na wykorzystanie template’ów, które definiują jakie dane będą zbierane, jakie wykresy będą wyświetlane oraz jakie rodzaje alertów będą wysyłane.

Instalacja Zabbix z docker-compose

Ponieważ staram się jak najwięcej rzeczy konteneryzować, szukałem rozwiązania Dockerowego. Poniżej przedstawiam gotowego docker-compose dla Zabbix server jeśli ktoś chciałby skorzystać. Zmieńcie tylko hasło do bazy 😉

version: '3.5'

volumes:
  zabbix-data-alertscripts:
  zabbix-data-externalscripts:
  zabbix-data-export:
  zabbix-data-modules:
  zabbix-data-enc:
  zabbix-data-ssh_keys:
  zabbix-data-mibs:
  zabbix-data-snmptraps:
  zabbix-nginx-nginx:
  zabbix-nginx-modules:
  zabbix-mysql:

services:
  mysql:
    image: mysql:8.0
    restart: unless-stopped
    container_name: zabbix-mysql
    command:
      - mysqld
      - --character-set-server=utf8
      - --collation-server=utf8_bin
      - --default-authentication-plugin=mysql_native_password
    environment:
      - MYSQL_USER=zabbix
      - MYSQL_DATABASE=zabbixdb
      - MYSQL_PASSWORD=GENERATE_HERE_STRONG_MYSQL_PASSWORD
      - MYSQL_ROOT_PASSWORD=GENERATE_HERE_STRONG_MYSQL_ROOT_PASSWORD
    volumes:
      - zabbix-mysql:/var/lib/mysql:rw

  zabbix-server-mysql:
    image: zabbix/zabbix-server-mysql
    restart: unless-stopped
    container_name: zabbix-server-mysql
    ports:
      - "10051:10051"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - zabbix-data-alertscripts:/usr/lib/zabbix/alertscripts:ro
      - zabbix-data-externalscripts:/usr/lib/zabbix/externalscripts:ro
      - zabbix-data-export:/var/lib/zabbix/export:rw
      - zabbix-data-modules:/var/lib/zabbix/modules:ro
      - zabbix-data-enc:/var/lib/zabbix/enc:ro
      - zabbix-data-ssh_keys:/var/lib/zabbix/ssh_keys:ro
      - zabbix-data-mibs:/var/lib/zabbix/mibs:ro
      - zabbix-data-snmptraps:/var/lib/zabbix/snmptraps:rw
    environment:
      - DB_SERVER_HOST=mysql
      - MYSQL_DATABASE=zabbixdb
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=GENERATE_HERE_STRONG_MYSQL_PASSWORD
      - MYSQL_ROOT_PASSWORD=GENERATE_HERE_STRONG_MYSQL_ROOT_PASSWORD
    depends_on:
      - mysql

  zabbix-web-nginx-mysql:
    image: zabbix/zabbix-web-nginx-mysql:6.2.0-ubuntu
    restart: unless-stopped
    container_name: zabbix-web-nginx-mysql
    ports:
      - "8080:8080"
      - "443:8443"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - zabbix-nginx-nginx:/etc/ssl/nginx:ro
      - zabbix-nginx-modules:/usr/share/zabbix/modules/:ro
    environment:
      - ZBX_SERVER_HOST=zabbix-server-mysql
      - DB_SERVER_HOST=mysql
      - MYSQL_DATABASE=zabbixdb
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=GENERATE_HERE_STRONG_MYSQL_PASSWORD
      - MYSQL_ROOT_PASSWORD=GENERATE_HERE_STRONG_MYSQL_ROOT_PASSWORD
    depends_on:
      - mysql
      - zabbix-server-mysql

Podsumowanie

Po testach, czas na wdrożenie. Jak wcześniej wspominałem, dzięki Dockerowi przejście na serwer było banalnie proste.

Jedyna rzecz, która pozostała do zrobienia to skonfigurowanie agentów na poszczególnych wirtualnych maszynach. Ale o tym w następnym wpisie 😀

Dlaczego zmieniłem Munin na Zabbix – monitoring serwera
Subscribe
Powiadom o
guest

0 komentarzy
Inline Feedbacks
Zobacz wszystkie komentarze