Monitorowanie wydajności bazy danych MySQL w czasie rzeczywistym pomaga natychmiast identyfikować problemy i inne czynniki, które mogą powodować problemy teraz lub w przyszłości. Jest to również dobry sposób na określenie, które komponenty bazy danych można ulepszyć lub zoptymalizować w celu zwiększenia wydajności i wydajności. Odbywa się to zwykle za pomocą oprogramowania i narzędzi monitorujących wbudowanych w oprogramowanie do zarządzania bazą danych lub instalowanych przez dostawców zewnętrznych.
Prometheus to aplikacja typu open source służąca do monitorowania zdarzeń i ostrzegania. Może być używany wraz z narzędziem do wizualizacji, takim jak Grafana, do łatwego tworzenia i edytowania pulpitów nawigacyjnych, zapytań, wizualizacji, alertów i zrozumienia metryk. ScaleGrid zapewnia pełny dostęp administracyjny do wdrożeń MySQL — ułatwia to integrację istniejącego ekosystemu narzędzi MySQL z wdrożeniami ScaleGrid MySQL na AWS lub Azure. Prometheus dobrze sprawdza się w rejestrowaniu dowolnych czysto numerycznych szeregów czasowych, a także oferuje wsparcie dla wielowymiarowego gromadzenia danych i zapytań. Grafana można z nim używać do tworzenia pulpitów nawigacyjnych, które pomagają wizualizować te dane w sposób łatwy do interpretacji i wykorzystania. Narzędzia te zapewnią dodatkowy wgląd w Twoje metryki, wzorce użytkowania i zbiory danych wraz z monitorowaniem ScaleGrid MySQL, analizą zapytań i alertami. W tym poście na blogu omawiamy, jak skonfigurować i używać Prometheus i Grafana z wdrożeniami ScaleGrid MySQL w celu zaawansowanego monitorowania bazy danych i alertów.
Jak skonfigurować monitorowanie MySQL
Przejdźmy przez etapy instalacji i konfiguracji serwera Prometheus do przechowywania i wyświetlania metryk, eksportera (w tym przypadku MySQL Exporter) do zbierania metryk i przekazywania ich do serwer Prometheus i Grafana do tworzenia dashboardów. Narzędzie MySQL Exporter można zainstalować lokalnie na serwerze MySQL lub centralnie na serwerze Prometheus. W poniższym przypadku użycia wyjaśnimy, jak skonfigurować i zacząć używać Prometheus, MySQL Exporter i Grafana z centralnego hosta działającego na Ubuntu do monitorowania wielu serwerów MySQL. Możesz też zapoznać się ze szczegółowymi instrukcjami w naszym dokumencie pomocy Prometheus i Grafana for MySQL.
Poniższy schemat blokowy przedstawia konfigurację wdrożenia MySQL typu master-slave-quorum, które obejmuje dwa węzły przenoszące dane (główny i podrzędny) oraz jednego członka głosującego (kworum) przy użyciu Eksporter MySQL, host Prometheus i Grafana:
Instalacja i konfiguracja serwera Prometheus
Prometheus to narzędzie, którego będziemy używać do centralizacji i przechowywania danych MySQL. W regularnych odstępach czasu pobiera dane od jednego lub kilku eksporterów i wyświetla je w swoim interfejsie użytkownika. Poniżej znajdują się kroki instalacji i konfiguracji Prometheusa na centralnym hoście Ubuntu. Więcej informacji można znaleźć w tym artykule.
1. Utwórz grupę i użytkownika systemu Prometheus
$sudo groupadd --system prometheus$sudo useradd -s /sbin/nologin --system -g prometheus prometheus
2. Utwórz katalog danych dla Prometheusa
$sudo mkdir /var/lib/prometheus
3. Utwórz katalogi konfiguracyjne dla Prometheusa
$for i w rules.d files_sd; wykonaj sudo mkdir -p /etc/prometheus/${i}; gotowe
4. Pobierz archiwum Prometheusa i rozpakuj plik
Aby pobrać najnowsze archiwum binarne dla Prometheusa:
$mkdir -p /tmp/prometheus &&cd /tmp/prometheus$curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \| grep browser_download_url \| grep linux-amd64 \| cut -d ''"' -f 4 \| wget -qi -
Aby wyodrębnić plik:
$tar xvf prometheus*.tar.gz$cd prometheus*/
5. Przenieś pliki Prometheusa do standardowych lokalizacji
Przenieś pliki binarne Prometheusa do /usr/local/bin:
$sudo mv prometheus promtool /usr/local/bin/
Przenieś szablon konfiguracji Prometheus do katalogu /etc:
$sudo mv prometheus.yml /etc/prometheus/prometheus.yml
Przenieś również konsole i console_libraries do katalogu /etc/prometheus:
$sudo mv consoles/ console_libraries/ /etc/prometheus/
6. Utwórz/edytuj plik konfiguracyjny Prometheusa
Konfiguracje szablonów powinny wyglądać podobnie jak poniżej:
$cat /etc/prometheus/prometheus.yml #moja globalna konfiguracja globalna:scrape_interval:15s # Ustaw interwał scrape co 15 sekund. Domyślnie co 1 minutę. assessment_interval:15s # Oceniaj reguły co 15 sekund. Wartość domyślna to co 1 minuta. #scrape_timeout jest ustawiony na globalną wartość domyślną (10s). #Alertmanager konfiguracji alertów:alertmanagers:- static_configs:- cele:#- alertmanager:9093 #Załaduj reguły raz i okresowo oceniaj je zgodnie z globalnym „interwałem oceny”. rule_files:#- "first_rules.yml" #- "second_rules.yml" #Konfiguracja scrape zawierająca dokładnie jeden punkt końcowy do scrapowania:#Tu jest sam Prometeusz. scrape_configs:#Nazwa zadania jest dodawana jako etykieta `job=` do wszystkich serii czasowych zeskrobanych z tej konfiguracji. - nazwa_pracy:'prometeusz' #ścieżka_metryki domyślnie '/metryki' #scheme domyślnie 'http'. static_configs:- cele:['localhost:9090']
7. Utwórz plik jednostki usług systemowych Prometheus
$sudo vim /etc/systemd/system/prometheus.service
Dodaj następującą treść:
[Jednostka] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple Environment="GOMAXPROCS=1" User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb. path=/var/lib/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --web.listen-address=0.0.0.0 :9090 \ --web.external-url=SyslogIdentifier=prometheus Restart=always [Zainstaluj] WantedBy=multi-user.target
Pamiętaj o edycji wiersza:Environment=”GOMAXPROCS=1 zastępując 1 liczbą vcpus na serwerze.
8. Zmień uprawnienia katalogu
Zmień własność tych katalogów na użytkownika i grupę Prometheus:
$for i w rules.d files_sd; wykonaj sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done $for i w rules.d files_sd; wykonaj sudo chmod -R 775 /etc/prometheus/${i}; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/
9. Załaduj ponownie demona systemowego i uruchom usługę
$sudo systemctl daemon-reload$sudo systemctl uruchom prometheus$sudo systemctl włącz prometheus
Sprawdź status za pomocą systemctl status prometheus polecenie:
10. Skonfiguruj zaporę sieciową, aby otworzyć port 9090
$sudo firewall-cmd --add-port=9090/tcp --permanent$sudo firewall-cmd --reload
Po zakończeniu konfiguracji możesz uzyskać dostęp do interfejsu użytkownika Prometheus, logując się na http://
Jak monitorować wdrożenia #MySQL za pomocą Prometheus i Grafana w ScaleGridKliknij, aby tweetowaćInstalacja i konfiguracja MySQL Prometheus Exporter
Prometheus wymaga eksportera do zbierania metryk serwera MySQL. Ten eksporter można uruchomić centralnie na serwerze Prometheus lub na serwerze bazy danych. Więcej informacji można znaleźć w dokumentacji Prometheusa.
Wykonaj poniższe kroki, aby zainstalować i skonfigurować MySQL Prometheus Exporter na centralnym hoście Prometheus. Aby uzyskać więcej informacji, zapoznaj się z tym artykułem.
1. Pobierz i zainstaluj Prometheus MySQL Exporter
$curl -s https://api.github.com/repos/prometheus/mysqld_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d ''"' -f 4 | wget -qi -$tar xvf mysqld_exporter*.tar.gz$sudo mv mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/$sudo chmod +x /usr/ lokalny/bin/mysqld_exporter
2. Utwórz użytkownika bazy danych Prometheus Exporter, aby uzyskać dostęp do bazy danych, usunąć dane i zapewnić dotacje
UTWÓRZ UŻYTKOWNIKA 'mysqld_exporter'@'' ZIDENTYFIKOWANY PRZEZ 'StrongPassword' Z MAX_USER_CONNECTIONS 2;PROCES UDZIELENIA, KLIENT REPLIKACYJNY, WYBIERZ *.* DO 'mysqld_exporter'@' Z MAX_USER_CONNECTIONS 2 służy do ustawienia maksymalnego limitu połączeń dla użytkownika, aby uniknąć przeciążenia serwera przez problemy z monitorowaniem przy dużym obciążeniu.
3. Skonfiguruj poświadczenia bazy danych
Edytuj plik konfiguracyjny eksportera na hoście centralnym:
$sudo vim /etc/.mysqld_exporter.cnfDodaj nazwę użytkownika i hasło utworzonego użytkownika oraz serwera ScaleGrid MySQL, który chcesz monitorować:
$sudo vim /etc/.mysqld_exporter.cnf[client]user=mysqld_exporterpassword=StrongPasswordhost=SG-mysqltestcluster-123456.servers.mongodirector.comUstaw uprawnienia własności:
$sudo chown root:prometheus /etc/.mysqld_exporter.cnf4. Utwórz plik jednostki systemd
Utwórz nowy plik usługi na centralnym hoście:
$sudo vim /etc/systemd/system/mysql_exporter.serviceDodaj następującą treść:
[Unit] Description=Prometheus MySQL Exporter After=network.target User=prometheus Group=prometheus [Service] Type=simple Restart=always ExecStart=/usr/local/bin/mysqld_exporter \ --config.my-cnf / etc/.mysqld_exporter.cnf \ --collect.global_status \ --collect.info_schema.innodb_metrics \ --collect.auto_increment.columns \ --collect.info_schema.processlist \ --collect.binlog_size \ --collect.info_schema.tablestats \ --collect.global_variables \ --collect.info_schema.query_response_time \ --collect.info_schema.userstats \ --collect.info_schema.tables \ --collect.perf_schema.tablelocks \ --collect.perf_schema.file_events \ --collect .perf_schema.eventswaits \ --collect.perf_schema.indexiowaits \ --collect.perf_schema.tableiowaits \ --collect.slave_status \ --web.listen-address=0.0.0.0:9104 [Zainstaluj] WantedBy=multi-user.targetweb.listen-address=0.0.0.0:9104 określa, że serwer nasłuchuje na porcie 9104. Jeśli serwer ma sieć publiczną i prywatną, może być konieczne zastąpienie 0.0.0.0:9104 prywatnym adresem IP, na przykład – 192.168.4.5:9104.
Po zakończeniu przeładuj systemd i uruchom usługę mysql_exporter:
$sudo systemctl daemon-reload$sudo systemctl włącz mysql_exporter$sudo systemctl start mysql_exporter5. Skonfiguruj MySQL Endpoint, aby został zeskrobany przez Prometheusa
Wprowadź zmiany jak poniżej w pliku prometheus.yml:
scrape_configs:- nazwa_zadania:mysql_server1static_configs:- cele:['localhost:9104']etykiety:alias:db1Uwaga:Jeśli eksporter nie działa na tym samym hoście co Prometheus, podaj adres IP serwera zamiast localhost. 9104 odnosi się do portu, którego nasłuchuje Prometheus, jak określono w poprzednim kroku.
Monitorowanie wielu hostów MySQL z centralnego hosta Prometheus
Wiele serwerów MySQL może być monitorowanych z centralnego serwera. Można to osiągnąć dzięki oddzielnej usłudze eksportera dla każdego serwera. Upewnij się, że utworzyłeś pliki .mysqld_exporter.cnf i mysql_exporter.service (z unikalnymi numerami portów przypisanymi do flagi –web.listen-address) dla każdej usługi, jak wspomniano w krokach 3 i 4 powyżej. Dodaj cele do pliku prometheus.yml, jak wspomniano w kroku 5 powyżej. Nazwy stanowisk powinny być unikalne dla każdego celu. Na przykład:
scrape_configs:- nazwa_zadania:mysql_server1static_configs:- cele:['localhost:9104']labels:alias:db1- nazwa_zadania:mysql_server2static_configs:- cele:['localhost:9105']labels:alias:db2- nazwa_serwera_pracy:mysql - cele:['localhost:9106']etykiety:alias:db3Uwaga:Serwer Prometheus powinien być w stanie dotrzeć do celów przez sieć. Upewnij się, że konfiguracje sieci/zapory zostały odpowiednio zmodyfikowane.
Instalowanie Grafana i tworzenie pulpitów
Grafana używa Prometheusa jako źródła danych, co umożliwia tworzenie pulpitów nawigacyjnych w celu lepszej wizualizacji i zrozumienia Twoich danych. To świetny sposób na uzyskanie wglądu w dane szeregów czasowych.
Wykonaj poniższe kroki, aby zainstalować Grafana na centralnym hoście Prometheus.
1. Pobierz najnowszą wersję Grafana
Przejdź do strony Pobierz Grafana, aby pobrać najnowszą wersję.
$wget$sudo apt-get install -y adduser libfontconfig1$sudo dpkg -i grafana_ _amd64.deb 2. Pobierz repozytorium APT i zainstaluj Grafana
Polecenie add-apt-repository nie jest domyślną aplikacją w Debianie 9 i wymaga:
$apt-get install -y oprogramowanie-właściwości-wspólneZainstaluj repozytorium stabilnych wersji:
$sudo add-apt-repository „deb https://packages.grafana.com/oss/deb stabilne główne”Istnieje osobne repozytorium, jeśli potrzebujesz wersji beta:
$sudo add-apt-repository „deb https://packages.grafana.com/oss/deb wersja beta”Użyj powyższej linii, nawet jeśli korzystasz z Ubuntu lub innej wersji Debiana. Następnie dodaj nasz klucz gpg. Pozwala to na zainstalowanie podpisanych pakietów:
$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -Zaktualizuj swoje repozytoria Apt i zainstaluj Grafana:
$sudo apt-get update$sudo apt-get install grafana3. Uruchom usługę
$systemctl demon-reload$systemctl start grafana-server$systemctl status grafana-serverWłącz usługę systemd, aby Grafana uruchamiała się przy starcie:
$sudo systemctl włącz grafana-server.serviceAby uruchomić Grafana, otwórz przeglądarkę i przejdź do http://
:3000/ . 3000 to port http, którego domyślnie nasłuchuje Grafana.4. Dodawanie źródła danych
Po zainstalowaniu zaloguj się do panelu administracyjnego i przejdź do Konfiguracja> Źródła danych. Kliknij Dodaj źródło danych, wybierz Prometheus pod Bazy danych szeregów czasowych i wypełnij pola Nazwa i URL.
Nazwa:Prometheus-1 URL:http://localhost:9090
Uwaga:jeśli serwer Prometheus nie działa na tym samym hoście co Grafana, podaj adres IP serwera zamiast localhost.
Jesteś teraz gotowy do tworzenia i dostosowywania pulpitów nawigacyjnych do monitorowania MySQL. Możesz utworzyć nowy pulpit nawigacyjny, klikając link po prawej stronie selektora pulpitu nawigacyjnego. Po utworzeniu dashboardu możesz dodawać panele wybierając metryki do wyświetlenia, oznaczać gwiazdką dashboard, zapisywać go i udostępniać. Aby uzyskać szczegółowe instrukcje, zapoznaj się z dokumentacją firmy Grafana dla początkujących.
Oto przykład panelu Grafana utworzonego dla wdrożenia MySQL w ScaleGrid:
Powyższy pulpit nawigacyjny Grafana wyświetla wybrane typy MySQL, aktywność wątków klienta MySQL, godzinowe wykorzystanie sieci MySQL i blokady tabel MySQL zwizualizowane na wykresach, a poniższy pulpit nawigacyjny Grafana wyświetla MySQL Top Liczniki poleceń i najważniejsze liczniki poleceń MySQL co godzinę.
Zawsze staramy się ułatwiać życie naszym użytkownikom, więc poinformuj nas o wszelkich innych narzędziach, które chcesz połączyć z wdrożeniami ScaleGrid za pośrednictwem naszego komentarze lub na Twitterze pod adresem @scalegridio.