sql >> Database >  >> RDS >> Mysql

Hoe MySQL-implementaties te bewaken met Prometheus &Grafana op ScaleGrid

Door de prestaties van uw MySQL-database in realtime te volgen, kunt u onmiddellijk problemen en andere factoren identificeren die nu of in de toekomst problemen kunnen veroorzaken. Het is ook een goede manier om te bepalen welke componenten van de database kunnen worden verbeterd of geoptimaliseerd om uw efficiëntie en prestaties te verhogen. Dit wordt meestal gedaan door middel van monitoringsoftware en tools die zijn ingebouwd in de databasebeheersoftware of worden geïnstalleerd door externe providers.

Prometheus is een open-source softwaretoepassing die wordt gebruikt voor het bewaken en waarschuwen van gebeurtenissen. Het kan samen met een visualisatietool zoals Grafana worden gebruikt om eenvoudig dashboards te maken en te bewerken, query's uit te voeren, te visualiseren, te waarschuwen en uw statistieken te begrijpen. ScaleGrid biedt volledige beheerderstoegang tot uw MySQL-implementaties - dit maakt het eenvoudiger om het bestaande MySQL-ecosysteem van tools te integreren met uw ScaleGrid MySQL-implementaties op AWS of Azure. Prometheus werkt goed voor het opnemen van puur numerieke tijdreeksen en biedt ook ondersteuning voor multidimensionale gegevensverzameling en query's. Grafana kan ermee worden gebruikt om dashboards te bouwen die deze gegevens helpen visualiseren op een manier die gemakkelijk te interpreteren en te gebruiken is. Deze tools bieden extra inzicht in uw statistieken, gebruikspatronen en datasets, samen met uw ScaleGrid MySQL-monitoring, query-analyse en waarschuwingen. In deze blogpost bespreken we hoe u Prometheus en Grafana kunt instellen en gebruiken met uw ScaleGrid MySQL-implementaties voor geavanceerde databasebewaking en waarschuwingen.

Hoe u uw MySQL-bewaking instelt

Laten we de stappen doorlopen die betrokken zijn bij het installeren en configureren van de Prometheus-server om de metrieken op te slaan en weer te geven, een exporteur (in dit geval MySQL Exporter) om de metrieken te verzamelen en door te sturen naar de Prometheus-server en Grafana om dashboards te maken. De MySQL Exporter-tool kan lokaal op een MySQL-server of centraal op de Prometheus-server worden geïnstalleerd. In de onderstaande use case zullen we uitleggen hoe u Prometheus, MySQL Exporter en Grafana kunt instellen en gebruiken vanaf een centrale host die op Ubuntu draait om meerdere MySQL-servers te bewaken. U kunt ook stapsgewijze instructies bekijken in ons Help-document voor Prometheus en Grafana voor MySQL.

Het onderstaande blokdiagram toont de opzet van een master-slave-quorum MySQL-implementatie met twee gegevensdragende knooppunten (master en slave) en één stemgerechtigd lid (quorum) met behulp van de MySQL Exporter, Prometheus-host en Grafana:

De Prometheus-server installeren en configureren

Prometheus is de tool die we gaan gebruiken om uw MySQL-statistieken te centraliseren en op te slaan. Het schraapt de statistieken van een of meerdere exporteurs met regelmatige tussenpozen en geeft deze weer op de gebruikersinterface. Hieronder staan ​​de stappen voor het installeren en configureren van Prometheus op een centrale Ubuntu-host. Raadpleeg dit artikel voor meer informatie.

1. Een Prometheus-systeemgroep en -gebruiker maken

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

2. Maak een gegevensmap voor Prometheus

$sudo mkdir /var/lib/prometheus

3. Configuratiemappen maken voor Prometheus

$for i in regels rules.d files_sd; doe sudo mkdir -p /etc/prometheus/${i}; klaar

4. Download het Prometheus-archief en pak het bestand uit

Om het nieuwste binaire archief voor Prometheus te downloaden:

$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 \| knippen -d '"' -f 4 \| wget -qi -

Om het bestand uit te pakken:

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

5. Verplaats de Prometheus-bestanden naar standaardlocaties

Verplaats binaire Prometheus-bestanden naar /usr/local/bin:

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

Verplaats de Prometheus-configuratiesjabloon naar de map /etc:

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

Verplaats ook consoles en console_libraries naar de directory /etc/prometheus:

$sudo mv consoles/ console_libraries/ /etc/prometheus/

6. Een Prometheus-configuratiebestand maken/bewerken

De sjabloonconfiguraties zouden er als volgt uit moeten zien:

