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

Come monitorare le distribuzioni MySQL con Prometheus e Grafana su ScaleGrid

Il monitoraggio delle prestazioni del tuo database MySQL in tempo reale ti aiuta a identificare immediatamente problemi e altri fattori che potrebbero causare problemi ora o in futuro. È anche un buon modo per determinare quali componenti del database possono essere migliorati o ottimizzati per aumentare l'efficienza e le prestazioni. Questo di solito viene eseguito tramite software e strumenti di monitoraggio integrati nel software di gestione del database o installati da fornitori di terze parti.

Prometheus è un'applicazione software open source utilizzata per il monitoraggio e gli avvisi di eventi. Può essere utilizzato insieme a uno strumento di visualizzazione come Grafana per creare e modificare facilmente dashboard, interrogare, visualizzare, avvisare e comprendere le tue metriche. ScaleGrid fornisce l'accesso amministrativo completo alle tue distribuzioni MySQL:ciò semplifica l'integrazione dell'ecosistema di strumenti MySQL esistente con le tue distribuzioni MySQL ScaleGrid su AWS o Azure. Prometheus funziona bene per la registrazione di qualsiasi serie temporale puramente numerica e offre anche supporto per la raccolta e l'esecuzione di query di dati multidimensionali. Grafana può essere utilizzato con esso per creare dashboard che aiutano a visualizzare questi dati in un modo facile da interpretare e utilizzare. Questi strumenti forniranno informazioni aggiuntive su metriche, modelli di utilizzo e set di dati insieme al monitoraggio MySQL, all'analisi delle query e agli avvisi di ScaleGrid. In questo post del blog, discutiamo di come configurare e utilizzare Prometheus e Grafana con le implementazioni ScaleGrid MySQL per il monitoraggio e gli avvisi avanzati del database.

Come configurare il monitoraggio MySQL

Esaminiamo i passaggi coinvolti nell'installazione e configurazione del server Prometheus per archiviare e visualizzare le metriche, un esportatore (MySQL Exporter in questo caso) per raccogliere le metriche e trasmetterle a il server Prometheus e Grafana per creare dashboard. Lo strumento MySQL Exporter può essere installato localmente su un server MySQL o centralmente sul server Prometheus. Nel caso d'uso seguente, spiegheremo come configurare e iniziare a utilizzare Prometheus, MySQL Exporter e Grafana da un host centrale in esecuzione su Ubuntu per monitorare più server MySQL. Puoi anche leggere le istruzioni dettagliate nel nostro documento di aiuto di Prometheus e Grafana per MySQL.

Il diagramma a blocchi seguente mostra la configurazione di una distribuzione MySQL master-slave-quorum che include due nodi portanti dati (master e slave) e un membro votante (quorum) utilizzando il MySQL Exporter, Prometheus host e Grafana:

Installazione e configurazione del server Prometheus

Prometheus è lo strumento che utilizzeremo per centralizzare e archiviare le tue metriche MySQL. Raccoglie le metriche da uno o più esportatori a intervalli regolari e le visualizza sulla sua interfaccia utente. Di seguito sono riportati i passaggi per installare e configurare Prometheus su un host Ubuntu centrale. Per maggiori dettagli, puoi fare riferimento a questo articolo.

1. Crea un gruppo di sistema Prometheus e un utente

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

2. Crea una directory di dati per Prometheus

$sudo mkdir /var/lib/prometheus

3. Crea directory di configurazione per Prometheus

$for i in rules rules.d files_sd; do sudo mkdir -p /etc/prometheus/${i}; done

4. Scarica l'archivio Prometheus ed estrai il file

Per scaricare l'ultimo archivio binario per 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 -

Per estrarre il file:

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

5. Sposta i file Prometheus in posizioni standard

Sposta i file binari di Prometheus in /usr/local/bin:

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

Sposta il modello di configurazione di Prometheus nella directory /etc:

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

Sposta anche console e console_libraries nella directory /etc/prometheus:

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

6. Crea/modifica un file di configurazione Prometheus

Le configurazioni dei modelli dovrebbero essere simili alle seguenti:

