Kilka miesięcy temu zamieściłem wpis, w którym pokazałem, jak przygotować prostą konfigurację ELK (Elasticsearch + Logstash + Kibana) w oparciu o środowisko Dockera. W dzisiejszym wpisie pokażę, jak rozbudować przygotowane wcześniej środowisko o integrację z Grafaną, aby móc wizualizować na niej dane.

Konfigurujemy serwisy

Najpierw ściągniemy gotowe środowisko dla ELK, które przygotowałem wcześniej i dostępne jest tutaj. Gdy pobierzemy powyższe repozytorium na swój komputer, przejdziemy do dodania serwisu z Grafaną. W tym celu otworzymy plik docker-compose.yaml i dodamy w nim konfigurację:

version: '3'
services:
  # tutaj są wcześniej skonfigurowane serwisy
  grafana:
    image: grafana/grafana:8.3.2
    ports:
      - 3000:3000

Teraz wystarczy, że postawimy środowisko za pomocą komendy docker compose up -d i możemy przejść do konfigurowania źródła danych. A możemy to zrobić na dwa sposoby.

Konfigurowanie źródła danych przez interfejs web

Pierwszy z nich to wykorzystanie konfiguratora webowego. W tym celu wchodzimy na stronę http://localhost:3000 i logujemy się za pomocą domyślnych danych dostępowych: admin / admin. Następnie - po udanym zalogowaniu się do serwisu - klikamy na przycisk Settings oraz Data sources. Następnie w nowym widoku wybieramy opcję Add data source. Następnie w nowym oknie wyświetli się lista dostępnych integracji, z kategorii "Logging & document databases" wybieramy opcję Elasticsearch. Powinien pojawić się teraz formularz konfiguracyjny:

Formularz konfiguracji źródła danych (1/2)
Formularz konfiguracji źródła danych (1/2)
Formularz konfiguracji źródła danych (2/2)
Formularz konfiguracji źródła danych (2/2)

W formularzu musimy podać dane dostępowe do Elastica, tak jak na zdjęciu. Podajemy odpowiedną ścieżkę (http://elasticsearch:9200), zaznaczamy opcje Basic auth oraz With credentials. Wpisujemy login i hasło, które skonfigurowaliśmy wcześniej (w poprzednim wpisie) w pliku kibana.yaml (dla przypomnienia: elastic / password). Następnie w polu Index name wskazujemy index, w którym są nasze dane (w naszym przypadku apache_access) i wybieramy odpowiednią wersję Kibany (min. wersję 7.0).

Następnie klikamy przycisk Save and test. Jeżeli wszystko poszło dobrze, to pojawi się komunikat z informacją o sukcesie. Teraz klikamy na przycisk Explore, który pozwoli podejrzeć dane ze źródła:

Skonfigurowane źródło danych
Skonfigurowane źródło danych

Konfigurowanie źródła danych poprzez plik konfiguracyjny

Teraz uruchomimy komendę docker compose down. W ten sposób usunęliśmy dane, które zostały stworzone przez serwisy, w tym konfigurację naszego źródła. Teraz stworzymy ją za pomocą pliku konfiguracyjnego.

Konfiguracje źródeł danych są odczytywane m.in. z katalogu /etc/grafana/provisioning/datasources, dlatego zamontujemy w kontenerze odpowiedni plik modyfikując konfigurację docker-compose.yaml:

version: '3'
services:
  # tutaj są wcześniej skonfigurowane serwisy
  grafana:
    image: grafana/grafana:8.3.2
    volumes:
      - "./grafana-datasources/elastic.yaml:/etc/grafana/provisioning/datasources/elastic.yaml"
    ports:
      - 3000:3000

Następnie dodajemy plik na maszynie hosta w katalogu ./grafana-datasources/elastic.yaml o treści:

apiVersion: 1
datasources:
  - name: Elastic
    type: elasticsearch
    access: proxy
    database: apache_access
    url: http://elasticsearch:9200
    basicAuth: true
    withCredentials: true
    basicAuthUser: elastic
    basicAuthPassword: password
    jsonData:
      esVersion: 70
      timeField: '@timestamp'

Teraz wystarczy zbudować serwisy, zalogować się do panelu Grafany i po wejściu w źródła danych zobaczymy, że zostało dodane nasze źródło, skonfigurowane w pliku.

I to już koniec tego krótkiego poradnika. Całość możesz pobrać z wyżej wymienionego repozytorium, gdzie stworzyłem nowy branch.

Oczywiście powyższa konfiguracja nie jest przygotowana pod użycie produkcyjne, ale do szybkiego startu do zabawy jak najbardziej tak.