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.
- Zaloguj się do właściwego klastera i kontekstu w Kubernetesie, tak byś mógł użyć narzędzia
kubectl
i helm - 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
- Wydaj polecenie
helm show values zabbix-chart-6.4/zabbix-helm-chrt > ./zabbix_values.yaml
aby wyeksportować domyślne wartości charta do pliku
- 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"
- Wydaj polecenie
kubectl create namespace monitoring
aby utworzyć nowy name space na klastrze Kubernetesa - 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
- 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.
- 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. - Dalej Data collecion/Host groups i dodajemy nową grube, najlepiej o nazwie klastra Kubernetesa
- 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ą 🙂