sql >> Database teknologi >  >> RDS >> Mysql

Sådan overvåger du MySQL-implementeringer med Prometheus &Grafana på ScaleGrid

Overvågning af din MySQL-databases ydeevne i realtid hjælper dig med straks at identificere problemer og andre faktorer, der kan forårsage problemer nu eller i fremtiden. Det er også en god måde at bestemme, hvilke komponenter i databasen, der kan forbedres eller optimeres for at øge din effektivitet og ydeevne. Dette gøres normalt gennem overvågningssoftware og værktøjer, enten indbygget i databasestyringssoftwaren eller installeret fra tredjepartsudbydere.

Prometheus er en open source softwareapplikation, der bruges til hændelsesovervågning og alarmering. Det kan bruges sammen med et visualiseringsværktøj som Grafana til nemt at oprette og redigere dashboards, forespørge, visualisere, advare om og forstå dine metrics. ScaleGrid giver fuld administratoradgang til dine MySQL-implementeringer – dette gør det nemmere at integrere det eksisterende MySQL-økosystem af værktøjer med dine ScaleGrid MySQL-implementeringer på AWS eller Azure. Prometheus fungerer godt til optagelse af alle rent numeriske tidsserier og tilbyder også understøttelse af multidimensionel dataindsamling og forespørgsel. Grafana kan bruges sammen med det til at bygge dashboards, der hjælper med at visualisere disse data på en måde, der er nem at fortolke og bruge. Disse værktøjer giver yderligere indsigt i dine metrics, brugsmønstre og datasæt sammen med din ScaleGrid-MySQL-overvågning, forespørgselsanalyse og underretninger. I dette blogindlæg diskuterer vi, hvordan du kan konfigurere og bruge Prometheus og Grafana med dine ScaleGrid MySQL-implementeringer til avanceret databaseovervågning og alarmering.

Sådan konfigurerer du din MySQL-overvågning

Lad os gennemgå de trin, der er involveret i at installere og konfigurere Prometheus-serveren til at gemme og vise metrics, en eksportør (MySQL Exporter i dette tilfælde) til at indsamle metrics og videresende dem til Prometheus-serveren og Grafana til at oprette dashboards. MySQL Exporter-værktøjet kan installeres lokalt på en MySQL-server eller centralt på Prometheus-serveren. I brugstilfældet nedenfor vil vi forklare, hvordan du opsætter og begynder at bruge Prometheus, MySQL Exporter og Grafana fra en central vært, der kører på Ubuntu, for at overvåge flere MySQL-servere. Du kan også gennemgå trin-for-trin instruktioner i vores Prometheus og Grafana til MySQL hjælpedokument.

Blokdiagrammet nedenfor viser opsætningen af ​​en master-slave-quorum MySQL-implementering, der inkluderer to databærende noder (master og slave) og et stemmeberettiget medlem (quorum) ved hjælp af MySQL-eksportør, Prometheus-vært og Grafana:

Installation og konfiguration af Prometheus-serveren

Prometheus er værktøjet vi vil bruge til at centralisere og gemme dine MySQL-metrics. Den skraber metrikken fra en eller flere eksportører med jævne mellemrum og viser den på dens brugergrænseflade. Nedenfor er trinene til at installere og konfigurere Prometheus på en central Ubuntu-vært. For flere detaljer kan du henvise til denne artikel.

1. Opret en Prometheus-systemgruppe og -bruger

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

2. Opret et dataregister for Prometheus

$sudo mkdir /var/lib/prometheus

3. Opret konfigurationsmapper for Prometheus

$for i i regler rules.d files_sd; gør sudo mkdir -p /etc/prometheus/${i}; færdig

4. Download Prometheus-arkivet og udpak filen

Sådan downloader du det seneste binære arkiv for 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 -

For at udpakke filen:

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

5. Flyt Prometheus-filerne til standardplaceringer

Flyt Prometheus binære filer til /usr/local/bin:

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

Flyt Prometheus konfigurationsskabelon til mappen /etc:

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

Flyt også konsoller og console_libraries til mappen /etc/prometheus:

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

6. Opret/rediger en Prometheus-konfigurationsfil

Skabelonkonfigurationerne skal se ud som nedenfor:

