Metryki, monitory, alerty
Spis treści:
- Podsumowanie
- Szczegóły
- Powiązane
- Notatki
- Wiadomości tekstowe w dowolnej formie a ustrukturyzowane komunikaty zdarzeń
- Graylog jest łatwiejszy
- Prometheus wymaga dostrojenia
- Usługi AWS dają mieszane wrażenia
- Kafka
- Loki
- Prometheus + alertmanager + Rollbar + Graylog + Grafana
- Thanos
- Prometheus HA
- Datadog + PagerDuty + Threat Stack
- Zabbix
- Outlyer
- Nagios + Nagiosgraph
- Prometheus + Grafana + AlertManager
- DataDog + Sentry + PagerDuty.
- Sensu + Graphite + ELK
- Prometheus + Alertmanager
- Sensu + Grafana + Graylog + Kibana + NewRelic.
- Prometheus + Circonus
- icinga2 + VictorOps + NewRelic + Sentry + Slack
- AppDynamics + Papertrail + PagerDuty + Healthchecks.io + Stackdriver
- icinga2 + elasticsearch
- DataDog + New Relic + ELK + EFK + Sentry + Alertmanager + VictorOps
- Wavefront + Scalyr + PagerDuty + Stackstorm + Slack
- Telegraf + Prometheus + InfluxDB + Grafana
- Sematext + Logagent + Experience
- Azure Monitor/Analytics + OpsGenie
- Prometheus + Alertmanager + Grafana + Splunk + PagerDuty
- Telegraf + Prometheus + Grafana + Alertmanager
- Prometheus + Grafana + Cloudwatch + sentry + kibana + elasticsearch
- PagerDuty + Monitis
- Prometheus + Grafana + Bosun
- Azure Monitor/Analytics/Insights/Dashboards
- Grafana + Monitis + OpsGenie + Slack
- Checkly + AppOptics + Cloudwatch + Heroku + Pagerduty + Papertrail
- Instana + Logz.io + slack
- SignalFX + Splunk + PagerDuty + Slack
- ELK + Prometheus + Grafana
- Datadog + Prometheus + Grafana
- Nagios + ELK
- Datadog vs. Site24x7 + StatusCake + PagerDuty + SumoLogic + Slack
- Prometheus + AlertManager + Grafana + Stackdriver
- Zabbix
Podsumowanie
Problem
Chcemy używać metryk, monitorów i alertów, ponieważ chcemy wiedzieć, jak dobrze działają nasze aplikacje, i wiedzieć, kiedy pojawia się problem.
Decyzja
W toku (WIP).
Status
Zbieranie informacji. Zaczynamy od prawdopodobnych krańców spektrum: najczęściej polecanego starszego bezpłatnego narzędzia (Nagios) i najczęściej polecanego nowszego płatnego narzędzia (New Relic).
Szczegóły
Założenia
Chcemy tworzyć aplikacje internetowe, które są nowoczesne, szybkie, niezawodne, responsywne itd.
Chcemy kupować, a nie budować.
Ograniczenia
Chcemy narzędzi, które dobrze współpracują z naszym potokiem devops i z naszymi chmurami wdrożeniowymi.
Stanowiska
Obecnie badamy stanowiska.
AlertManager
AppDynamics
AppOptics
Azure Monitor/Analytics/Insights/Dashboards
Bosun
Checkly
Circonus
Cloudwatch
EFK
ELK
Grafana
Grafana
Graphite
Graylog
Healthchecks.io
Heroku
icinga2
InfluxDB
Instana
Kafka
Logagent
Logz.io
Loki
Monitis
Nagios
Nagios
Nagiosgraph
NewRelic
OpsGenie
Outlyer
PagerDuty
Pagerduty
PagerDuty
Papertrail
Prometheus
Rollbar
Scalyr
Sematext Metrics, Logs, Experience, Tracing
Sensu
SignalFX
Slack
Splunk
Stackdriver
Stackstorm
Telegraf
Telegraf
Thanos
VictorOps
Wavefront
Zabbix
Argument
Jak dotąd Nagios i New Relic są krańcami spektrum. Nagios jest najstarszym, najprostszym, bezpłatnym, realnym narzędziem. New Relic jest narzędziem o najnowszych funkcjach, najpełniejszym, płatnym, realnym. Zaczniemy od oceny tych dwóch. W razie potrzeby przejdziemy do środka spektrum.
Jak dotąd Zabbix ma najlepsze rekomendacje i oferuje też najpełniejsze możliwości.
Jak dotąd ELK ma najlepszą popularność wśród rozwiązań open source budowanych zamiast kupowanych.
Jak dotąd Prometheus + Grafana mają najlepszą popularność.
Implikacje
Do zrobienia.
Powiązane
Powiązane decyzje
Wybory wpłyną na testowalność, telemetrię i prawdopodobnie inne systemy, takie jak obsługa klienta, inżynieria niezawodności witryn (SRE) itd.
Powiązane wymagania
Do zrobienia.
Powiązane artefakty
Do zrobienia.
Powiązane zasady
Łatwo odwracalne.
Potrzeba szybkości.
Notatki
Całkiem dobry stos open source to:
Prometheus do metryk i alertów opartych na metrykach
Grafana do wyświetlania metryk
Elasticsearch/Logstash/Kibana (ELK) do logów i ustrukturyzowanych zdarzeń
Pushover do powiadomień mobilnych
Wiadomości tekstowe w dowolnej formie a ustrukturyzowane komunikaty zdarzeń
Wiadomości tekstowe w dowolnej formie: na przykład takie przypadkowe rzeczy, jakie znajdziesz w /var/log/messages, oraz coś, co jest generowane celowo przez aplikację. Te wiadomości są przydatne do identyfikowania innych zdarzeń na maszynie, takich jak brak pamięci lub błędy sprzętowe, ale zawierają dużo śmieci.
Ustrukturyzowane komunikaty zdarzeń: generowane przez aplikację, ze stałym lub dynamicznym zestawem atrybutów, np. log żądań HTTP, log księgowy, logowanie użytkownika.
Ogólnie rzecz biorąc, dobrze jest logować szczegóły każdego żądania w sposób, który pozwala drążyć na podstawie atrybutów. Dodanie np. identyfikatora użytkownika lub sesji do wszystkiego umożliwia śledzenie. Jawne śledzenie (tracing) jest oczywiście również dobre. Użycie ELK do tego celu to w pewnym sensie ubogi odpowiednik https://www.honeycomb.io/
Graylog jest łatwiejszy
Z mojego doświadczenia Graylog łatwiej uruchomić.
Prometheus wymaga dostrojenia
Ogólnie jestem zadowolony z Prometheusa do metryk. Alerty wymagają dostrojenia, ale są całkiem dobre. To zależy od aplikacji. Uważam, że najlepiej alertować o warunkach widocznych dla użytkownika końcowego, a nie o przyczynach leżących u podstaw. Na przykład czas ładowania strony jest dobry, liczba żądań na sekundę nie. Choć zero żądań na sekundę wskazuje, że coś jest nie tak.
Zaletą usługi jest to, że oferuje dodatkową inteligencję od razu po wyjęciu z pudełka. Ogólnie lubię Datadog. Usługi mogą być przerażająco drogie, jeśli masz dużo danych, a czasem mają modele cenowe, które nie są przyjazne chmurze, np. naliczanie za instancję, gdy instancje są dynamiczne. Jest też różnica między usługami, w których każde żądanie pochodzi od płacącego użytkownika, a tymi związanymi z reklamą, w których tylko niewielki procent żądań przynosi pieniądze. Możesz skończyć z dużą ilością danych i niewielkim budżetem.
Pracuję nad usługami, które obsługują 1 mld żądań dziennie, więc sensowne jest hostowanie własnego monitoringu i logowania. Jeśli Twoje wolumeny są mniejsze, łatwiejsze są usługi hostowane.
Usługi AWS dają mieszane wrażenia
Moje doświadczenia z usługami AWS są mieszane. Ich usługa Elasticsearch była zawodna, więc uruchamiamy własne instancje. Metryki CloudWatch są drogie, więc zwykle używamy ich tylko dla metryk poziomu „infrastruktury”, a nie aplikacji, czyli metryk związanych ze zdrowiem, w których AWS może wiedzieć lepiej, co się dzieje, niż oprogramowanie działające na instancji. Logi CloudWatch mogą być wolno aktualizowane i nie mają zbyt wielu metadanych. Uruchomienie ELK w tym pomaga. Jeśli naprawdę chcę danych w czasie rzeczywistym, lepiej użyć Kafki jako transportu logów. Jest to dobrze wspierane przez Logstash. Zarządzanie klastrem Kafka nie jest jednak dla osób o słabych nerwach, jest tam dużo odsłoniętej instalacji.
Kafka
Komentarz: Kafka bywa czasem bardzo podchwytliwa albo może być solidna jak skała, tak że prawie zapominasz, że tam jest i wszystko spina.
Komentarz: Kafka była solidna, ale uruchomienie jej wymagało zaskakująco dużo pracy. Myślę o niej jak o relacyjnej bazie danych, w której pracuje się tylko na warstwie „fizycznej”, np. przestrzenie tabel, pliki i partycje. Na początku bywały momenty, gdy brakowało narzędzi do zarządzania i musieliśmy pisać programy, np. do resetowania grupy konsumentów. http://howfuckedismydatabase.com/nosql/
Komentarz: Używamy Kafki jako „bufora” dla komunikatów logów i miejsca, w którym możemy przetwarzać strumieniowo w czasie rzeczywistym dane pochodzące z wielu serwerów. Jeśli dojdzie do ataku DDOS, potrzebujemy sposobu analizowania danych z wielu instancji. Jeśli logujemy bezpośrednio z serwerów do ELK, obciążenie może przeciążyć klaster Elasticsearch.
Komentarz: Kafka jest dla nas dobra, ponieważ jeśli dojdzie do ataku DDOS, potrzebujemy sposobu analizowania danych z wielu instancji. Jeśli logujemy bezpośrednio z serwerów do ELK, obciążenie może przeciążyć klaster Elasticsearch.
Komentarz: Kafka wykonuje mniej pracy i jest wydajniejsza, więc lepiej radzi sobie z obciążeniem. A pracę Kafki kolejkujemy i ponawiamy. Przeciążenie Kafki nie wpływa na użytkowników, którzy próbują interaktywnie pracować w Kibanie, tak jak byłoby, gdyby Elasticsearch miał trudności.
Komentarz: Przetwarzanie strumieniowe polega głównie na szukaniu nadużyć, np. zbyt dużego ruchu z jednego IP w całym klastrze, a następnie współdzieleniu blokady w całym klastrze.
Komentarz: Wtyczka logstash-output-kafka jest jednak obecnie dość zawodna. Dotknęło mnie kilka problemów ze strony jej zgłoszeń na GitHubie, które chyba nigdy nie są naprawiane. Chcę przestać jej używać i wysyłać dane bezpośrednio z naszych aplikacji do Kafki.
Komentarz: Teraz wysyłamy ustrukturyzowane zdarzenia bezpośrednio z aplikacji do Kafki. Główną motywacją było rzadsze dotykanie danych logów i unikanie wielokrotnego odczytu i zapisu na dysku. W systemach o dużym wolumenie logowanie może wymagać więcej pracy niż sama aplikacja. Myślę o tym, by journald także wysyłał logi bezpośrednio, z programu w C.
Loki
Miej Lokiego na oku. Nie jest jeszcze gotowy, ale gdy będzie, spodziewam się, że lepiej pasowałby do tego stosu. Loki to agregator logów stworzony przez Grafana Labs, używa podobnej do Prometheusa składni zbierania danych i tagów.
Prometheus + alertmanager + Rollbar + Graylog + Grafana
Prometheus + alertmanager do metryk. <3 Prometheus.
Rollbar/Graylog do logowania/raportowania błędów (jest tu pewne nakładanie się; mała usługa prawdopodobnie nie potrzebuje obu).
Obecnie alerty trafiają po prostu na jeden z kilku kanałów Slack, w których zainteresowane strony mają włączone powiadomienia. Gdybyśmy poważniej traktowali dyżury (on-call), trafiałyby do PagerDuty/VictorOps itp.
Grafana do wykresów i pulpitów. Z niecierpliwością czekam też na to, czy ich nadchodzące funkcje logowania zastąpią Graylog.
Thanos
Używamy Thanosa jako front-endu naszej konfiguracji HA. Potrafi deduplikować pary HA.
Obecnie przechowujemy 6 miesięcy lokalnych danych Prometheusa. Działa to dla nas rozsądnie dobrze. Jestem jednak w trakcie wdrażania magazynu bucket w naszej konfiguracji Thanos do długoterminowego przechowywania danych. Teoretycznie magazyn GCS będzie około 30% tańszy niż standardowy dysk trwały GCE, którego używamy teraz.
Obecnie nie robimy kopii zapasowych danych Prometheusa. Dane nie są dla nas zbyt ważne poza tym, by było ich dość do alertowania. Nasze ogólne wdrożenie floty zmienia się tak bardzo z roku na rok, że dane historyczne starsze niż kilka miesięcy nie są szczególnie interesujące. Interesujące mogłoby być kilka podstawowych statystyk rok do roku; mogę skonfigurować zestaw reguł nagrywania podstawowych statystyk i przechowywać je przez Federation albo po prostu zostawić to Thanosowi.
EDIT: Małe zastrzeżenie: jestem programistą Prometheusa.
Prometheus HA
HA w Prometheusie realizuje się przez duplikację — uruchamiasz wiele instancji zbierających dane i są sposoby, by odpytywać wiele z nich i deduplikować dane
Skalowanie polega na podziale sieci i odpytywaniu różnych części sieci przez różne instancje Prometheusa
Długoterminowe przechowywanie nie jest mocną stroną Prometheusa, ale jest przenoszone do czegoś takiego jak Influx czy timescaledb (który technicznie też spełnia wymóg HA) artykuł, który o tym czytałem https://blog.timescale.com/prometheus-ha-postgresql-8de68d19b6f5?gi=7df160f10e07
Nie próbowałem jeszcze rozwiązań długoterminowych, bo nadal tylko eksperymentuję i używam go do krótkoterminowych wykresów, podczas gdy librenms monitoruje moją sieć w długim okresie
Datadog + PagerDuty + Threat Stack
Używamy Datadog (z PagerDuty) i Threat Stack i nie moglibyśmy być szczęśliwsi. Moje jedyne zastrzeżenie do DD to stosunkowo wysoki koszt przechowywania metryk.
Zabbix
Zabbix z własnymi skryptami do monitorowania niemal wszystkiego. Działa jak złoto.
Outlyer
Używam Outlyera, ale muszę zastrzec, że tu pracuję, a używanie własnego produktu to konieczność.
Do wzbogacenia nadal potrzebuję Graylog, Sentry i Statuscake.
Brzmi stronniczo, ale po szczęśliwym uruchamianiu Nagiosa i innych systemów monitoringu wewnętrznie w każdej nowej pracy kupiłbym rozwiązanie hostowane i pozbył się tego bólu.
Nagios + Nagiosgraph
Używamy Nagiosa do całego monitoringu i alertów. Alerty przychodzą e-mailem (ostrzeżenia i powiadomienia krytyczne) oraz dźwiękowymi powiadomieniami aplikacji (dla alertów krytycznych).
Nagiosgraph służy do wizualizacji.
Ta konfiguracja bardzo skutecznie na bieżąco informuje nas o tym, co dzieje się w naszym środowisku. Uruchamiamy i monitorujemy około 110 serwerów krytycznych dla działalności i około 760 punktów danych, a ten system działa u nas od ponad siedmiu lat.
Chciałbym też w pewnym momencie agregować logi za pomocą Graylog lub ELK.
Prometheus + Grafana + AlertManager
Prometheus + Grafana + AlertManager za pomocą wspaniałego wykresu helm Prometheus Operator. Logi nadal trafiają do planu birch LogDNA, ponieważ zauważyliśmy, że ELK jest zbyt ciężki dla naszego skromnego klastra z min. 3 i maks. 5 węzłami na GKE.
DataDog + Sentry + PagerDuty.
Kiedyś uruchamiałem własne rozwiązania monitoringu, używając różnego oprogramowania, w tym Nagios, Icinga, Zabbix, ELK, Greylog2, Influx i wielu innych narzędzi, ale prawda jest taka, że prowadzenie własnej infrastruktury monitoringu wymaga zbyt dużo wysiłku, zwłaszcza gdy można zapłacić komuś innemu tak niskie stawki, by zrobił to za nas!
Płacenie innym za prowadzenie infrastruktury monitoringu pozwala moim klientom skupić się na prowadzeniu swoich platform zamiast na monitorowaniu monitoringu, co oznacza, że wartość, jaką zyskują dzięki stabilności swojej platformy, znacznie przewyższa wszelkie koszty monitoringu jako usługi.
Sensu + Graphite + ELK
Moja firma bardzo stawia na rozwiązania hostowane we własnym zakresie.
Sensu -> PagerDuty
Graphite/Grafana
ELK (Elasticsearch, Logstash, Kibana)
Prometheus + Alertmanager
Prometheus + Alertmanager do alertów; mój zespół uważa, że prosty monitoring to dobry monitoring.
Inne systemy, takie jak logowanie i śledzenie, zapewniają bogaty kontekst do diagnozy, gdy dyżurny otrzyma alert, ale nigdy nie budujemy na nich alertów.
Sensu + Grafana + Graylog + Kibana + NewRelic.
Sensu, grafana, graylog, kibana, newrelic.
Prometheus + Circonus
Usługi zinstrumentowane Prometheusem => analityka i wizualizacja Circonus
icinga2 + VictorOps + NewRelic + Sentry + Slack
Używamy poniższych usług:
icinga2 do monitoringu i VictorOps do alertów
NewRelic do szczegółowego monitoringu usługi
Sentry do śledzenia błędów w usłudze
Slack/e-mail jako część alertów wyzwalanych z NewRelic lub icinga2
AppDynamics + Papertrail + PagerDuty + Healthchecks.io + Stackdriver
AppDynamics
Papertrail
PagerDuty
Healthchecks.io
Stackdriver
icinga2 + elasticsearch
icinga2 z integracją elasticsearch do analizy i integracją graphite+grafana do wykresów.
dzięki elastyczności reguł apply w icinga2 programiści widzą tylko te usługi, o których otrzymują powiadomienia.
a dzięki icinga2 director programiści mogą łatwo definiować własne kontrole (co robią co kilka dni — 100 kontroli wychodzi, 100 innych wchodzi) na dużą skalę bez żadnego kłopotu.
DataDog + New Relic + ELK + EFK + Sentry + Alertmanager + VictorOps
Co mamy teraz:
DataDog do metryk
New Relic do monitoringu aplikacji
ELK (Elastic Search + Logstash + Kibana) do logów
Sentry (hostowany samodzielnie) do logowania wyjątków
E-maile + Slack + VictorOps do alertów (w zależności od wagi)
Co chcemy mieć:
Prometheus do metryk (Grafana do wizualizacji)
New Relic (prawdopodobnie Elastic Search APM) do monitoringu aplikacji
EFK (elastic search + fluentd + kibana) do logowania. Prawdopodobnie Loki od Grafana będzie gotowy do produkcji, zanim do tego dojdziemy
Sentry do wyjątków
Alertmanager + e-mail + VictorOps do alertów
Wavefront + Scalyr + PagerDuty + Stackstorm + Slack
Wavefront + Scalyr + PagerDuty + Stackstorm + Slack (Zastrzeżenie: pracuję w VMware)
Telegraf + Prometheus + InfluxDB + Grafana
Telegraf do metryk serwera, takich jak CPU, dysk, pamięć i sieć. Telegrafa używamy też do monitoringu SNMP naszych urządzeń sieciowych.
Prometheus do metryk aplikacji. Wbudowujemy w naszą aplikację kontrole stanu, które Prometheus zbiera.
InfluxDB do przechowywania szeregów czasowych. Tam trafiają dane z Telegrafa.
Grafana do pulpitów i alertów. Silnik alertów nie jest super solidny, ale spełnia swoje zadanie. Wysyłamy też alerty do Slacka.
Czego teraz nie mam, to scentralizowanego rozwiązania do logowania. ELK jest potężny, ale trudny do skonfigurowania i zarządzania, a nie znam żadnych bezpłatnych alternatyw, które byłyby na tyle zbliżone, by je zbadać.
Sematext + Logagent + Experience
Sematext do metryk, logów, śladów, wkrótce także do monitoringu rzeczywistych użytkowników. Prościej/taniej niż używanie N różnych narzędzi/usług, moim zdaniem.
Do przesyłania logów używaliśmy rsyslog, a potem przeszliśmy na Logagent.
Do raportowania awarii front-endu używamy Sentry, ale wkrótce przejdziemy na Experience.
Zastrzeżenie: jestem Sematextanem (pracownikiem Sematext).
Azure Monitor/Analytics + OpsGenie
Chciałbym, żeby Log Analytics miał lepszy interfejs. Odchodzimy od Splunka, po którym było dużo łatwiej się poruszać.
Prometheus + Alertmanager + Grafana + Splunk + PagerDuty
Prometheus, Alertmanager, Grafana, Splunk, PagerDuty
Naprawdę nie chcesz uruchamiać własnego systemu powiadomień. Splunk możesz zastąpić ELK, chyba że Twój zespół bezpieczeństwa preferuje Splunk.
Telegraf + Prometheus + Grafana + Alertmanager
Telegraf jako kolektor, Prometheus + Alertmanager do monitoringu i alertów, zintegrowane z kanałami Slack i pagerduty dla alertów krytycznych. Grafana do wizualizacji metryk hostów.
Prometheus + Grafana + Cloudwatch + sentry + kibana + elasticsearch
Prometheus do metryk + alertów
Grafana do pulpitów Prometheusa
Cloudwatch monitorujący instancje Prometheusa
sentry do śledzenia wyjątków
kibana + elasticsearch
graylog
prometheus Push Gateway dla zadań wsadowych/cronjobów
SOP https://github.com/rapidloop/sop do „wypychania/przekazywania“ metryk z jednej instancji Prometheusa do drugiej
klienci używają klientów Prometheusa. Po stronie klienta staramy się używać opencensus.io
PagerDuty + Monitis
PagerDuty + Monitis. Także kilka własnych Azure Functions do testowania stanu niektórych usług.
W tym roku chcemy wprowadzić Prometheus i Grafana
Prometheus + Grafana + Bosun
Prometheus do przechowywania danych szeregów czasowych. Grafana do wizualizacji. Bosun do zarządzania alertami.
Azure Monitor/Analytics/Insights/Dashboards
Firma tylko na Azure: Azure Monitor, Log Analytics, App Insights, Azure Dashboards + Pager Duty
Grafana + Monitis + OpsGenie + Slack
Grafana do monitorowania usług kontenerowych w Kubernetes przez Prometheus
Monitis do monitoringu usług end-to-end, głównie dla API internetowych i aplikacji internetowych
OpsGenie do zarządzania alertami
Slack do otrzymywania informacji o statusie naszych systemów
Checkly + AppOptics + Cloudwatch + Heroku + Pagerduty + Papertrail
Jestem od dawna inżynierem (dev)ops. Wychowałem się na Nagiosie. Chętnie poznam opinie o moim bootstrapowanym SaaS https://checklyhq.com. Zajmujemy się monitoringiem API i transakcji w witrynach z dość rozbudowanymi alertami.
Założyłem Checkly, ponieważ aktywny / syntetyczny monitoring w przestrzeni API był nieco ograniczony (i drogi). Monitoring oparty na przeglądarce / skryptach jest jeszcze bardziej zamknięty i drogi. Używamy Puppeteera i utrzymujemy ceny jak najniższe.
Nasz stos monitoringu:
Checkly (używamy własnego produktu...)
AppOptics (własne wykresy)
AWS Cloudwatch i SNS do wiadomości SMS.
wbudowane alerty Heroku.
Pagerduty
Papertrail
Instana + Logz.io + slack
Instana powiadamia nas na Slacku o problemach z infrastrukturą lub spadku wydajności, a logz.io skonfigurowaliśmy tak, by alertował na Slacku przy określonym wolumenie logów poziomu błędu z warstwy aplikacji.
SignalFX + Splunk + PagerDuty + Slack
Obecnie używamy: SignalFX, Splunk, PagerDuty i Slack. Nie jestem wielkim fanem SignalFX, choć ich zespół wsparcia jest super przyjazny i szybko reaguje. Lubię Splunk (warto, jeśli możesz za niego zapłacić), PagerDuty i Slack.
Kiedyś używałem stosu TICK, w którym większość C była tak naprawdę G, czyli Grafana, choć trochę używałem też Chronografa. Było świetnie, ale kłopotliwie w zarządzaniu. Klasyczny dylemat SaaS kontra własny hosting.
Używałem DataDog, New Relic, Graylog, ELK i BugSnag. Bardzo lubię DataDog i New Relic, Graylog jest całkiem dobry. Nie jestem wielkim fanem ELK. BugSnag jest fajny, właściwie uważam, że śledzenie błędów/wyjątków w wielu przypadkach jest całkiem dobrym zamiennikiem pełnego monitoringu logów.
ELK + Prometheus + Grafana
Tak jak inni, używamy ELK do logów, a Prometheus+Grafana do wszystkiego innego.
Utrzymanie tej konfiguracji jest łatwe, jeśli pozwolisz sobie na okazjonalną utratę danych. Na przykład jeśli nasza baza ElasticSearch wpadnie w kłopoty (co niestety zdarza się nam co 2–3 miesiące), nie bawimy się w HA, tylko zrzucamy dane i idziemy dalej. Jeśli absolutnie musisz mieć HA lub długoterminowe przechowywanie, powodzenia.
Datadog + Prometheus + Grafana
Skonfigurowałem Datadog w abonamencie miesięcznym, ponieważ gdy tu przyszedłem, nie było monitoringu ani alertów. Tylko kilka naszych witryn było monitorowanych co 5 minut pod kątem dostępności. Datadog jest bezsprzecznie najłatwiejszy w konfiguracji. Gdy skończę zajmować się wszystkimi innymi problemami, przejdę na Prometheus+Grafana. Nie jestem jeszcze w 100% zdecydowany co do zarządzania logami.
Nagios + ELK
Wspieramy ponad 100 produktów.
Lokalnie to głównie Nagios i ELK. W chmurze migrujemy z DataDog do NewRelic.
Datadog vs. Site24x7 + StatusCake + PagerDuty + SumoLogic + Slack
Kiedyś używaliśmy datadog, ale okazał się zbyt drogi jak na nasze potrzeby. Nie zrozumcie mnie źle, jest świetny, ale ma ogromny koszt. Udało nam się skonfigurować site24x7.com z rocznym abonamentem za około 2–3 miesiące kosztów DD.
Nasz stos monitoringu:
Site24x7 - APM, monitoring zewnętrznych adresów URL, monitoring przepływu poczty SMTP, wygasanie certyfikatów ssl i monitoring procesów.
StatusCake - do monitoringu i potwierdzania adresów URL - to nasza kopia zapasowa na wypadek, gdyby site24x7 coś przeoczył (nie przeoczy), ale SC jest elastyczniejszy w monitoringu zewnętrznych portów i usług na nasze potrzeby.
Oba narzędzia eskalują do PagerDuty, a potem eskalacje dostajemy na Slacku.
SumoLogic - do monitoringu logów (to świetne narzędzie, ale trochę skomplikowane jak na nasze potrzeby)
Ze Slacka możemy potwierdzić alert lub go naprawić.
Mamy też wiele automatyzacji site24x7, które łączą się z commando.io dla „BedOps”, jak to nazywamy — gdy zostanie wyzwolony alert, uruchamiamy kilka skryptów lub automatyzacji w próbie naprawienia sytuacji (w 99% przypadków automatyzacja + nasze skrypty chronią nas przed kłopotami).
Mamy wewnętrzne runbooki w naszej bazie wiedzy na wypadek, gdy automaty zawiodą lub gdy coś wykracza poza zakres i trzeba to naprawić.
Prometheus + AlertManager + Grafana + Stackdriver
Prometheus (Operator) / AlertManager / Grafana do metryk w naszych klastrach GKE i maszynach wirtualnych.
Google Stackdriver do logów (ponieważ jest wliczony i domyślnie aktywny, a obecnie wystarcza na nasze potrzeby).
Zabbix
Zabbix do wszystkiego. Nie potrzeba żadnego dodatkowego oprogramowania.