Samouczek jest przeznaczony dla dystrybucji serwerów rodziny Red Hat takich jak CentOS 7.x, Red Hat 7.x, Fedora29 lub nowsze (obecna wersja to 32) itp.
Dla dystrybucji serwerów rodziny Debian (takich jak Debian, Ubuntu itp.) polecam przeczytać ten artykuł: Jak skonfigurować Telegraf, InfluxDB i Grafana w Linux, jednak nie zawiera on ustawień własnej domeny i konfiguracji fail2ban.
Zdecydowałem się skopiować niektóre części z poradników. Referencje znajdują się na końcu tego samouczka:
„Spośród wszystkich istniejących nowoczesnych narzędzi do monitorowania, stos TIG (Telegraf, InfluxDB i Grafana) jest prawdopodobnie jednym z najpopularniejszych.
Ten stos może być używany do monitorowania szerokiej gamy różnych źródeł danych: od systemów operacyjnych (takich jak metryki wydajności Linuxa lub Windowsa), po bazy danych (takie jak MongoDB czy MySQL), możliwości są nieograniczone.
Zasada stosu TIG jest łatwa do zrozumienia.
Telegraf to agent odpowiedzialny za zbieranie i agregowanie danych, na przykład aktualnego użycia procesora.
InfluxDB będzie przechowywać dane i udostępniać je Grafanie, która jest nowoczesnym rozwiązaniem do tworzenia pulpitów nawigacyjnych.
W tym samouczku nauczysz się, jak skonfigurować Telegraf, InfluxDB i Grafanę. Dowiesz się także, jak zabezpieczyć nasze instancje za pomocą HTTPS poprzez bezpieczne certyfikaty.”
Ten samouczek będzie obejmował kroki dla Influx 1.8.x, ale podlinkuję również do konfiguracji InfluxDB 2.x, jak tylko zostanie napisana.
Przed rozpoczęciem upewnij się, że masz uprawnienia sudo w systemie, w przeciwnym razie nie będziesz mógł zainstalować żadnych pakietów.
Wszystkie działania instalacyjne będą przeprowadzane jako root. Więc musisz wpisać w terminalu:
|
|
I – Instalacja InfluxDB
a – Instalacja InfluxDB jako usługi
Pobierz oprogramowanie
|
|
i zainstaluj
|
|
b – Weryfikacja instalacji InfluxDB
Obecnie InfluxDB powinno działać jako usługa na Twoim serwerze.
Aby to zweryfikować, uruchom następujące polecenie:
|
|
InfluxDB powinno automatycznie się uruchamiać, ale jeśli tak nie jest, upewnij się, że je uruchomisz.
|
|
Jednak nawet jeśli Twoja usługa działa, nie gwarantuje to, że działa poprawnie.
Aby to zweryfikować, sprawdź swoje dzienniki systemowe.
|
|
Ctrl+c pozwoli wyjść z trybu logowania.
Jeśli w tej sekcji pojawiają się komunikaty o błędach, zapoznaj się z sekcją rozwiązywania problemów na końcu.
Aby upewnić się, że usługa InfluxDB uruchomi się razem z serwerem, włącz ją.
|
|
Port TCP 8086 jest używany do komunikacji klient-serwer za pośrednictwem API HTTP InfluxDB
Port TCP 8088 jest używany do usługi RPC do tworzenia kopii zapasowych i przywracania
Możesz zobaczyć aktualną konfigurację za pomocą:
|
|
Plik konfiguracyjny można znaleźć w: /etc/influxdb/influxdb.conf
Utwórzmy bazę danych i zabezpieczmy ją. Utwórz użytkownika admina z pełnymi uprawnieniami oraz użytkownika używanego przez Telegraf.
|
|
Oczywiście musisz zmienić secret na swoje hasło. Polecam użyć przynajmniej 20-znakowego hasła zawierającego wielkie litery, małe litery, cyfry i symbole specjalne. Dla bezpieczeństwa, ponieważ Grafana nie ma uwierzytelnienia dwuskładnikowego (2FA).
Polecam ustawić politykę retencji.
|
|
Wyjaśnienie znajdziesz w Referencjach i tutaj: Polityka retencji InfluxDB
Warto wspomnieć, że 24 godziny są ustawione jako domyślne. Wynika to z tego, że mój serwer nie ma zbyt dużo miejsca i potrzebuję tylko 24-godzinnych wykresów w Grafanie.
Aby sprawdzić politykę retencji, wystarczy wpisać:
|
|
Aby usunąć politykę retencji 24 godzin, wystarczy wpisać:
|
|
Zrestartuj usługę InfluxDB.
|
|
Aby pozbyć się logowania do /var/log/messages, wystarczy edytować plik /usr/lib/systemd/system/influxdb.service i dodać poniższe wpisy w sekcji [Service]:
|
|
Po tym zrestartuj usługę influxdb.
II – Instalacja Telegraf
Telegraf to agent, który zbiera metryki związane z szeroką gamą różnych celów.
Może być również używany jako narzędzie do przetwarzania, agregacji, dzielenia lub grupowania danych.
Cała lista dostępnych celów (zwanych również wejściami) jest dostępna tutaj.
W naszym przypadku użyjemy InfluxDB jako wyjścia.
a – Instalacja Telegraf jako usługi
Aby zainstalować Telegraf 1.15.2 na Red Hat 7.x, CentOS 7.x lub Fedora 29 lub nowsze, wykonaj następujące polecenia:
Pobierz oprogramowanie
|
|
i zainstaluj
|
|
b – Weryfikacja instalacji Telegraf
Obecnie Telegraf powinien działać jako usługa na Twoim serwerze.
Aby to zweryfikować, uruchom następujące polecenie:
|
|
Telegraf powinien automatycznie się uruchamiać, ale jeśli tak nie jest, upewnij się, że go uruchomisz.
|
|
Aby to zweryfikować, sprawdź swoje dzienniki systemowe.
|
|
Aby upewnić się, że usługa Telegraf uruchomi się razem z serwerem, włącz ją.
|
|
III – Konfiguracja uwierzytelniania InfluxDB
a – Włącz uwierzytelnianie HTTP na serwerze InfluxDB
Uwierzytelnianie HTTP musi być włączone w pliku konfiguracyjnym InfluxDB.
Przejdź do /etc/influxdb/influxdb.conf i edytuj następujące linie.
|
|
b – Konfiguracja uwierzytelniania HTTP w Telegraf
Teraz, gdy utworzono konto użytkownika dla Telegraf, upewnimy się, że używa go do zapisywania danych.
Przejdź do pliku konfiguracyjnego Telegraf, znajdującego się w /etc/telegraf/telegraf.conf.
Zmodyfikuj następujące linie:
|
|
Zrestartuj usługę Telegraf oraz usługę InfluxDB.
|
|
Ponownie sprawdź, czy nie pojawiają się żadne błędy podczas restartowania usługi.
|
|
Świetnie, nasze żądania są teraz uwierzytelniane.
Czas je zaszyfrować.
IV – Konfiguracja HTTPS w InfluxDB
Konfiguracja bezpiecznych protokołów pomiędzy Telegrafem a InfluxDB jest bardzo ważnym krokiem.
Na pewno nie chcesz, aby ktokolwiek mógł podsłuchiwać dane wysyłane do Twojego serwera InfluxDB.
Jeśli Twoje instancje Telegraf działają zdalnie (na Raspberry Pi lub innym serwerze), zabezpieczenie transferu danych jest obowiązkowym krokiem, ponieważ istnieje duże prawdopodobieństwo, że ktoś będzie w stanie odczytać wysyłane dane.
a – Utwórz klucz prywatny dla swojego serwera InfluxDB
Najpierw zainstaluj pakiet gnutls-utils, który na dystrybucjach Debian może być dostępny jako gnutls-bin.
|
|
Teraz, gdy masz zainstalowany certtool, wygeneruj klucz prywatny dla swojego serwera InfluxDB.
Przejdź do folderu /etc/ssl Twojej dystrybucji Linux i utwórz nowy folder dla InfluxDB.
|
|
b – Utwórz klucz publiczny dla swojego serwera InfluxDB
|
|
Świetnie! Masz teraz** parę kluczy** dla swojego serwera InfluxDB.
Inną opcją jest wygenerowanie ich w ten sposób:
|
|
Podczas wykonywania polecenia zostaniesz poproszony o więcej informacji. Możesz wybrać wypełnienie tych informacji lub pozostawienie ich pustych; obie akcje generują ważne pliki certyfikatów.
Nie zapomnij ustawić uprawnień dla użytkownika i grupy InfluxDB.
|
|
lub
|
|
Uruchom następujące polecenie, aby nadać InfluxDB uprawnienia do odczytu i zapisu na plikach certyfikatów.
|
|
lub
|
|
c – Włącz HTTPS na serwerze InfluxDB
Teraz, gdy Twoje certyfikaty zostały utworzone, nadszedł czas, aby dostosować plik konfiguracyjny InfluxDB i włączyć HTTPS.
Przejdź do /etc/influxdb/influxdb.conf i zmodyfikuj następujące linie.
|
|
Zrestartuj usługę InfluxDB i upewnij się, że nie pojawiają się żadne błędy.
|
|
d – Konfiguracja Telegraf dla HTTPS
Teraz, gdy HTTPS jest dostępny na serwerze InfluxDB, nadszedł czas, aby Telegraf łączył się z InfluxDB za pośrednictwem HTTPS.
Przejdź do /etc/telegraf/telegraf.conf i zmodyfikuj następujące linie.
|
|
Dlaczego włączamy parametr insecure_skip_verify?
Ponieważ używamy certyfikatu samopodpisanego.
W rezultacie, tożsamość serwera InfluxDB nie jest certyfikowana przez żadną autoryzację certyfikacyjną.
Zrestartuj Telegraf i ponownie upewnij się, że nie pojawiają się żadne błędy.
|
|
IV – Eksploracja metryk w InfluxDB
Zanim zainstalujemy Grafanę i utworzymy naszą pierwszą pulpit nawigacyjny Telegraf, spójrzmy szybko na to, jak Telegraf agreguje nasze metryki.
Domyślnie, dla systemów Linux, Telegraf rozpocznie zbieranie danych związanych z wydajnością systemu za pomocą wtyczek o nazwach cpu, disk, diskio, kernel, mem, processes, swap i system.
Nazwy są dość oczywiste, te wtyczki zbierają pewne metryki dotyczące użycia procesora, użycia pamięci oraz aktualnych operacji odczytu i zapisu dysku IO.
Spójrzmy szybko na jedną z pomiarów.
Aby to zrobić, użyj interfejsu wiersza poleceń InfluxDB z następującymi parametrami.
Dane są przechowywane w bazie danych “telegraf”, a każdy pomiar jest nazwany tak jak nazwa wtyczki wejściowej.
|
|
Dane są poprawnie agregowane na serwerze InfluxDB.
Nadszedł czas, aby skonfigurować Grafanę i zbudować nasz pierwszy pulpit nawigacyjny systemu.
V – Instalacja Grafany
a – Instalacja Grafany jako usługi
Aby zainstalować Grafanę 7.1.5 na Red Hat 7.x, CentOS 7.x lub Fedora 29 lub nowsze, wykonaj następujące polecenia:
Pobierz oprogramowanie
|
|
i zainstaluj
|
|
b – Weryfikacja instalacji Grafany
Obecnie Grafana powinna działać jako usługa na Twoim serwerze.
Aby to zweryfikować, uruchom następujące polecenie:
|
|
Grafana powinna automatycznie się uruchamiać, ale jeśli tak nie jest, upewnij się, że ją uruchomisz.
|
|
Przejdź do /etc/grafana/grafana.ini i zmodyfikuj następujące linie.
I will now translate the provided Markdown content into Polish, ensuring to strictly follow your guidelines:
|
|
Jednak nawet jeśli twoja usługa działa, nie gwarantuje to, że poprawnie wysyła dane do InfluxDB.
Aby to sprawdzić, sprawdź swoje logi systemowe.
|
|
Aby upewnić się, że usługa Grafana będzie startować razem z serwerem, włącz ją.
|
|
c - Konfiguracja serwera internetowego Nginx
W pliku konfiguracyjnym Nginx dodaj nowy blok server
:
|
|
Przeładuj konfigurację Nginx.
Aby skonfigurować NGINX do obsługi Grafana pod podścieżką, zaktualizuj blok location
:
|
|
d - Konfiguracja serwera internetowego Apache
W pliku konfiguracyjnym Apache dodaj nowy blok server
:
|
|
Jeśli używasz proxy php-fpm, dodatkowo powinieneś dodać to w hostingu wirtualnym:
|
|
Jeśli będziesz miał jakiekolwiek problemy z konfiguracją hostingu wirtualnego, skontaktuj się ze mną. Pomogę. Używam grafana z SSL od Let’s Encrypt.
e – Dodawanie InfluxDB jako źródła danych w Grafana
W lewym menu kliknij na sekcję Konfiguracja > Źródła danych.
W następnym oknie kliknij na “Dodaj źródło danych“.
W panelu wyboru źródła danych wybierz InfluxDB jako źródło danych.
Oto konfiguracja, którą musisz dopasować, aby skonfigurować InfluxDB w Grafana.
Kliknij na “Zapisz i Testuj”, i upewnij się, że nie otrzymujesz żadnych błędów.
Otrzymujesz błąd 502 Bad Gateway? Upewnij się, że pole URL jest ustawione na HTTPS, a nie HTTP.
Jeśli wszystko jest w porządku, nadszedł czas na stworzenie naszego dashboardu Telegraf.
f – Importowanie dashboardu Grafana
Nie będziemy tworzyć dashboardu Grafana dla Telegraf, zamiast tego skorzystamy z gotowego, który został już opracowany przez społeczność.
Jeśli w przyszłości będziesz chciał stworzyć własny dashboard, śmiało to zrób.
Aby zaimportować dashboard Grafana, wybierz opcję Importuj w lewym menu, pod ikoną Plus.
Na następnym ekranie zaimportuj dashboard z ID 5955.
To dashboard stworzony przez jmutai, który wyświetla metryki systemowe zbierane przez Telegraf.
Stamtąd, Grafana powinna automatycznie spróbować zaimportować ten dashboard.
Dodaj wcześniej skonfigurowane InfluxDB jako źródło danych dashboardu i kliknij na “Importuj“.
Świetnie!
Mamy teraz nasz pierwszy dashboard Grafana wyświetlający metryki Telegraf.
To co teraz powinieneś zobaczyć na swoim ekranie.
g – Modyfikowanie zapytań InfluxQL w eksploratorze zapytań Grafana
Czasami podczas projektowania dashboardu, twórca określa nazwę hosta jako “example”, która oczywiście różni się od jednego hosta do drugiego (mój na przykład nazywa się “mail.sysadmin.info.pl”)
Aby to zmodyfikować, przejdź do eksploratora zapytań najedź na tytuł panelu i kliknij na “Edytuj”.
W panelu “zapytania” zmień hosta, a panel powinien zacząć wyświetlać dane.
Wróć do dashboardu, i to co powinieneś teraz zobaczyć, to:
VI – Podsumowanie
W tym poradniku nauczyłeś się, jak skonfigurować kompletny stos Telegraf, InfluxDB i Grafana na swoim serwerze.
Co powinieneś zrobić dalej?
Pierwszą rzeczą będzie podłączenie Telegraf do różnych wejść, poszukiwanie istniejących dashboardów w Grafana lub projektowanie własnych.
Rozwiązywanie problemów
- Błąd podczas zapisywania do wyjścia [influxdb]: nie można było zapisać na żaden adres
Możliwe rozwiązanie: upewnij się, że InfluxDB poprawnie działa na porcie 8086.
|
|
Jeśli używasz innego portu, zmień konfigurację Telegraf, aby przekierowywać metryki na niestandardowy port przypisany do twojego serwera InfluxDB.
- [outputs.influxdb] podczas zapisywania do [http://localhost:8086]: 401 Unauthorized: autoryzacja nie powiodła się
Możliwe rozwiązanie: upewnij się, że poświadczenia są poprawnie ustawione w konfiguracji Telegraf. Upewnij się także, że utworzyłeś konto dla Telegraf na swoim serwerze InfluxDB.
- http: serwer odpowiedział odpowiedzią HTTP na klienta HTTPS
Możliwe rozwiązanie: upewnij się, że włączyłeś parametr https-authentication w pliku konfiguracyjnym InfluxDB. Domyślnie jest ustawiony na false.
- x509: nie można zweryfikować certyfikatu dla 127.0.0.1, ponieważ nie zawiera żadnych IP SANs
Możliwe rozwiązanie: weryfikacja TLS jest ustawiona, musisz włączyć parametr insecure_skip_verify, ponieważ tożsamość serwera nie może być zweryfikowana dla certyfikatów samopodpisanych.
- klient odrzucony przez konfigurację serwera: proxy:http://localhost:3000/api/datasources/proxy/3/query
Możliwe rozwiązania:
Jeśli używasz OWASP, polecam przeczytać ten artykuł: https://sysadmin.info.pl/en/blog/mod_security-rules-for-wordpress/ . Błędy będą widoczne w /var/log/httpd/error_log i /var/log/httpd/modsec_audit. Ewentualnie możesz ustawić w pliku konfiguracyjnym hosta wirtualnego wartość: SecRuleEngine Off zamiast On, aby wyłączyć mod_security dla hosta wirtualnego grafana.
Musisz także zmodyfikować plik konfiguracyjny mod_evasive znajdujący się w katalogu /etc/httpd/conf.d i ustawić poniższe wartości, aby grafana działała poprawnie z włączonym mod_evasive.
|
|
Konfiguracja Fail2ban do ochrony grafana przed atakami.
Wejdź do katalogu zawierającego filtry dla fail2ban, znajdującego się w /etc/fail2ban/filter.d
Utwórz nowy filtr o nazwie grafana.conf. Wpisz w terminalu:
|
|
Następnie naciśnij przycisk insert (ins), aby wkleić poniższą treść:
|
|
Naciśnij przycisk Esc, a następnie wpisz :x bez spacji i naciśnij Enter, aby zapisać i wyjść.
Wejdź do katalogu zawierającego jail dla fail2ban, znajdującego się w /etc/fail2ban/jail.d
Utwórz nowy jail o nazwie grafana.local. Wpisz w terminalu:
|
|
Następnie naciśnij przycisk insert (ins), aby wkleić poniższą treść:
|
|
Naciśnij przycisk Esc, a następnie wpisz :x bez spacji i naciśnij Enter, aby zapisać i wyjść.
Zrestartuj fail2ban, wpisując w terminalu:
|
|
Sprawdź swój filtr fail2ban, wpisując w terminalu:
|
|
Referencje
- https://devconnected.com/how-to-setup-telegraf-influxdb-and-grafana-on-linux/
- https://www.petersplanet.nl/index.php/2018/11/18/basic-installation-of-grafana-influxdb-and-telegraf-on-centos-7/
- https://docs.influxdata.com/influxdb/v1.8/guides/downsample_and_retain/
- https://portal.influxdata.com/downloads/