$cat /etc/prometheus/prometheus.yml #my global config global:scrape_interval:15s # Indstil scrape-intervallet til hvert 15. sekund. Standard er hvert 1. minut. evaluation_interval:15s # Evaluer regler hvert 15. sekund. Standard er hvert 1. minut. #scrape_timeout er indstillet til den globale standard (10s). #Alertmanager konfigurationsalarm:alertmanagers:- static_configs:- targets:#- alertmanager:9093 #Indlæs regler én gang og evaluer dem med jævne mellemrum i henhold til det globale 'evaluation_interval'. rule_files:#- "first_rules.yml" #- "second_rules.yml" #En scrape-konfiguration, der indeholder præcis ét endepunkt, der skal skrabes:#Her er det selve Prometheus. scrape_configs:#Jobnavnet tilføjes som en etiket `job=` til enhver tidsserie, der er skrabet fra denne konfiguration. - job_name:'prometheus' #metrics_path er som standard '/metrics' #skema er som standard 'http'. static_configs:- targets:['localhost:9090']

7. Opret en Prometheus systemd Service Unit File

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

Tilføj følgende indhold:

 [Enhed] Beskrivelse=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 Genstart=altid [Installer] WantedBy=multi-user.target

Husk at redigere linjen:Environment=”GOMAXPROCS=1 ved at erstatte 1 med antallet af  vcpus på din server.

8. Skift mappetilladelser

Ændre ejerskabet af disse mapper til Prometheus-bruger og -gruppe:

$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; do sudo chmod -R 775 /etc/prometheus/${i}; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/

9. Genindlæs systemd Daemon og start tjenesten

$sudo systemctl daemon-reload$sudo systemctl start prometheus$sudo systemctl aktiver prometheus

Tjek status ved hjælp af systemctl status prometheus kommando:

10. Konfigurer en firewall til at åbne port 9090

$sudo firewall-cmd --add-port=9090/tcp --permanent$sudo firewall-cmd --genindlæs

Når opsætningen er fuldført, kan du få adgang til Prometheus UI ved at logge ind på http://:9090

Sådan overvåges #MySQL-implementeringer med Prometheus &Grafana på ScaleGridKlik for at tweete

Installation og konfiguration af MySQL Prometheus Exporter

Prometheus kræver en eksportør for at indsamle MySQL-servermetrics. Denne eksportør kan køres centralt på Prometheus-serveren eller på databaseserveren. For yderligere læsning henvises til Prometheus-dokumentationen.

Følg nedenstående trin for at installere og konfigurere MySQL Prometheus Exporter på den centrale Prometheus-vært. For flere detaljer henvises til denne artikel.

1. Download og installer 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. Opret Prometheus Exporter Database-bruger for at få adgang til databasen, skrabe metrics og give tilskud

OPRET BRUGER 'mysqld_exporter'@'' IDENTIFICERET VED 'StrongPassword' MED MAX_USER_CONNECTIONS 2;GIVNINGSPROCES, REPLIKATIONSKLIENT, VÆLG PÅ *.* TIL 'mysqld_exporter'@' 

MED MAX_USER_CONNECTIONS 2 bruges til at indstille en maksimal forbindelsesgrænse for brugeren for at undgå at overbelaste serveren med overvågningsskrammer under kraftig belastning.

3. Konfigurer databaselegitimationsoplysningerne

Rediger konfigurationsfilen for eksportøren på den centrale vært:

$sudo vim /etc/.mysqld_exporter.cnf

Tilføj brugernavnet og adgangskoden for den oprettede bruger og den ScaleGrid MySQL-server, du vil overvåge:

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

Indstil ejerskabstilladelser:

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

4. Opret systemd enhedsfil

Opret en ny servicefil på den centrale vært:

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

Tilføj følgende indhold:

 [Enhed] Beskrivelse=Prometheus MySQL Exporter After=network.target Bruger=prometheus Group=prometheus [Service] Type=simpel Genstart=altid 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 [Installer] WantedBy=multi-user.target 

web.listen-address=0.0.0.0:9104 angiver, at serveren lytter på port 9104. Hvis din server har et offentligt og privat netværk, skal du muligvis erstatte 0.0.0.0:9104 med privat IP, for eksempel – 192.168.4.5:9104.

Når du er færdig, genindlæs systemd og start mysql_exporter-tjenesten:

$sudo systemctl daemon-reload$sudo systemctl aktiver mysql_exporter$sudo systemctl start mysql_exporter

