Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment surveiller les déploiements MySQL avec Prometheus et Grafana chez ScaleGrid

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

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.cnf

Ajoutez 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.com

Définir les autorisations de propriété :

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

4. 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.service

Ajoutez 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.target 

web.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_exporter

5. 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 :db1

Remarque :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 :db3

Remarque :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-common

Installez 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 grafana

3. Démarrer le service

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

Activez le service systemd pour que Grafana démarre au démarrage :

$sudo systemctl enable grafana-server.service

Pour 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.