$cat /etc/prometheus/prometheus.yml

 #my global config
 global:
 scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
 evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
 #scrape_timeout is set to the global default (10s).

 #Alertmanager configuration
 alerting:
 alertmanagers:
 - static_configs:
 - targets:
 #- alertmanager:9093

 #Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
 rule_files:
 #- "first_rules.yml"
 #- "second_rules.yml"

 #A scrape configuration containing exactly one endpoint to scrape:
 #Here it's Prometheus itself.
 scrape_configs:
 #The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
 - job_name: 'prometheus'

 #metrics_path defaults to '/metrics'
 #scheme defaults to 'http'.

 static_configs:
 - targets: ['localhost:9090']

7. Crea un file dell'unità di servizio di sistema Prometheus

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

Aggiungi il seguente contenuto:

 [Unit]
 Description=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=always

 [Install]
 WantedBy=multi-user.target

Ricordati di modificare la riga:Environment="GOMAXPROCS=1 sostituendo 1 con il numero di vcpus sul tuo server.

8. Modifica autorizzazioni directory

Cambia la proprietà di queste directory in utente e gruppo Prometheus:

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

9. Ricarica systemd Daemon e avvia il servizio

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

Controlla lo stato utilizzando systemctl status prometheus comando:

10. Configura un firewall per aprire la porta 9090

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

Una volta completata la configurazione, puoi accedere all'interfaccia utente di Prometheus accedendo a http://:9090

Come monitorare le distribuzioni #MySQL con Prometheus e Grafana su ScaleGridFai clic per twittare

Installazione e configurazione di MySQL Prometheus Exporter

Prometheus richiede un esportatore per la raccolta delle metriche del server MySQL. Questo esportatore può essere eseguito centralmente sul server Prometheus o sul server di database. Per ulteriori letture, fai riferimento alla documentazione di Prometheus.

Segui i passaggi seguenti per installare e configurare MySQL Prometheus Exporter sull'host Prometheus centrale. Per maggiori dettagli, fare riferimento a questo articolo.

1. Scarica e installa 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. Crea un utente del database di Prometheus Exporter per accedere al database, raschiare le metriche e fornire sovvenzioni

CREATE USER 'mysqld_exporter'@'<PrometheusHostIP>' IDENTIFIED BY 'StrongPassword' WITH MAX_USER_CONNECTIONS 2;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'<PrometheusHostIP>';
FLUSH PRIVILEGES;
EXIT

CON MAX_USER_CONNECTIONS 2 viene utilizzato per impostare un limite massimo di connessione per l'utente per evitare di sovraccaricare il server con il monitoraggio di scraping sotto carico pesante.

3. Configura le credenziali del database

Modifica il file di configurazione dell'esportatore sull'host centrale:

$sudo vim /etc/.mysqld_exporter.cnf

Aggiungi il nome utente e la password dell'utente creato e il server ScaleGrid MySQL che desideri monitorare:

$sudo vim /etc/.mysqld_exporter.cnf

[client]
user=mysqld_exporter
password=StrongPassword
host=SG-mysqltestcluster-123456.servers.mongodirector.com

Imposta i permessi di proprietà:

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

4. Crea file unità systemd

Crea un nuovo file di servizio sull'host centrale:

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

Aggiungi il seguente contenuto:

 [Unit]
 Description=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
 
 [Install]
 WantedBy=multi-user.target

web.listen-address=0.0.0.0:9104 specifica che il server è in ascolto sulla porta 9104. Se il tuo server ha una rete pubblica e privata, potrebbe essere necessario sostituire 0.0.0.0:9104 con un IP privato, ad esempio – 192.168.4.5:9104.

Al termine, ricarica systemd e avvia il servizio mysql_exporter:

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

5. Configura MySQL Endpoint per essere raschiato da Prometheus

Apporta le modifiche come di seguito al file prometheus.yml:

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

Nota:se l'utilità di esportazione non è in esecuzione sullo stesso host di Prometheus, fornire l'indirizzo IP del server anziché localhost. 9104 si riferisce alla porta ascoltata da Prometeo, come specificato nel passaggio precedente.

