Zabbix i Kubernetes na AWS

Zabbix od wersje 6 ma wbudowane narzędzia do monitorowania usług w chmurze. Ja potrzebowałem na szybko monitorować stan podów w nodach Kubernetesowych odpalonych na EC2 w AWS i to w starszej wersji Zabbixa 5. Jak to zrealizowałem – bardzo chętnie się z tym podzielę w poniższym teksćie.

Rozwiązanie właściwie miało być tymczasowe nim zapgrejduje zabbixa i użycie dedykowanych rozwiązań.

Na swojej maszynce miałem skonfigurowane połączanie AWS CLI i narzędzia kubectx i kubens. Zabbix już monitorował moją stacje za pomocą agenta. Postanowiłem wykorzystać ten fakt i trochę zautomatyzować sprawdzenie stanów podów; ile nodów jest w stanie NotReady i czy któryś z podów jest w stanie Pending, a jeśli tak to odpalać triger i alarm.

ustawiłem więc na swojej maszynie itema do wykonywania poleceń system.run z poniższym poleceniem. Oczywiście musiałem jeszcze włączyć w zabbix_agent.conf możliwość wykonywania polecen i zwiększyć timeout na 5 sekund bo domysle 3 nie wystarczyło na wykonanie zadania.

system.run[sudo runuser -l  <mojUżytkownik> -c 'kubectl get pods -A | grep NotReady | wc -l']

Polecenie zliczało mi ile jest nodów w stanie NotReady

Dodałem też item, który miał zliczać ile podów jest w stanie Pending.

system.run[sudo runuser -l  d_sternik -c 'kubectl get pods -A | grep Pending | wc -l']

A na koniec ustawiłem jeszcze trigery z użyciem wyrażenia last w sposób jak na obrazku.

Oczywiście docelowo najlepiej skorzystać z wbudowanych rozwiązań do monitoringu Kubernetesa. Jednak jak na szybkie chcemy uzyskać podstawowe informacje to to rozwiązanie też się sprawdza.

Tags:,