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://
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.cnfLä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.comAnge äganderättigheter:
$sudo chown root:prometheus /etc/.mysqld_exporter.cnf4. Skapa systemd enhetsfil
Skapa en ny tjänstfil på den centrala värden:
$sudo vim /etc/systemd/system/mysql_exporter.serviceLä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.targetweb.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_exporter5. 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:db1Obs: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:db3Obs! 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-commonInstallera 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 grafana3. Starta tjänsten
$systemctl daemon-reload$systemctl starta grafana-server$systemctl status grafana-serverAktivera systemd-tjänsten så att Grafana startar vid uppstart:
$sudo systemctl aktivera grafana-server.serviceFö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.