Monitoraggio di più host MySQL da un host Prometheus centrale

È possibile monitorare più server MySQL da un server centrale. Ciò può essere ottenuto disponendo di un servizio di esportazione separato per ciascun server. Assicurati di creare i file .mysqld_exporter.cnf e mysql_exporter.service (con numeri di porta univoci assegnati al flag –web.listen-address) per ciascun servizio, come indicato nei passaggi 3 e 4 precedenti. Aggiungi le destinazioni al file prometheus.yml come indicato nel passaggio 5 sopra. I nomi dei lavori devono essere unici per ogni bersaglio. Ad esempio:

scrape_configs:
- job_name: mysql_server1
static_configs:
- targets: ['localhost:9104']
labels:
alias: db1
- job_name: mysql_server2
static_configs:
- targets: ['localhost:9105']
labels:
alias: db2
- job_name: mysql_server3
static_configs:
- targets: ['localhost:9106']
labels:
alias: db3

Nota:il server Prometheus dovrebbe essere in grado di raggiungere gli obiettivi tramite la rete. Assicurati che le tue configurazioni di rete/firewall siano state modificate di conseguenza.

Installazione di Grafana e creazione di dashboard

Grafana utilizza Prometheus come origine dati, consentendoti di creare dashboard per visualizzare e comprendere meglio le tue metriche. Fornisce un ottimo modo per ottenere informazioni dettagliate sui dati delle serie temporali.

Segui i passaggi seguenti per installare Grafana sul tuo host Prometheus centrale.

1. Scarica l'ultima versione di Grafana

Vai alla pagina Download Grafana per scaricare l'ultima versione.

$wget <debian package url>
$sudo apt-get install -y adduser libfontconfig1
$sudo dpkg -i grafana_<version>_amd64.deb

2. Scarica il repository APT e installa Grafana

Il comando add-apt-repository non è un'app predefinita su Debian 9 e richiede:

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

Installa il repository per le versioni stabili:

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

C'è un repository separato se vuoi versioni beta:

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

Usa la riga sopra anche se sei su Ubuntu o su un'altra versione di Debian. Quindi aggiungi la nostra chiave gpg. Ciò ti consente di installare pacchetti firmati:

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

Aggiorna i tuoi repository Apt e installa Grafana:

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

3. Avvia il Servizio

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

Abilita il servizio systemd in modo che Grafana si avvii all'avvio:

$sudo systemctl enable grafana-server.service

Per eseguire Grafana, apri il browser e vai a http://:3000/ . 3000 è la porta http che Grafana ascolta, per impostazione predefinita.

4. Aggiunta di un'origine dati

Una volta installato, accedi alla dashboard dell'amministratore e vai a Configurazione> Origini dati. Fare clic su Aggiungi origine dati, selezionare Prometeo in Database delle serie temporali e compilare i campi Nome e URL.

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

Nota:se il server Prometheus non è in esecuzione sullo stesso host di Grafana, fornisci l'indirizzo IP del server invece di localhost.

Ora sei pronto per creare e personalizzare dashboard per il monitoraggio di MySQL. Puoi creare una nuova dashboard facendo clic sul collegamento sul lato destro del selettore della dashboard. Una volta creata la dashboard, puoi aggiungere pannelli scegliendo le metriche da visualizzare, contrassegnare la dashboard, salvarla e condividerla. Per istruzioni dettagliate, puoi fare riferimento alla documentazione introduttiva di Grafana.

Ecco un esempio di dashboard Grafana creato per un'implementazione MySQL su ScaleGrid:

La dashboard Grafana sopra mostra le metriche MySQL Select Types, MySQL Client Thread Activity, MySQL Network Usage Hours e MySQL Table Locks visualizzate nei grafici, e la dashboard Grafana sottostante mostra MySQL Top Contatori di comandi e contatori di comandi migliori di MySQL ogni ora.

Cerchiamo sempre di semplificare la vita dei nostri utenti, quindi facci sapere di qualsiasi altro strumento che desideri connettere alle tue distribuzioni ScaleGrid tramite il nostro commenti o via Twitter a @scalegridio.