$cat /etc/prometheus/prometheus.yml #my global config global:scrape_interval:15s # Stel het scrape-interval in op elke 15 seconden. Standaard is elke 1 minuut. evaluatie_interval:15s # Evalueer regels elke 15 seconden. De standaardwaarde is elke 1 minuut. #scrape_timeout is ingesteld op de algemene standaard (10s). #Alertmanager configuratiewaarschuwing:alertmanagers:- static_configs:- doelen:#- alertmanager:9093 #Laad regels één keer en evalueer ze periodiek volgens het globale 'evaluation_interval'. rule_files:#- "first_rules.yml" #- "second_rules.yml" #Een scrape-configuratie die precies één eindpunt bevat om te scrapen:#Hier is het Prometheus zelf. scrape_configs:#De taaknaam wordt toegevoegd als een label `job=` aan elke tijdreeks die uit deze configuratie is geschraapt. - job_name:'prometheus' #metrics_path staat standaard op '/metrics' #scheme staat standaard op 'http'. static_configs:- doelen:['localhost:9090']

7. Maak een Prometheus systemd Service Unit-bestand

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

Voeg de volgende inhoud toe:

 [Eenheid] Beschrijving=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=altijd [Installeren] WantedBy=multi-user.target

Vergeet niet om de regel te bewerken:Environment=”GOMAXPROCS=1 door 1 te vervangen door het aantal vcpu's op uw server.

8. Directorymachtigingen wijzigen

Verander het eigendom van deze mappen in Prometheus-gebruiker en -groep:

$for i in regels rules.d files_sd; doe sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done$for i in regels rules.d files_sd; doe sudo chmod -R 775 /etc/prometheus/${i}; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/

9. Herlaad systemd Daemon en start de service

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

Controleer de status met systemctl status prometheus commando:

10. Configureer een firewall om poort 9090 te openen

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

Zodra de installatie is voltooid, hebt u toegang tot de Prometheus-gebruikersinterface door in te loggen op http://:9090

Hoe #MySQL-implementaties met Prometheus &Grafana op ScaleGrid te controleren Klik om te tweeten

MySQL Prometheus Exporter installeren en configureren

Prometheus vereist een exportprogramma voor het verzamelen van MySQL-serverstatistieken. Deze exporteur kan centraal op de Prometheus-server worden uitgevoerd, of op de databaseserver. Raadpleeg de Prometheus-documentatie voor meer informatie.

Volg de onderstaande stappen om MySQL Prometheus Exporter op de centrale Prometheus-host te installeren en in te stellen. Raadpleeg dit artikel voor meer informatie.

1. Download en installeer 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. Maak een Prometheus Exporter-databasegebruiker om toegang te krijgen tot de database, statistieken te schrapen en subsidies te verstrekken

GEBRUIK MAKEN 'mysqld_exporter'@'' GEDENTIFICEERD DOOR 'StrongPassword' MET MAX_USER_CONNECTIONS 2;SUBSIDIEPROCES, REPLICATIECLIENT, SELECTEER OP *.* NAAR 'mysqld_exporter'@'PRILEGEUSHOSTIP /pre> 

MET MAX_USER_CONNECTIONS 2 wordt gebruikt om een ​​maximale verbindingslimiet voor de gebruiker in te stellen om te voorkomen dat de server wordt overbelast met bewakingsschaafwonden onder zware belasting.

3. Configureer de databasereferenties

Bewerk het configuratiebestand van de exporteur op de centrale host:

$sudo vim /etc/.mysqld_exporter.cnf

Voeg de gebruikersnaam en het wachtwoord toe van de aangemaakte gebruiker en de ScaleGrid MySQL-server die u wilt controleren:

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

Eigendomsrechten instellen:

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

4. Systemd Unit-bestand maken

Maak een nieuw servicebestand op de centrale host:

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

Voeg de volgende inhoud toe:

 [Eenheid] Beschrijving=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 [Installeren] WantedBy=multi-user.target 

web.listen-address=0.0.0.0:9104 geeft aan dat de server luistert op poort 9104. Als uw server een openbaar en particulier netwerk heeft, moet u mogelijk 0.0.0.0:9104 vervangen door een privé-IP, bijvoorbeeld – 192.168.4.5:9104.

Als u klaar bent, laadt u systemd opnieuw en start u de mysql_exporter-service:

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

5. MySQL-eindpunt configureren om door Prometheus te worden geschraapt

Breng wijzigingen aan zoals hieronder in het prometheus.yml-bestand:

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

