sql >> Databasteknik >  >> RDS >> Mysql

Hur man övervakar MySQL-distributioner med Prometheus &Grafana på ScaleGrid

Att övervaka din MySQL-databas prestanda i realtid hjälper dig att omedelbart identifiera problem och andra faktorer som kan orsaka problem nu eller i framtiden. Det är också ett bra sätt att avgöra vilka komponenter i databasen som kan förbättras eller optimeras för att öka din effektivitet och prestanda. Detta görs vanligtvis genom övervakningsprogram och verktyg antingen inbyggda i databashanteringsprogramvaran eller installerade från tredjepartsleverantörer.

Prometheus är ett program med öppen källkod som används för händelseövervakning och varning. Det kan användas tillsammans med ett visualiseringsverktyg som Grafana för att enkelt skapa och redigera instrumentpaneler, fråga, visualisera, varna om och förstå dina mätvärden. ScaleGrid ger full administratörsåtkomst till dina MySQL-distributioner – detta gör det lättare att integrera det befintliga MySQL-ekosystemet av verktyg med dina ScaleGrid MySQL-distributioner på AWS eller Azure. Prometheus fungerar bra för att spela in alla rent numeriska tidsserier och erbjuder även stöd för multidimensionell datainsamling och sökning. Grafana kan användas med den för att bygga instrumentpaneler som hjälper till att visualisera denna data på ett sätt som är lätt att tolka och använda. Dessa verktyg ger ytterligare insikt om dina mätvärden, användningsmönster och datauppsättningar tillsammans med din ScaleGrid-MySQL-övervakning, frågeanalys och varningar. I det här blogginlägget diskuterar vi hur du kan ställa in och använda Prometheus och Grafana med dina ScaleGrid MySQL-distributioner för avancerad databasövervakning och varning.

Så ställer du in din MySQL-övervakning

Låt oss gå igenom stegen som är involverade i att installera och konfigurera Prometheus-servern för att lagra och visa mätvärdena, en exportör (MySQL Exporter i det här fallet) för att samla in mätvärdena och vidarebefordra dem till Prometheus-servern och Grafana för att skapa instrumentpaneler. MySQL Exporter-verktyget kan installeras lokalt på en MySQL-server eller centralt på Prometheus-servern. I användningsfallet nedan kommer vi att förklara hur du ställer in och börjar använda Prometheus, MySQL Exporter och Grafana från en central värd som körs på Ubuntu för att övervaka flera MySQL-servrar. Du kan också läsa steg-för-steg-instruktioner i vårt Prometheus och Grafana för MySQL-hjälpdokument.

Blockdiagrammet nedan visar konfigurationen av en master-slave-quorum MySQL-distribution som inkluderar två databärande noder (master och slav) och en röstande medlem (quorum) med hjälp av MySQL-exportör, Prometheus-värd och Grafana:

Installera och konfigurera Prometheus-servern

Prometheus är verktyget vi kommer att använda för att centralisera och lagra din MySQL-statistik. Den skrapar statistiken från en eller flera exportörer med jämna mellanrum och visar den på sitt användargränssnitt. Nedan följer stegen för att installera och konfigurera Prometheus på en central Ubuntu-värd. Mer information finns i den här artikeln.

1. Skapa en Prometheus-systemgrupp och användare

$sudo groupadd --system prometheus$sudo useradd -s /sbin/nologin --system -g prometheus prometheus

2. Skapa en datakatalog för Prometheus

$sudo mkdir /var/lib/prometheus

3. Skapa konfigurationskataloger för Prometheus

$for i i regler rules.d files_sd; gör sudo mkdir -p /etc/prometheus/${i}; klar

4. Ladda ner Prometheus-arkivet och extrahera filen

Hämta det senaste binära arkivet för 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 \| skär -d '"' -f 4 \| wget -qi -

Så här extraherar du filen:

$tar xvf prometheus*.tar.gz$cd prometheus*/

5. Flytta Prometheus-filerna till standardplatser

Flytta Prometheus binära filer till /usr/local/bin:

$sudo mv prometheus promtool /usr/local/bin/

Flytta Prometheus konfigurationsmall till katalogen /etc:

$sudo mv prometheus.yml  /etc/prometheus/prometheus.yml

Flytta även konsoler och console_libraries till /etc/prometheus-katalogen:

$sudo mv-konsoler/ console_libraries/ /etc/prometheus/

6. Skapa/redigera en Prometheus-konfigurationsfil

Mallkonfigurationerna bör se ut som nedan:

