InfluxDB i Grafana

InfluxDB jest open-source’ową bazą danych time-series świetnie zastępującą bazę whisper w rozwiązaniach wykorzystujących protokół graphite (opis tutaj).

Aplikację Graphite zastąpmy produktem Grafana i mamy super środowisko do wizualizacji danych.

          InfluxDB grafanaInfluxDB

Oczywiście w  https://registry.hub.docker.com mamy oficjalny obraz Grafana oraz ‚prawie’ oficjalny obraz influxDB. Mamy też obrazy zawierające komplet komponentów wraz z  carbon’em.

Łatwo i szybko możemy zbudować sobie środowisko do monitorowania w czasie rzeczywistym przebiegu testów wydajnościowych czy to z jmeter’em czy to z Gatling’iem.

Konfiguracja dla Gatling.

Konfiguracja dla jmeter.

InfluxDB i Grafana

Wizualizacja danych ‚czasowych’

Trochę dziwny tytuł, ale myślę, że dobrze oddaje sens tego co chcę dzisiaj przedstawić.

Chciałbym w kilku kolejnych wpisach przybliżyć narzędzia, które pomogą zwizualizować dane, które najprościej mówiąc, na osi X mają czas, a dokładniej timestamp.

ELK, robi mniej więcej to samo, ale w opisanym wcześniej przypadku konfiguracja opiera się ściśle na pliku csv z raportem. Niekoniecznie wizualizacja danych w czasie rzeczywistym wymaga pracy z plikiem. Continue reading „Wizualizacja danych ‚czasowych’”

Wizualizacja danych ‚czasowych’

ELK: Konfiguracja elasticsearch – update

Jeśli wykonywany test wydajnościowy przebiega bez problemów, poprzednio zaproponowana konfiguracja elasticsearch (mapowanie) działa świetnie. Niestety, gdy coś idzie źle i oprócz kodów odpowiedzi, jakich moglibyśmy się spodziewać (2xx,3xx,5xx, ogólnie: jakiś integer), pojawiają się wyjątki jmeter’a, to analiza pod kątem kodów odpowiedzi jest niepoprawna.

Continue reading „ELK: Konfiguracja elasticsearch – update”

ELK: Konfiguracja elasticsearch – update

ELK: Kibana

Jeśli wszystko poprawnie skonfigurowaliśmy, to przy pomocy Kibana ‚y będziemy mogli wizualizować zbierane dane. Konfiguracja Kibana ‚y jest default’owa zgodnie ze wspominanym wcześniej tutorialem, a sama obsługa jest intuicyjna.

kibanaNa razie załaduję istniejący plik logu. Trzeba pamiętać żeby wybrać odpowiedni przedział czasowy dla analizy – taki gdzie będą jakieś dane

kibana

Continue reading „ELK: Kibana”

ELK: Kibana

ELK: Konfiguracja elasticsearch

Dochodzimy do sedna tej ciut specyficznej konfiguracji ELK. Mapowanie.

Żeby zbierane dane były zdatne do jakiejkolwiek analizy innej niż ilościowa, należy zmapować nazwy kolumn na określone typy danych. Jeśli tego nie zrobimy, zobaczymy te dane, ale jako zbiór string’ów.

Konfiguracja elasticsearch nie jest trywialna. Poniżej moja wstępna propozycja Continue reading „ELK: Konfiguracja elasticsearch”

ELK: Konfiguracja elasticsearch

ELK: Konfiguracja Logstash

Konfiguracja logstash polega w skrócie na podaniu: skąd będą brane dane (input), jak mają zostać przetworzone (filter) i gdzie mają zostać wysłane (output).

Konfiguracja Logstash

Bazując na poprzednim wpisie dot. konfiguracji loga jmeter’a, plik konfiguracyjny logstash’a powinien wyglądać np. tak:

input {
 file {
 path => [ "/tmp/results.csv"]
 start_position => "beginning"
 }
}
filter {
 csv {
 columns => ["timeStamp","elapsed","label","responseCode","threadName","dataType","success","bytes","grpThreads","allThreads","Latency","SampleCount","ErrorCount","Hostname","Connect"]
 separator => ","
 
 }
 }

output {
 elasticsearch {
 action => "index"
 host => "localhost"
 index => "logstash-jmeter-results-%{+YYYY.MM.dd}"
 workers => 1
 }
}

Najważniejsze rzeczy:

path => wskazuje ścieżkę do logu jmeter’a

columns => nazwy kolumn z pliku logu jmeter’a

index => format nazwy index’u w elasticsearch

Jeśli logi są na innej maszynie niż logstash, możemy użyć narzędzia logstash-forwarder. Ale to nie mój przypadek, więc nie będę się zagłębiał 🙂

ELK: Konfiguracja Logstash

ELK: Konfiguracja jmeter

Będę ładował do elasticsearch’a dane z pliku logu wykonania jmeter ‚a. Nie może być to obojętnie jaki plik.

Żeby logstash mógł sparsować odpowiednio dane, trzeba go również odpowiednio skonfigurować. Konfiguracje elasticsearch’a i logstash’a pojawią się w osobnych wpisach, ale są ściśle powiązane z poniższą konfiguracją loga jmeter ‚a.

jmeter

Log jmeter ‚a musi być zapisany jako plik csv. Żeby ułatwić sobie konfigurację logstash’a zaznaczyłem ‚Save Field Names (CSV)’.

Na obrazku widoczne są wybrane przeze mnie metryki, które będę chciał zwizualizować z wykorzystaniem ELK. Jeśli Wasz wybór będzie inny – musicie uwzględnić zmianę w konfiguracji logstash’a.

ELK: Konfiguracja jmeter