5. Konfigurer MySQL-endepunkt til at blive skrabet af Prometheus

Foretag ændringer som nedenfor til filen prometheus.yml:

scrape_configs:- job_name:mysql_server1static_configs:- targets:['localhost:9104']labels:alias:db1

Bemærk:Hvis eksportøren ikke kører på samme vært som Prometheus, skal du angive serverens IP-adresse i stedet for localhost. 9104 henviser til den port, Prometheus lytter til, som angivet i det foregående trin.

Overvågning af flere MySQL-værter fra en central Prometheus-vært

Flere MySQL-servere kan overvåges fra en central server. Dette kan opnås ved at have en separat eksportørtjeneste for hver server. Sørg for at oprette .mysqld_exporter.cnf og mysql_exporter.service (med unikke portnumre tildelt til –web.listen-address flaget) for hver tjeneste som nævnt i trin 3 og 4 ovenfor. Tilføj mål til filen prometheus.yml som nævnt i trin 5 ovenfor. Jobnavne skal være unike for hvert mål. For eksempel:

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

Bemærk:Prometheus Server bør være i stand til at nå målene over netværket. Sørg for, at dine netværks-/firewallkonfigurationer er blevet ændret i overensstemmelse hermed.

Installation af Grafana og oprettelse af dashboards

Grafana bruger Prometheus som en datakilde, så du kan oprette dashboards for bedre at visualisere og forstå dine metrics. Det giver en fantastisk måde at få indsigt i dine tidsseriedata.

Følg nedenstående trin for at installere Grafana på din centrale Prometheus-vært.

1. Download den seneste Grafana-version

Gå til siden Download Grafana for at downloade den seneste version.

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

2. Download APT Repository &installer Grafana

Kommandoen add-apt-repository er ikke en standardapp på Debian 9 og kræver:

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

Installer lageret for stabile udgivelser:

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

Der er et separat lager, hvis du ønsker beta-udgivelser:

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

Brug ovenstående linje, selvom du er på Ubuntu eller en anden Debian-version. Tilføj derefter vores gpg-nøgle. Dette giver dig mulighed for at installere signerede pakker:

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

Opdater dine Apt-lagre og installer Grafana:

$sudo apt-get update$sudo apt-get install grafana

3. Start tjenesten

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

Aktiver systemd-tjenesten, så Grafana starter ved opstart:

$sudo systemctl aktiver grafana-server.service

For at køre Grafana skal du åbne din browser og gå til http://:3000/ . 3000 er den http-port, som Grafana lytter til, som standard.

4. Tilføjelse af en datakilde

Når den er installeret, skal du logge ind på admin-betjeningspanelet og navigere til Konfiguration> Datakilder. Klik på Tilføj datakilde, vælg Prometheus under tidsseriedatabaser og udfyld felterne Navn og URL.

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

Bemærk:Hvis Prometheus-serveren ikke kører på samme vært som Grafana, skal du angive serverens IP-adresse i stedet for localhost.

Du er nu klar til at oprette og tilpasse dashboards til din MySQL-overvågning. Du kan oprette et nyt dashboard ved at klikke på linket i højre side af dashboardvælgeren. Når dashboardet er oprettet, kan du tilføje paneler ved at vælge de metrics, der skal vises, stjernemarkere dashboardet, gemme og dele det. For detaljerede instruktioner kan du se Grafanas dokumentation for Kom godt i gang.

Her er et eksempel på et Grafana-dashboard, der er oprettet til en MySQL-implementering på ScaleGrid:

Ovenstående Grafana-dashboard viser MySQL Select Types, MySQL Client Thread Activity, MySQL Network Usage Timely og MySQL Table Locks-metrics visualiseret i diagrammerne, og Grafana-dashboardet nedenfor viser MySQL Top Kommandotællere og MySQL Top Kommandotællere hver time.

Vi søger altid at gøre vores brugeres liv lettere, så lad os vide om andre værktøjer, du gerne vil forbinde til dine ScaleGrid-implementeringer via vores kommentarer eller via Twitter på @scalegridio.


  1. Aktivering af SSL eller TLS i Oracle Apps R12

  2. Kapacitetsplanlægning for MySQL og MariaDB - Dimensionering af lagerstørrelse

  3. Sum kolonner med null-værdier i oracle

  4. Sådan fjerner du efterfølgende nuller fra en decimal i PostgreSQL