Opmerking:Als de exporteur niet op dezelfde host draait als Prometheus, geef dan het IP-adres van de server op in plaats van localhost. 9104 verwijst naar de poort waar Prometheus naar luistert, zoals gespecificeerd in de vorige stap.

Meerdere MySQL-hosts bewaken vanaf een centrale Prometheus-host

Meerdere MySQL-servers kunnen vanaf een centrale server worden bewaakt. Dit kan worden bereikt door voor elke server een aparte exportservice te hebben. Zorg ervoor dat u .mysqld_exporter.cnf en mysql_exporter.service (met unieke poortnummers toegewezen aan de vlag –web.listen-address) voor elke service maakt, zoals vermeld in stap 3 en 4 hierboven. Voeg doelen toe aan het prometheus.yml-bestand zoals vermeld in stap 5 hierboven. Functienamen moeten uniek zijn voor elk doel. Bijvoorbeeld:

scrape_configs:- job_name:mysql_server1static_configs:- doelen:['localhost:9104']labels:alias:db1- job_name:mysql_server2static_configs:- doelen:['localhost:9105']labels:alias:db2- job_name3 mystatic_ql:- doelen:['localhost:9106']labels:alias:db3

Opmerking:Prometheus Server zou de doelen via het netwerk moeten kunnen bereiken. Zorg ervoor dat uw netwerk-/firewallconfiguraties dienovereenkomstig zijn aangepast.

Grafana installeren en dashboards maken

Grafana gebruikt Prometheus als gegevensbron, zodat u dashboards kunt maken om uw statistieken beter te visualiseren en te begrijpen. Het biedt een geweldige manier om inzicht te krijgen in uw tijdreeksgegevens.

Volg de onderstaande stappen om Grafana op uw centrale Prometheus-host te installeren.

1. Download de nieuwste Grafana-versie

Ga naar de pagina Grafana downloaden om de nieuwste versie te downloaden.

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

2. APT Repository downloaden en Grafana installeren

Het commando add-apt-repository is geen standaard app op Debian 9 en vereist:

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

Installeer de repository voor stabiele releases:

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

Er is een aparte repository als je bètaversies wilt:

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

Gebruik de bovenstaande regel, zelfs als u Ubuntu of een andere Debian-versie gebruikt. Voeg dan onze gpg-sleutel toe. Hiermee kunt u ondertekende pakketten installeren:

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

Update uw Apt-repositories en installeer Grafana:

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

3. Start de dienst

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

Schakel de systemd-service in zodat Grafana bij het opstarten begint:

$sudo systemctl grafana-server.service inschakelen

Om Grafana uit te voeren, opent u uw browser en gaat u naar http://:3000/ . 3000 is de http-poort waar Grafana standaard naar luistert.

4. Een gegevensbron toevoegen

Log na installatie in op het beheerdersdashboard en ga naar Configuratie> Gegevensbronnen. Klik op Gegevensbron toevoegen, selecteer Prometheus onder Tijdreeksdatabases en vul de velden Naam en URL in.

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

Opmerking:als de Prometheus-server niet op dezelfde host draait als Grafana, geef dan het IP-adres van de server op in plaats van localhost.

Je bent nu helemaal klaar om dashboards te maken en aan te passen voor je MySQL-monitoring. U kunt een nieuw dashboard maken door op de link aan de rechterkant van de dashboardkiezer te klikken. Nadat het dashboard is gemaakt, kunt u panelen toevoegen door de weer te geven statistieken te kiezen, het dashboard een ster te geven, het op te slaan en te delen. Voor gedetailleerde instructies kun je de Aan de slag-documentatie van Grafana raadplegen.

Hier is een voorbeeld van een Grafana-dashboard dat is gemaakt voor een MySQL-implementatie bij ScaleGrid:

Het bovenstaande Grafana-dashboard geeft MySQL Select Types, MySQL Client Thread Activity, MySQL Network Usage Urly, en MySQL Table Locks-statistieken weer, gevisualiseerd in de grafieken, en het onderstaande Grafana-dashboard geeft MySQL Top weer Command Counters en MySQL Top Command Counters per uur.

We zijn altijd op zoek om het leven van onze gebruikers gemakkelijker te maken, dus laat ons weten welke andere tools u wilt koppelen aan uw ScaleGrid-implementaties via onze opmerkingen of via Twitter op @scalegridio.


  1. PostgreSQL accepteert geen kolomalias in WHERE-clausule

  2. Hoe dwing ik Postgres om een ​​bepaalde index te gebruiken?

  3. Hoe vindt u de MySQL-databaselocatie op uw harde schijf?

  4. Hoe vraag ik naar alle datums die groter zijn dan een bepaalde datum in SQL Server?