Monitorování výkonu databáze MySQL v reálném čase vám pomůže okamžitě identifikovat problémy a další faktory, které by mohly způsobovat problémy nyní nebo v budoucnu. Je to také dobrý způsob, jak určit, které součásti databáze lze vylepšit nebo optimalizovat, abyste zvýšili efektivitu a výkon. To se obvykle provádí pomocí monitorovacího softwaru a nástrojů buď zabudovaných do softwaru pro správu databází, nebo nainstalovaných od poskytovatelů třetích stran.
Prometheus je softwarová aplikace s otevřeným zdrojovým kódem, která se používá pro monitorování událostí a upozornění. Lze jej použít spolu s vizualizačním nástrojem, jako je Grafana, ke snadnému vytváření a úpravě řídicích panelů, dotazování, vizualizaci, upozornění a pochopení vašich metrik. ScaleGrid poskytuje úplný administrátorský přístup k vašim nasazením MySQL – to usnadňuje integraci stávajícího ekosystému nástrojů MySQL s vašimi nasazeními ScaleGrid MySQL na AWS nebo Azure. Prometheus funguje dobře pro záznam jakýchkoli čistě číselných časových řad a nabízí také podporu pro multidimenzionální sběr dat a dotazování. Grafana lze s ním použít k vytvoření řídicích panelů, které pomáhají vizualizovat tato data způsobem, který lze snadno interpretovat a používat. Tyto nástroje vám poskytnou další informace o vašich metrikách, vzorcích používání a datových sadách spolu s monitorováním ScaleGrid MySQL, analýzou dotazů a upozorněními. V tomto příspěvku na blogu diskutujeme o tom, jak můžete nastavit a používat Prometheus a Grafana s nasazením ScaleGrid MySQL pro pokročilé monitorování databáze a upozornění.
Jak nastavit monitorování MySQL
Pojďme si projít kroky spojené s instalací a konfigurací serveru Prometheus pro ukládání a zobrazování metrik, což je exportér (v tomto případě MySQL Exporter), který shromažďuje metriky a přenáší je do server Prometheus a Grafana k vytváření řídicích panelů. Nástroj MySQL Exporter lze nainstalovat lokálně na server MySQL nebo centrálně na server Prometheus. V níže uvedeném příkladu použití vysvětlíme, jak nastavit a začít používat Prometheus, MySQL Exporter a Grafana z centrálního hostitele běžícího na Ubuntu k monitorování více serverů MySQL. Můžete si také prostudovat podrobné pokyny v dokumentu nápovědy Prometheus and Grafana for MySQL.
Blokový diagram níže ukazuje nastavení nasazení MySQL master-slave-quorum, které zahrnuje dva uzly nesoucí data (master a slave) a jednoho hlasujícího člena (kvórum) pomocí Exportér MySQL, hostitel Prometheus a Grafana:
Instalace a konfigurace serveru Prometheus
Prometheus je nástroj, který budeme používat k centralizaci a ukládání vašich metrik MySQL. V pravidelných intervalech stahuje metriky od jednoho nebo několika exportérů a zobrazuje je ve svém uživatelském rozhraní. Níže jsou uvedeny kroky k instalaci a konfiguraci Prometheus na centrálním hostiteli Ubuntu. Další podrobnosti naleznete v tomto článku.
1. Vytvořte skupinu a uživatele systému Prometheus
$sudo groupadd --system prometheus$sudo useradd -s /sbin/nologin --system -g prometheus prometheus
2. Vytvořte datový adresář pro Prometheus
$sudo mkdir /var/lib/prometheus
3. Vytvořte konfigurační adresáře pro Prometheus
$for i v pravidlech rules.d files_sd; udělat sudo mkdir -p /etc/prometheus/${i}; hotovo
4. Stáhněte si archiv Prometheus a rozbalte soubor
Stažení nejnovějšího binárního archivu pro Prometheus:
$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 -
Rozbalení souboru:
$tar xvf prometheus*.tar.gz$cd prometheus*/
5. Přesuňte soubory Prometheus do standardních umístění
Přesuňte binární soubory Prometheus do /usr/local/bin:
$sudo mv prometheus promtool /usr/local/bin/
Přesuňte konfigurační šablonu Prometheus do adresáře /etc:
$sudo mv prometheus.yml /etc/prometheus/prometheus.yml
Přesuňte také konzoly a knihovny console_libraries do adresáře /etc/prometheus:
$sudo mv consoles/ console_libraries/ /etc/prometheus/
6. Vytvořte/upravte konfigurační soubor Prometheus
Konfigurace šablony by měly vypadat podobně jako níže:
$cat /etc/prometheus/prometheus.yml #my global config global:scrape_interval:15s # Nastavte interval škrábání na každých 15 sekund. Výchozí nastavení je každou 1 minutu. assessment_interval:15s # Vyhodnoťte pravidla každých 15 sekund. Výchozí nastavení je každou 1 minutu. #scrape_timeout je nastaveno na globální výchozí hodnotu (10s). #Upozornění na konfiguraci správce výstrah:alertmanagers:- static_configs:- cíle:#- alertmanager:9093 #Načtěte pravidla jednou a pravidelně je vyhodnocujte podle globálního 'intervalu_hodnocení'. rule_files:#- "first_rules.yml" #- "second_rules.yml" #Konfigurace scrape obsahující přesně jeden koncový bod pro scrape:#Tady je to samotný Prometheus. scrape_configs:#Název úlohy se přidá jako štítek `job=` ke všem časovým řadám seškrabaným z této konfigurace. - job_name:'prometheus' #metrics_path výchozí hodnota '/metrics' #scheme výchozí hodnota 'http'. static_configs:- cíle:['localhost:9090']
7. Vytvořte soubor servisní jednotky Prometheus systemd
$sudo vim /etc/systemd/system/prometheus.service
Přidejte následující obsah:
[Jednotka] Popis=Dokumentace Prometheus=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Služba] Typ=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. cesta=/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=vždy [Instalovat] WantedBy=multi-user.target
Nezapomeňte upravit řádek:Environment=”GOMAXPROCS=1 nahrazením 1 číslem vcpus na vašem serveru.
8. Změnit oprávnění adresáře
Změňte vlastnictví těchto adresářů na uživatele a skupinu Prometheus:
$for i v pravidlech rules.d files_sd; do sudo chown -R prometheus:prometheus /etc/prometheus/${i}; hotovo $pro i v pravidlech rules.d files_sd; do sudo chmod -R 775 /etc/prometheus/${i}; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/
9. Znovu načtěte démona systemd a spusťte službu
$sudo systemctl daemon-reload$sudo systemctl spustit prometheus$sudo systemctl povolit prometheus
Zkontrolujte stav pomocí systemctl status prometheus příkaz:
10. Nakonfigurujte bránu firewall na otevřený port 9090
$sudo firewall-cmd --add-port=9090/tcp --permanent$sudo firewall-cmd --reload
Po dokončení nastavení získáte přístup k uživatelskému rozhraní Prometheus po přihlášení na adrese http://
Jak monitorovat nasazení #MySQL pomocí Prometheus &Grafana na ScaleGridClick To Tweet."
Instalace a konfigurace nástroje MySQL Prometheus Exporter
Prometheus vyžaduje exportér pro shromažďování metrik serveru MySQL. Tento exportér lze spustit centrálně na serveru Prometheus nebo na databázovém serveru. Další informace naleznete v dokumentaci Prometheus.
Při instalaci a nastavení nástroje MySQL Prometheus Exporter na centrálním hostiteli Prometheus postupujte podle níže uvedených kroků. Další podrobnosti naleznete v tomto článku.
1. Stáhněte a nainstalujte 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/ local/bin/mysqld_exporter
2. Vytvořte uživatele databáze exportérů Prometheus pro přístup k databázi, seškrábání metrik a poskytování grantů
VYTVOŘTE UŽIVATELE 'mysqld_exporter'@'' IDENTIFIKOVANÉ PODLE 'StrongPassword' S MAX_USER_CONNECTIONS 2;PROCES UDĚLENÍ, REPLIKAČNÍ KLIENT, VYBERTE NA *.* TO 'mysqld_exporter'usGLUES>'EXPro /před> S MAX_USER_CONNECTIONS 2 se používá k nastavení maximálního limitu připojení pro uživatele, aby se zabránilo přetížení serveru sledováním scrapes při velkém zatížení.
3. Nakonfigurujte přihlašovací údaje databáze
Upravte konfigurační soubor exportéru na centrálním hostiteli:
$sudo vim /etc/.mysqld_exporter.cnfPřidejte uživatelské jméno a heslo vytvořeného uživatele a server ScaleGrid MySQL, který chcete monitorovat:
$sudo vim /etc/.mysqld_exporter.cnf[client]user=mysqld_exporterpassword=StrongPasswordhost=SG-mysqltestcluster-123456.servers.mongodirector.comNastavit oprávnění k vlastnictví:
$sudo chown root:prometheus /etc/.mysqld_exporter.cnf4. Vytvořte soubor systemd Unit
Vytvořte nový soubor služby na centrálním hostiteli:
$sudo vim /etc/systemd/system/mysql_exporter.servicePřidejte následující obsah:
[Jednotka] Popis=Prometheus MySQL Exporter After=network.target User=prometheus Group=prometheus [Service] Type=simple Restart=vždy 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 [Install] WantedBy=multi-user.targetweb.listen-address=0.0.0.0:9104 určuje, že server naslouchá na portu 9104. Pokud má váš server veřejnou a privátní síť, možná budete muset nahradit 0.0.0.0:9104 privátní IP, například – 192.168.4.5:9104.
Po dokončení znovu načtěte systemd a spusťte službu mysql_exporter:
$sudo systemctl daemon-reload$sudo systemctl povolit mysql_exporter$sudo systemctl spustit mysql_exporter5. Nakonfigurujte koncový bod MySQL tak, aby byl smazán společností Prometheus
Proveďte v souboru prometheus.yml níže uvedené změny:
scrape_configs:- job_name:mysql_server1static_configs:- targets:['localhost:9104']labels:alias:db1Poznámka:Pokud exportér neběží na stejném hostiteli jako Prometheus, zadejte IP adresu serveru místo localhost. 9104 odkazuje na port, na kterém Prometheus naslouchá, jak je uvedeno v předchozím kroku.
Monitorování více hostitelů MySQL z centrálního hostitele Prometheus
Více serverů MySQL lze monitorovat z centrálního serveru. Toho lze dosáhnout tím, že pro každý server bude existovat samostatná služba exportéru. Ujistěte se, že jste pro každou službu vytvořili soubory .mysqld_exporter.cnf a mysql_exporter.service (s jedinečnými čísly portů přiřazenými k příznaku –web.listen-address), jak je uvedeno v krocích 3 a 4 výše. Přidejte cíle do souboru prometheus.yml, jak je uvedeno v kroku 5 výše. Názvy pracovních míst by měly být jedinečné pro každý cíl. Například:
scrape_configs:- job_name:mysql_server1static_configs:- targets:['localhost:9104']labels:alias:db1- job_name:mysql_server2static_configs:- targets:['localhost:9105']labels2-alias_název_úlohy:_dbserver - cíle:['localhost:9106']labels:alias:db3Poznámka:Server Prometheus by měl být schopen dosáhnout cílů přes síť. Ujistěte se, že vaše konfigurace sítě/firewallu byla odpovídajícím způsobem upravena.
Instalace Grafana a vytváření řídicích panelů
Grafana používá Prometheus jako zdroj dat, což vám umožňuje vytvářet řídicí panely pro lepší vizualizaci a pochopení vašich metrik. Poskytuje skvělý způsob, jak získat přehled o datech časových řad.
Při instalaci Grafany do centrálního hostitele Prometheus postupujte podle níže uvedených kroků.
1. Stáhněte si nejnovější verzi Grafana
Přejděte na stránku Stáhnout Grafana a stáhněte si nejnovější verzi.
$wget$sudo apt-get install -y adduser libfontconfig1$sudo dpkg -i grafana_ _amd64.deb 2. Stáhněte si úložiště APT a nainstalujte Grafana
Příkaz add-apt-repository není výchozí aplikací v Debianu 9 a vyžaduje:
$apt-get install -y software-properties-commonNainstalujte úložiště pro stabilní verze:
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"Pokud chcete beta verze, existuje samostatný repozitář:
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb beta main"Použijte výše uvedený řádek, i když používáte Ubuntu nebo jinou verzi Debianu. Poté přidejte náš gpg klíč. To vám umožní nainstalovat podepsané balíčky:
$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -Aktualizujte své repozitáře Apt a nainstalujte Grafana:
$sudo apt-get update$sudo apt-get install grafana3. Spusťte službu
$systemctl daemon-reload$systemctl start grafana-server$systemctl status grafana-serverPovolte službu systemd, aby se Grafana spustila při startu:
$sudo systemctl povolit grafana-server.serviceChcete-li spustit Grafana, otevřete prohlížeč a přejděte na http://
:3000/ . 3000 je http port, kterému Grafana ve výchozím nastavení naslouchá.4. Přidání zdroje dat
Po instalaci se přihlaste do administračního panelu a přejděte na Konfigurace> Zdroje dat. Klikněte na Přidat zdroj dat, vyberte Prometheus v části Databáze časových řad a vyplňte pole Název a URL.
Název:Prometheus-1 URL:http://localhost:9090
Poznámka:Pokud server Prometheus neběží na stejném hostiteli jako Grafana, zadejte IP adresu serveru namísto localhost.
Nyní jste připraveni vytvořit a přizpůsobit řídicí panely pro monitorování MySQL. Nový řídicí panel můžete vytvořit kliknutím na odkaz na pravé straně výběru řídicího panelu. Jakmile je řídicí panel vytvořen, můžete přidat panely s výběrem metrik, které se mají zobrazit, označit řídicí panel hvězdičkou, uložit a sdílet. Podrobné pokyny najdete v dokumentaci Začínáme společnosti Grafana.
Zde je příklad řídicího panelu Grafana vytvořeného pro nasazení MySQL ve ScaleGrid:
Výše uvedený řídicí panel Grafany zobrazuje metriky Vybrané typy MySQL, Aktivita vláken klienta MySQL, Hodinová využití sítě MySQL a Zámky tabulky MySQL vizualizované v grafech a níže uvedený řídicí panel Grafany zobrazuje MySQL Top Počítadla příkazů a počítadla nejvyšších příkazů MySQL každou hodinu.
Vždy se snažíme našim uživatelům usnadnit život, takže nám dejte vědět o jakýchkoli dalších nástrojích, které byste chtěli propojit s nasazením ScaleGrid prostřednictvím našeho komentáře nebo prostřednictvím Twitteru na @scalegridio.