La surveillance des performances de votre base de données MySQL en temps réel vous aide à identifier immédiatement les problèmes et les autres facteurs qui pourraient être à l'origine de problèmes actuels ou futurs. C'est également un bon moyen de déterminer quels composants de la base de données peuvent être améliorés ou optimisés pour augmenter votre efficacité et vos performances. Cela se fait généralement par le biais de logiciels et d'outils de surveillance intégrés au logiciel de gestion de base de données ou installés par des fournisseurs tiers.
Prometheus est une application logicielle open source utilisée pour la surveillance et l'alerte des événements. Il peut être utilisé avec un outil de visualisation comme Grafana pour créer et modifier facilement des tableaux de bord, interroger, visualiser, alerter et comprendre vos métriques. ScaleGrid fournit un accès administrateur complet à vos déploiements MySQL, ce qui facilite l'intégration de l'écosystème d'outils MySQL existant avec vos déploiements ScaleGrid MySQL sur AWS ou Azure. Prometheus fonctionne bien pour enregistrer n'importe quelle série chronologique purement numérique et offre également un support pour la collecte et l'interrogation de données multidimensionnelles. Grafana peut être utilisé avec lui pour créer des tableaux de bord qui aident à visualiser ces données d'une manière facile à interpréter et à utiliser. Ces outils fourniront des informations supplémentaires sur vos métriques, vos modèles d'utilisation et vos ensembles de données, ainsi que sur votre surveillance MySQL ScaleGrid, l'analyse des requêtes et les alertes. Dans cet article de blog, nous expliquons comment vous pouvez configurer et utiliser Prometheus et Grafana avec vos déploiements ScaleGrid MySQL pour une surveillance et une alerte avancées de la base de données.
Comment configurer votre surveillance MySQL
Passons en revue les étapes d'installation et de configuration du serveur Prometheus pour stocker et afficher les métriques, un exportateur (MySQL Exporter dans ce cas) pour collecter les métriques et les relayer vers le serveur Prometheus, et Grafana pour créer des tableaux de bord. L'outil MySQL Exporter peut être installé localement sur un serveur MySQL ou de manière centralisée sur le serveur Prometheus. Dans le cas d'utilisation ci-dessous, nous expliquerons comment configurer et commencer à utiliser Prometheus, MySQL Exporter et Grafana à partir d'un hôte central fonctionnant sur Ubuntu pour surveiller plusieurs serveurs MySQL. Vous pouvez également consulter les instructions détaillées dans notre document d'aide Prometheus et Grafana pour MySQL.
Le schéma fonctionnel ci-dessous montre la configuration d'un déploiement MySQL maître-esclave-quorum qui comprend deux nœuds porteurs de données (maître et esclave) et un membre votant (quorum) utilisant le MySQL Exporter, hôte Prometheus et Grafana :
Installation et configuration du serveur Prometheus
Prometheus est l'outil que nous utiliserons pour centraliser et stocker vos métriques MySQL. Il récupère les métriques d'un ou plusieurs exportateurs à intervalles réguliers et les affiche sur son interface utilisateur. Vous trouverez ci-dessous les étapes pour installer et configurer Prometheus sur un hôte Ubuntu central. Pour plus de détails, vous pouvez consulter cet article.
1. Créer un groupe et un utilisateur du système Prometheus
$sudo groupadd --system prometheus$sudo useradd -s /sbin/nologin --system -g prometheus prometheus
2. Créer un répertoire de données pour Prometheus
$sudo mkdir /var/lib/prometheus
3. Créer des répertoires de configuration pour Prometheus
$for i dans les règles rules.d files_sd ; faites sudo mkdir -p /etc/prometheus/${i} ; terminé
4. Téléchargez l'archive Prometheus et extrayez le fichier
Pour télécharger la dernière archive binaire pour 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 \| couper -d '"' -f 4 \| wget -qi -
Pour extraire le fichier :
$tar xvf prometheus*.tar.gz$cd prometheus*/
5. Déplacez les fichiers Prometheus vers des emplacements standard
Déplacer les fichiers binaires Prometheus vers /usr/local/bin :
$sudo mv prometheus promtool /usr/local/bin/
Déplacer le modèle de configuration Prometheus vers le répertoire /etc :
$sudo mv prometheus.yml /etc/prometheus/prometheus.yml
Déplacez également les consoles et console_libraries vers le répertoire /etc/prometheus :
$sudo mv consoles/ console_libraries/ /etc/prometheus/
6. Créer/modifier un fichier de configuration Prometheus
Les configurations du modèle doivent ressembler à celles ci-dessous :
$cat /etc/prometheus/prometheus.yml #my global config global:scrape_interval:15s # Définir l'intervalle de scrape à toutes les 15 secondes. La valeur par défaut est toutes les 1 minute. evaluation_interval:15s # Évalue les règles toutes les 15 secondes. La valeur par défaut est toutes les 1 minute. #scrape_timeout est défini sur la valeur globale par défaut (10 s). # Alerte de configuration d'Alertmanager :alertmanagers :- static_configs :- cibles :#- alertmanager :9093 # Chargez les règles une fois et évaluez-les périodiquement en fonction de l'« intervalle d'évaluation » global. rule_files :#- "first_rules.yml" #- "second_rules.yml" #Une configuration de scrape contenant exactement un endpoint à scraper :#Ici c'est Prometheus lui-même. scrape_configs :#Le nom de la tâche est ajouté en tant qu'étiquette `job=` à toutes les séries temporelles récupérées à partir de cette configuration. - job_name :'prometheus' #metrics_path par défaut à '/metrics' #scheme par défaut à 'http'. static_configs :- cibles :['localhost:9090']
7. Créer un fichier d'unité de service Prometheus systemd
$sudo vim /etc/systemd/system/prometheus.service
Ajoutez le contenu suivant :
[Unité] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple Environment="GOMAXPROCS=1" Utilisateur=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
N'oubliez pas de modifier la ligne :Environnement=”GOMAXPROCS=1 en remplaçant 1 par le nombre de vcpus sur votre serveur.
8. Modifier les autorisations du répertoire
Changez la propriété de ces répertoires en utilisateur et groupe Prometheus :
$for i dans les règles rules.d files_sd ; faire sudo chown -R prometheus:prometheus /etc/prometheus/${i} ; done$for i dans les règles rules.d files_sd; faites sudo chmod -R 775 /etc/prometheus/${i} ; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/
9. Recharger le démon systemd et démarrer le service
$sudo systemctl daemon-reload$sudo systemctl start prometheus$sudo systemctl enable prometheus
Vérifiez l'état à l'aide de systemctl status prometheus commande :
10. Configurer un pare-feu pour ouvrir le port 9090
$sudo firewall-cmd --add-port=9090/tcp --permanent$sudo firewall-cmd --reload
Une fois la configuration terminée, vous pouvez accéder à l'interface utilisateur Prometheus en vous connectant à http://
Comment surveiller les déploiements #MySQL avec Prometheus et Grafana à ScaleGridCliquez pour tweeter
Installation et configuration de l'exportateur MySQL Prometheus
Prometheus a besoin d'un exportateur pour collecter les métriques du serveur MySQL. Cet exportateur peut être exécuté de manière centralisée sur le serveur Prometheus ou sur le serveur de base de données. Pour en savoir plus, consultez la documentation Prometheus.
Suivez les étapes ci-dessous pour installer et configurer MySQL Prometheus Exporter sur l'hôte Prometheus central. Pour plus de détails, consultez cet article.
1. Téléchargez et installez 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. Créer un utilisateur de la base de données Prometheus Exporter pour accéder à la base de données, extraire les métriques et fournir des subventions
CREATE USER 'mysqld_exporter'@'' IDENTIFIED BY 'StrongPassword' WITH MAX_USER_CONNECTIONS 2;GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@' ';FLUSH PRIVILEGES;EXIT AVEC MAX_USER_CONNECTIONS 2 est utilisé pour définir une limite de connexion maximale pour l'utilisateur afin d'éviter de surcharger le serveur avec des éraflures de surveillance sous une charge importante.
3. Configurer les informations d'identification de la base de données
Modifiez le fichier de configuration de l'exportateur sur l'hôte central :
$sudo vim /etc/.mysqld_exporter.cnfAjoutez le nom d'utilisateur et le mot de passe de l'utilisateur créé et du serveur ScaleGrid MySQL que vous souhaitez surveiller :
$sudo vim /etc/.mysqld_exporter.cnf[client]user=mysqld_exporterpassword=StrongPasswordhost=SG-mysqltestcluster-123456.servers.mongodirector.comDéfinir les autorisations de propriété :
$sudo chown root:prometheus /etc/.mysqld_exporter.cnf4. Créer un fichier d'unité systemd
Créez un nouveau fichier de service sur l'hôte central :
$sudo vim /etc/systemd/system/mysql_exporter.serviceAjoutez le contenu suivant :
[Unit] Description=Prometheus MySQL Exporter After=network.target User=prometheus Group=prometheus [Service] Type=simple Restart=toujours 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.targetweb.listen-address=0.0.0.0:9104 spécifie que le serveur écoute sur le port 9104. Si votre serveur dispose d'un réseau public et privé, vous devrez peut-être remplacer 0.0.0.0:9104 par une adresse IP privée, par exemple - 192.168.4.5:9104.
Lorsque vous avez terminé, rechargez systemd et démarrez le service mysql_exporter :
$sudo systemctl daemon-reload$sudo systemctl enable mysql_exporter$sudo systemctl start mysql_exporter5. Configurer MySQL Endpoint pour qu'il soit récupéré par Prometheus
Apportez les modifications comme ci-dessous au fichier prometheus.yml :
scrape_configs : nom_travail :mysql_server1static_configs : cibles :['localhost :9104']labels :alias :db1Remarque :Si l'exportateur ne s'exécute pas sur le même hôte que Prometheus, fournissez l'adresse IP du serveur au lieu de localhost. 9104 fait référence au port que Prometheus écoute, comme spécifié à l'étape précédente.
Surveillance de plusieurs hôtes MySQL à partir d'un hôte Prometheus central
Plusieurs serveurs MySQL peuvent être surveillés à partir d'un serveur central. Ceci peut être réalisé en ayant un service d'exportation séparé pour chaque serveur. Assurez-vous de créer les fichiers .mysqld_exporter.cnf et mysql_exporter.service (avec des numéros de port uniques attribués à l'indicateur –web.listen-address) pour chaque service, comme indiqué aux étapes 3 et 4 ci-dessus. Ajoutez des cibles au fichier prometheus.yml comme mentionné à l'étape 5 ci-dessus. Les noms de tâche doivent être uniques pour chaque cible. Par exemple :
scrape_configs : nom_travail :mysql_server1static_configs : cibles :['localhost :9104']labels :alias :db1- nom_travail :mysql_server2static_configs : - cibles :['localhost :9105']labels :alias :db2- nom_travail :mysql_server3static_configs :- cibles :['localhost:9106']étiquettes :alias :db3Remarque :Prometheus Server doit pouvoir atteindre les cibles sur le réseau. Assurez-vous que les configurations de votre réseau/pare-feu ont été modifiées en conséquence.
Installation de Grafana et création de tableaux de bord
Grafana utilise Prometheus comme source de données, vous permettant de créer des tableaux de bord pour mieux visualiser et comprendre vos métriques. C'est un excellent moyen d'avoir un aperçu de vos données de séries chronologiques.
Suivez les étapes ci-dessous pour installer Grafana sur votre hôte Prometheus central.
1. Téléchargez la dernière version de Grafana
Allez sur la page Télécharger Grafana pour télécharger la dernière version.
$wget$sudo apt-get install -y adduser libfontconfig1$sudo dpkg -i grafana_ _amd64.deb 2. Téléchargez le référentiel APT et installez Grafana
La commande add-apt-repository n'est pas une application par défaut sur Debian 9 et nécessite :
$apt-get install -y software-properties-commonInstallez le référentiel pour les versions stables :
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"Il existe un référentiel séparé si vous souhaitez des versions bêta :
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb beta main"Utilisez la ligne ci-dessus même si vous êtes sur Ubuntu ou une autre version de Debian. Ajoutez ensuite notre clé gpg. Cela vous permet d'installer des packages signés :
$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key ajouter -Mettez à jour vos référentiels Apt et installez Grafana :
$sudo apt-get update$sudo apt-get install grafana3. Démarrer le service
$systemctl daemon-reload$systemctl start grafana-server$systemctl status grafana-serverActivez le service systemd pour que Grafana démarre au démarrage :
$sudo systemctl enable grafana-server.servicePour exécuter Grafana, ouvrez votre navigateur et accédez à http://
:3000/ . 3000 est le port http que Grafana écoute, par défaut.4. Ajouter une source de données
Une fois installé, connectez-vous au tableau de bord d'administration et accédez à Configuration > Sources de données. Cliquez sur Ajouter une source de données, sélectionnez Prometheus sous Bases de données de séries chronologiques et remplissez les champs Nom et URL.
Nom :Prometheus-1 URL :http://localhost:9090
Remarque :Si le serveur Prometheus ne s'exécute pas sur le même hôte que Grafana, fournissez l'adresse IP du serveur au lieu de localhost.
Vous êtes maintenant prêt à créer et personnaliser des tableaux de bord pour votre surveillance MySQL. Vous pouvez créer un nouveau tableau de bord en cliquant sur le lien sur le côté droit du sélecteur de tableau de bord. Une fois le tableau de bord créé, vous pouvez ajouter des panneaux en choisissant les métriques à afficher, mettre en vedette le tableau de bord, l'enregistrer et le partager. Pour des instructions détaillées, vous pouvez vous référer à la documentation de démarrage de Grafana.
Voici un exemple de tableau de bord Grafana créé pour un déploiement MySQL chez ScaleGrid :
Le tableau de bord Grafana ci-dessus affiche les types de sélection MySQL, l'activité des threads du client MySQL, l'utilisation du réseau MySQL par heure et les métriques de verrouillage de table MySQL visualisées dans les graphiques, et le tableau de bord Grafana ci-dessous affiche MySQL Top Compteurs de commandes et compteurs de commandes MySQL supérieurs toutes les heures.
Nous cherchons toujours à faciliter la vie de nos utilisateurs, alors faites-nous part de tout autre outil que vous souhaiteriez connecter à vos déploiements ScaleGrid via notre commentaires ou via Twitter à @scalegridio.