Skip to content

kmaciag92/ra-stats

Repository files navigation

RA-Stats

Narzędzie do pobierania, przechowywania i prezentacji metryki słuchalności audycji w Radiu Aktywnym. Narzędzie jest przystosowane do działania jako kontener dockerowy. Składa się z trzech elementów:

  • Bazy danych influxDB, która służy do przechowywania wszystkich statystyk związanych ze słuchalnością przesyłanej przez pozostałe komponenty. Baza danych jest podzielona na dwa buckety:
    • ra-stats - bucket, do którego są przesyłane szczegółowe metryki dotyczące słuchalności z rozdzielczością wybieraną przez użytkownika (domyślnie ustawione na co 10 sekund). Na podstawie danych z tego bucketu sporządzane są raporty słuchalności i formowane dane do bucketu ra-stats-per-show. W buckecie ustawiona jest retencja na 90 dni, co oznacza, że po 90 dniach zebrane dane są usuwane
    • ra-stats-per-show - bucket do którego przesyłane są metryki dotyczące słuchalności poszczególnych wydań audycji. Można z niego odczytać dane na temat minimalnej, średniej i maksymalnej słuchalności, które są tam przesyłane w momencie tworzenia raportu o słuchalności danego wydania audycji
  • Skryptu gathering-script.sh - skrypt będący silnikiem przesyłającym dane do bazy danych. Co 10 sekund sprawdza aktualną liczbę słuchaczy radia, sprawdza w ramówce, która audycja powinna teraz się odbywać, następnie sprawdza na podstawie taga przesyłanego razem z danymi dźwiękowymi (tzw. RDSa) czy audycja faktycznie się odbywa i zapisuje aktualną metrykę słuchalności w bazie danych, w buckecie ra-stats oznaczając ją odpowiednim tagiem.
  • Skryptu report-generation.sh - skrypt odpowiedzialny za generowanie raportów słuchalności, w których możemy znaleźć informacje o minimalnej, średniej i maksymalnej słuchalności danego wydania audycji, wykres słuchalności w zależności od czasu i tabelkę ze szczegółową słuchalnością. Pierwsze trzy informacje są także przesyłane w formie metryk do bucketu ra-stats-per-show, a raport jest przesyłany do odpowiedniego katalogu w NextCloudzie.

Dane o ramówce są pobierane z wewnętrznego API ramówkowego działającego pod adresem cloud.radioaktywne.pl/api/timeslots

W repozytorium można znaleźć także aktualny dump bazy danych.

Instrukcja poprawnego uruchomienia

  1. Pobierz aktualny kod aplikacji z jednego z dwóch repozytoriów:

a. https://github.com/kmaciag92/ra-stats

b. https://github.com/RadioAktywne/ra-stats

  1. Zainstaluj i uruchom aplikację docker, tak aby można było za jej pośrednictwem zbudować i uruchomić kontener
  2. Sprawdź czy w katalogu influxdb-engine, znajduje się aktualny dump bazy danych. Jeśli nie, stwórz w katalogu głównym roota katalog o takiej nazwie i skopiuj tam zawartość katalogu influxdb-engine z repozytorium. Katalog będzie potem domontowany do kontenera jako katalog /var/lib/influxdb2.
  3. Stwórz w katalogu głównym roota katalog stats-results tam będą tymczasowo przechowywane wygenerowane raporty. Katalog potem będzie domontowany do kontenera jako katalog /stats-results
  4. Sprawdź czy w Dockerfile są odpowiednio wypełnione zmienne RASSWORD i INFLUX_TOKEN. Jeśli jest tam wpisany komentarz #FILL to musisz dostać plik z tymi zmiennymi. Jeśli nie został na serwerze po poprzedniej instalacji zapytaj autora tego featura o te zmienne, bo mogą one gwarantować dostęp do poprzednich danych.
  5. Będąc w katalogu repozytorium, zbuduj kontener za pomocą polecenia,

docker build -t stats:0.2 .

nazwa obrazu i wersja są przykładowe, można użyć dowolnych.

  1. Jeśli uruchamiałeś wcześniej kontener o nazwie ra-stats to usuń go poleceniem

docker rm -f ra-stats

bądź w następnym punkcie uruchom go z inną nazwą 8. Uruchom kontener za pomocą następującej komendy:

docker run -d -p 8086:8086 --name ra-stats --dns 8.8.8.8 \
    -v /influxdb-engine:/var/lib/influxdb2  \
    -v /stats-results:/stats-results  \
    -v /srv/ra/audycje:/nextcloud \
    stats:0.2

Wykonanie powyższego polecenia udostępniasz port 8086 na którym działa baza influxDB, co nam umożliwia skorzystanie z jej API, a także zmienia adres dns używany przez kontener na 8.8.8.8, żeby uniknąć kłopotów z łącznością.

Aby działały dodatkowe funkcje, takie jak generowanie rankingów w formie plików PDF i „A24H mode”, należy także zamontować odpowiednie katalogi dostępne z zewnątrz kontenera, w których będzie można odczytywać bądź zapisywać pliki potrzebne do obsługi tych funkcji

    -v <folder dostępny w nextcloudzie z którego będzie można pobrać pliki z aktualnymi rankingami>:/rankingi \
    -v <folder dostępny w nextcloudzie z którego będzie można pobrać pliki z raportami słuchalności customowych audycji>:/custom_reports

Więc pełne polecenie brzmi:

docker run -d -p 8086:8086 --name ra-stats --dns 8.8.8.8 \
    -v /influxdb-engine:/var/lib/influxdb2  \
    -v /stats-results:/stats-results  \
    -v /srv/ra/audycje:/nextcloud \
    -v <folder dostępny w nextcloudzie z którego będzie można pobrać pliki z aktualnymi rankingami>:/rankingi \
    /v <folder dostępny w nextcloudzie z którego będzie można pobrać pliki z raportami słuchalności customowych audycji>:/custom_reports \
    stats:0.2
  1. Aby sprawdzić czy wszystko dobrze działa wyświetl logi z kontenera za pomocą polecenia

docker logs ra-stats --tail 50 -f

i na ich podstawie sprawdź czy logi są przesyłane do bazy danych, logi powinny wyglądać następująco:

Sat Nov 12 00:44:40 CET 2022 RA_TAG=Radiohead - Daydreaming
Sat Nov 12 00:44:40 CET 2022 RA_SHOW_ID=playlista
Sat Nov 12 00:44:40 CET 2022 RA_SHOW_LIVE=false
Sat Nov 12 00:44:40 CET 2022 START_SHOW_TIME_UTC=2022-11-11T22:34:01Z
Sat Nov 12 00:44:40 CET 2022 END_SHOW_TIME_UTC=
listeners,show=playlista,live=false listeners=2 Sat Nov 12 00:44:40 CET 2022
Sat Nov 12 00:44:50 CET 2022 RA_TAG=Radiohead - Daydreaming
Sat Nov 12 00:44:50 CET 2022 RA_SHOW_ID=playlista
Sat Nov 12 00:44:50 CET 2022 RA_SHOW_LIVE=false
Sat Nov 12 00:44:50 CET 2022 START_SHOW_TIME_UTC=2022-11-11T22:34:01Z
Sat Nov 12 00:44:50 CET 2022 END_SHOW_TIME_UTC=
listeners,show=playlista,live=false listeners=2 Sat Nov 12 00:44:50 CET 2022

a także wejdź na adres localhost:8086 zaloguj się loginem ra-stats i odpowiednim hasłem i sprawdź na dashboardzie Słuchalność czy aktualne dane są przesyłane do bazy danych.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published