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://
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://
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.