Monitorowanie klastra Kuberntesa w Zabbix

Jakiś czas temu wydawało się, że Zabbix jest stworzony do monitorowania raczej tradycyjnych, nazwijmy to statycznych środowisk. Jednak w ostatnich wersjach, a na pewno od wersji 6, monitorowanie dynamicznych zasobów jakie są w Kubernetesie jest już w miarę ogarnięte.
Dlatego w poniższym tekście przedstawię jak monitorować klaser Kubertesa w Zabbiksie 6.4.

Całą konfiguracje możemy podzielić na dwa etapy – pierwsza część konfiguracji w Kubernetes i druga już w samym Zabbiksie.

  1. Zaloguj  się do właściwego klastera i kontekstu w Kubernetesie, tak byś mógł użyć narzędzia kubectl i helm
  2. Wydaj polecenie
    helm repo add zabbix-chart-6.4  https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.4

aby dodać nowy chart do helmowego repozytorium

  1. Wydaj polecenie
    helm show values zabbix-chart-6.4/zabbix-helm-chrt > ./zabbix_values.yaml

aby wyeksportować domyślne wartości charta do pliku

  1. Otwórz w dowolnym edytorze tekstowym plik zabbix_values.yaml i popraw tam dwie wartości 

 ## Zabbix proxy hostname
    - name: ZBX_HOSTNAME
      value: zabbix-proxy-TuNazwaTwojegoKlastraKubernetesa

    ## Note that since version 6.0 the variable ZBX_SERVER_PORT is not supported anymore. Instead, add a colon (:
    - name: ZBX_SERVER_HOST
      value: "TuAdresIPTwojegoServeraZabbixa"

  1. Wydaj polecenie
    kubectl create namespace monitoring
    aby utworzyć nowy name space na klastrze Kubernetesa

  2. Wydaj polecenie
    helm install zabbix zabbix-chart-6.4/zabbix-helm-chrt --dependency-update -f ./zabbix_values.yaml -n monitoring

aby zainstalować nowy chart zabbixa z odpowiednia konfiguracja

  1. Wydaj polecenie
    kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token} | base64 -d > ./token.txt
    aby zapisać do pliku automatycznie wygenerowany token. Posłuży on nam później już przy konfiguracji w Zabbiksie

To tyle konfiguracji po stronie Kubernetesa. Teraz możemy przejść do naszego zabbixa.

  1. Przechodzimy do sekcji Administration/Proxies i dodajemy nowy proxy w formularzu podając tylko jego nazwę zabbix-proxy-TuNazwaTwojegoKlastraKubernetesa  (którą określiliśmy wcześniej w pliku zabbix_values.yaml).  Proxy mode pozostawimy na Active.
  2. Dalej Data collecion/Host groups i dodajemy nową grube, najlepiej o nazwie klastra Kubernetesa
  3. Teraz Data collection/Hosts i dodajemy tworzymy nowy host.  A w formularzu dodawania nowego hosta wypełnijmy pola:
  • Host name – tu wpisujemy nazwę, która najlepiej gdy się składa z nazwy klastra plus nazwa szablonu użytego poniżej 
  • Templates – tu wpisujemy słowo kluczowe Kubernetes i wyświetla nam się lista różnych szablonów do Kubernetesa. Wybieramy jeden.
    Możesz zapoznać się z nimi na tej stronie  https://www.zabbix.com/integrations/kubernetes
    Potem można dodać pozostałe szablony z tej listy  po kolei w każdym kolejnym hoście, który utworzysz.
  • Host group – tu wpisz grupę, którą utworzyłeś w punkcie 2. 
  • Monitored by proxy – tu z listy wybierz odpowiednie proxy, które wcześniej dodałeś. 
  • Przechodzimy do zakładki Macros
    • wybieramy Inherited and host macros
    • dla makro {$KUBE.API.TOKEN} klikamy Change i w pole Value wklejamy tam nasz token, który wcześniej wrzuciliśmy do pliku token.txt
    • Zamknij okienko przyciskiem Add

4. Powtórz procedure dodawania kolejnego hosta z następnym szablonem z listy.

Teraz idź zrobić sobie herbatę i jak wrócisz to już powinieneś mieć pierwsze dane z klastra Kubernetesa. Polecam herbatę zieloną 🙂