$cat /etc/prometheus/prometheus.yml #my global config global:scrape_interval:15s # Ställ in skrapintervallet till var 15:e sekund. Standard är var 1 minut. evaluation_interval:15s # Utvärdera regler var 15:e sekund. Standard är var 1 minut. #scrape_timeout är inställd på den globala standarden (10s). #Alertmanager konfigurationsvarning:alertmanagers:- static_configs:- targets:#- alertmanager:9093 #Ladda regler en gång och utvärdera dem regelbundet enligt det globala 'evaluation_interval'. rule_files:#- "first_rules.yml" #- "second_rules.yml" #En skrapakonfiguration som innehåller exakt en slutpunkt att skrapa:#Här är det Prometheus själv. scrape_configs:#Jobbnamnet läggs till som en etikett `job=` till alla tidsserier som skrapas från denna konfiguration. - jobbnamn:'prometheus' #metrics_path är förinställd på '/metrics' #schema har som standard 'http'. static_configs:- targets:['localhost:9090']

7. Skapa en Prometheus systemd Service Unit File

$sudo vim /etc/systemd/system/prometheus.service

Lägg till följande innehåll:

 [Enhet] Beskrivning=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 Starta om=alltid [Installera] WantedBy=multi-user.target

Kom ihåg att redigera raden:Environment=”GOMAXPROCS=1 genom att ersätta 1 med antalet  vcpus på din server.

8. Ändra katalogbehörigheter

Ändra ägandet av dessa kataloger till Prometheus användare och grupp:

$for i i regler rules.d files_sd; gör sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done$for i i regler rules.d files_sd; gör sudo chmod -R 775 /etc/prometheus/${i}; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/

9. Ladda om systemd Daemon och starta tjänsten

$sudo systemctl daemon-reload$sudo systemctl starta prometheus$sudo systemctl aktivera prometheus

Kontrollera status med systemctl status prometheus kommando:

10. Konfigurera en brandvägg för att öppna port 9090

$sudo firewall-cmd --add-port=9090/tcp --permanent$sudo firewall-cmd --reload

När installationen är klar kan du komma åt Prometheus UI genom att logga in på http://:9090

Hur man övervakar #MySQL-distributioner med Prometheus &Grafana på ScaleGridKlicka för att tweeta

Installera och konfigurera MySQL Prometheus Exporter

Prometheus kräver en exportör för att samla in MySQL-serverstatistik. Denna exportör kan köras centralt på Prometheus-servern eller på databasservern. Mer information finns i Prometheus-dokumentationen.

Följ stegen nedan för att installera och konfigurera MySQL Prometheus Exporter på den centrala Prometheus-värden. Mer information finns i den här artikeln.

1. Ladda ner och installera 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. Skapa Prometheus Exporter Database-användare för att komma åt databasen, skrapa statistik och ge bidrag

SKAPA ANVÄNDARE 'mysqld_exporter'@'' IDENTIFIERAD AV 'StrongPassword' MED MAX_USER_CONNECTIONS 2;BEHANDLA PROCESS, REPLIKATIONSKLIENT, VÄLJ PÅ *.* TILL 'mysqld_exporter'@' 

MED MAX_USER_CONNECTIONS 2 används för att ställa in en maximal anslutningsgräns för användaren för att undvika att överbelasta servern med övervakningsskrap under hög belastning.

3. Konfigurera databasuppgifterna

Redigera konfigurationsfilen för exportören på den centrala värden:

$sudo vim /etc/.mysqld_exporter.cnf

Lägg till användarnamnet och lösenordet för den skapade användaren och den ScaleGrid MySQL-server du vill övervaka:

$sudo vim /etc/.mysqld_exporter.cnf[client]user=mysqld_exporterpassword=StrongPasswordhost=SG-mysqltestcluster-123456.servers.mongodirector.com

Ange äganderättigheter:

$sudo chown root:prometheus /etc/.mysqld_exporter.cnf

4. Skapa systemd enhetsfil

Skapa en ny tjänstfil på den centrala värden:

$sudo vim /etc/systemd/system/mysql_exporter.service

Lägg till följande innehåll:

 [Enhet] Beskrivning=Prometheus MySQL Exporter After=network.target User=prometheus Group=prometheus [Tjänst] Typ=enkel Starta om=alltid 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 [Installera] WantedBy=multi-user.target 

web.listen-address=0.0.0.0:9104 anger att servern lyssnar på port 9104. Om din server har ett offentligt och privat nätverk kan du behöva ersätta 0.0.0.0:9104 med privat IP, till exempel – 192.168.4.5:9104.

När du är klar, ladda om systemd och starta tjänsten mysql_exporter:

$sudo systemctl daemon-reload$sudo systemctl aktivera mysql_exporter$sudo systemctl starta mysql_exporter

5. Konfigurera MySQL Endpoint för att skrapas av Prometheus

Gör ändringar som nedan i filen prometheus.yml:

scrape_configs:- jobbnamn:mysql_server1static_configs:- targets:['localhost:9104']etiketter:alias:db1

Obs:Om exportören inte körs på samma värd som Prometheus, ange serverns IP-adress istället för localhost. 9104 hänvisar till porten som Prometheus lyssnar på, som specificerats i föregående steg.

Övervaka flera MySQL-värdar från en central Prometheus-värd

Flera MySQL-servrar kan övervakas från en central server. Detta kan uppnås genom att ha en separat exporttjänst för varje server. Se till att skapa filerna .mysqld_exporter.cnf och mysql_exporter.service (med unika portnummer tilldelade flaggan –web.listen-address) för varje tjänst som nämnts i steg 3 och 4 ovan. Lägg till mål till filen prometheus.yml som nämnts i steg 5 ovan. Jobbnamn ska vara unika för varje mål. Till exempel:

scrape_configs:- job_name:mysql_server1static_configs:- targets:['localhost:9104']labels:alias:db1- job_name:mysql_server2static_configs:- targets:['localhost:9105:job_name:labels:lconfigs_ - mål:['localhost:9106']etiketter:alias:db3

Obs! Prometheus Server bör kunna nå målen över nätverket. Se till att dina nätverks-/brandväggskonfigurationer har ändrats i enlighet med detta.

Installera Grafana och skapa instrumentpaneler

Grafana använder Prometheus som en datakälla, vilket gör att du kan skapa instrumentpaneler för att bättre visualisera och förstå dina mätvärden. Det ger ett utmärkt sätt att få insikt i dina tidsseriedata.

Följ stegen nedan för att installera Grafana på din centrala Prometheus-värd.

1. Ladda ner den senaste Grafana-versionen

Gå till sidan Ladda ned Grafana för att ladda ner den senaste versionen.

$wget $sudo apt-get install -y adduser libfontconfig1$sudo dpkg -i grafana__amd64.deb

2. Ladda ner APT Repository och installera Grafana

Kommandot add-apt-repository är inte en standardapp på Debian 9 och kräver:

$apt-get install -y software-properties-common

Installera arkivet för stabila utgåvor:

$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stabil main"

Det finns ett separat arkiv om du vill ha betaversioner:

$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb beta main"

Använd raden ovan även om du använder Ubuntu eller en annan Debianversion. Lägg sedan till vår gpg-nyckel. Detta låter dig installera signerade paket:

$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

Uppdatera dina Apt-förråd och installera Grafana:

$sudo apt-get update$sudo apt-get installera grafana

3. Starta tjänsten

$systemctl daemon-reload$systemctl starta grafana-server$systemctl status grafana-server

Aktivera systemd-tjänsten så att Grafana startar vid uppstart:

$sudo systemctl aktivera grafana-server.service

För att köra Grafana, öppna din webbläsare och gå till http://:3000/ . 3000 är http-porten som Grafana lyssnar på, som standard.

4. Lägga till en datakälla

När den är installerad loggar du in på administratörsöversikten och navigerar till Konfiguration> Datakällor. Klicka på Lägg till datakälla, välj Prometheus under Tidsseriedatabaser och fyll i fälten Namn och URL.

Namn:Prometheus-1 URL:http://localhost:9090

Obs:Om Prometheus-servern inte körs på samma värd som Grafana, ange serverns IP-adress istället för localhost.

Du är nu redo att skapa och anpassa instrumentpaneler för din MySQL-övervakning. Du kan skapa en ny instrumentpanel genom att klicka på länken till höger om instrumentpanelväljaren. När instrumentpanelen har skapats kan du lägga till paneler och välja de mätvärden som ska visas, stjärnmärka instrumentpanelen, spara och dela den. För detaljerade instruktioner kan du se Grafanas dokumentation för Komma igång.

Här är ett exempel på en Grafana-instrumentpanel skapad för en MySQL-implementering på ScaleGrid:

Ovanstående Grafana-instrumentpanel visar MySQL Select Types, MySQL Client Thread Activity, MySQL Network Usage hourly, och MySQL Table Locks-statistik visualiserade i diagrammen, och Grafana-instrumentpanelen nedan visar MySQL Top Kommandoräknare och MySQL Top Command Counters varje timme.

Vi strävar alltid efter att göra våra användares liv enklare, så låt oss veta om andra verktyg som du vill ansluta till dina ScaleGrid-installationer genom vår kommentarer eller via Twitter på @scalegridio.


  1. Beräkna din SQL Server Monitoring Total Cost of Ownership

  2. Hur använder man SqlCommand för att SKAPA DATABAS med parametrerat db-namn?

  3. MySQL:Infoga post om den inte finns i tabellen

  4. Databasfrågor:Hur hittar man en nål i en höstack?