Découvrez automatiquement les disques Linux basés sur zabbix4.2 et surveillez les E / S des disques Linux

Aperçu

Aujourd'hui, je vais principalement vous présenter comment utiliser zabbix pour découvrir automatiquement les disques Linux et surveiller les E / S des disques. Jetons un coup d'il ~

1. Principe de contrôle

La principale source de données sur les performances du disque est / proc / diskstats. Commençons par comprendre la signification de ceci et les données du répertoire:

La signification de chaque champ de diskstats:

Explication officielle: https://www.kernel.org/doc/Documentation/iostats.txt

A B C 12 34 56 78 910118 16 sdb 11368677107704472654482257721886121840427042984520 51952363852

La description:

A: Numéro d'équipement principal

B: numéro d'appareil mineur

C: nom de l'appareil

1: Nombre de lectures terminées ----- Nombre de lectures de disque, le nombre total de lectures réussies.

2: Le nombre de lectures combinées terminées, le sixième champ: le nombre d'écritures combinées terminées. Peut fusionner les lectures et écritures adjacentes pour plus d'efficacité. En conséquence, deux lectures 4K peuvent devenir une lecture 8K avant qu'elle ne soit finalement traitée sur le disque, qui est compté (et mis en file d'attente), il n'y a donc qu'une seule opération d'E / S. Ce champ vous permet de savoir à quelle fréquence ces opérations sont effectuées.

3: Le nombre de secteurs lus, le nombre total de secteurs lus avec succès.

4: Le nombre de millisecondes passées en lecture, qui est le nombre de millisecondes passées sur toutes les opérations de lecture (mesuré avec __make_request () à end_that_request_last ())

5: Nombre d'écritures terminées ---- Le nombre d'écritures terminées, le nombre total d'écritures réussies.

6: Nombre d'écritures combinées terminées ----- Nombre d'écritures combinées

7: Nombre de secteurs d'écriture ---- Nombre de secteurs d'écriture, nombre total d'écritures de secteur réussies.

8: Le nombre de millisecondes passées dans les opérations d'écriture --- Le nombre de millisecondes dépensées dans les opérations d'écriture, qui est le nombre de millisecondes passées dans toutes les opérations d'écriture (mesuré avec __make_request () à end_that_request_last ())

9: Le nombre de demandes d'entrée / sortie en cours de traitement - La progression actuelle des E / S, seul ce champ doit être égal à 0. Augmenter lorsque la demande est transmise au request_queue_t approprié et diminuer lorsque la demande est terminée

10: Le nombre de millisecondes passées dans les opérations d'entrée / sortie ---- Le nombre de millisecondes passées dans les opérations d'E / S, ce champ augmentera tant que le champ 9 n'est pas 0.

11: Le nombre de millisecondes pondérées consacrées aux opérations d'entrée / sortie ----- pondéré, le nombre de millisecondes consacrées aux opérations d'E / S, chaque fois que les E / S démarrent, les E / S se terminent, ce champ sera modifié lors de la fusion des E / S augmenter. Cela peut fournir une mesure pratique du temps d'achèvement des E / S et du stockage qui peut être accumulé.

Deux, configurez zabbix-agent

1. Modifiez le fichier de configuration côté zabbix-agent

# vi /etc/zabbix/zabbix_agentd.conf ================================================== =========================================== UnsafeUserParameters = 1 # Remplacez cette valeur par 1, car le script détecté automatiquement contient des caractères spéciaux qui sont considérés comme des facteurs non sécurisés.1 signifie que ces caractères sont autorisés à exister # Si vous ne le modifiez pas, une erreur sera signalée plus tard côté serveur, et la raison est ici ================================================== =========================================== # vi /etc/zabbix/zabbix_agentd.d/DiskIO.conf ================================================== =========================================== # La première ligne est le chemin du script de découverte automatique UserParameter = disk.discovery, / etc / zabbix / zabbix_agentd.d / disk_discovery.sh # La deuxième ligne est le chemin du script pour détecter les E / S disque UserParameter = disk.status, / etc / zabbix / zabbix_agentd.d / disk_status.sh $ 1 $ 2 ================================================== ===========================================

2. Script de configuration

2.1, script de découverte de disque automatique

vim /etc/zabbix/zabbix_agentd.d/disk_discovery.sh

#! / bin / bash diskarray = (`cat / proc / diskstats | grep -E" \ bsd \ b | \ bxvd \ b "| grep -i" \ b $ 1 \ b "| awk '{print $ 3}' | sort | uniq 2 > / dev / null`) length = $ {# diskarray} printf "{\ n" printf '\ t' "\" data \ ":; puis printf ',' Fi terminé printf "\ n \ t> \ n" printf "} \ n"

2.2. Script pour détecter l'état du disque

vim /etc/zabbix/zabbix_agentd.d/disk_status.sh

# / bin / sh appareil = 1 $ DISQUE = 2 $ case $ DISK dans read.ops) / bin / cat / proc / diskstats | grep "\ b $ périphérique \ b" | head -1 | awk '{print $ 4}' # // Nombre de lectures de disque ;; read.merged) / bin / cat / proc / diskstats | grep "\ b $ device \ b" | head -1 | awk '{print $ 5}' # // Nombre de lectures combinées terminées ;; read.sectors) / bin / cat / proc / diskstats | grep "\ b $ device \ b" | head -1 | awk '{print $ 6}' # // Nombre de secteurs de lecture (un secteur est égal à 512B) ;; read.ms) / bin / cat / proc / diskstats | grep "\ b $ périphérique \ b" | head -1 | awk '{print $ 7}' # // disque lu en millisecondes ;; write.ops) / bin / cat / proc / diskstats | grep "\ b $ device \ b" | head -1 | awk '{print $ 8}' # // Nombre d'écritures sur le disque ;; write.merged) / bin / cat / proc / diskstats | grep "\ b $ device \ b" | head -1 | awk '{print $ 9}' # // Fusionner les heures de fin d'écriture ;; write.sectors) / bin / cat / proc / diskstats | grep "\ b $ device \ b" | head -1 | awk '{print $ 10}' # // Nombre de secteurs d'écriture (un secteur est égal à 512B) ;; write.ms) / bin / cat / proc / diskstats | grep "\ b $ device \ b" | head -1 | awk '{print $ 11}' # // Le nombre de millisecondes d'écriture sur le disque ;; io.active) / bin / cat / proc / diskstats | grep "\ b $ device \ b" | head -1 | awk '{print $ 12}' # // La progression actuelle des E / S, ;; io.ms) / bin / cat / proc / diskstats | grep "\ b $ device \ b" | head -1 | awk '{print $ 13}' # // Le nombre de millisecondes consacrées aux opérations d'E / S ;; esac

3. Redémarrez le service de l'agent après l'autorisation:

chown -R zabbix: zabbix / etc / zabbix / systemctl redémarrer zabbix-agent

4. Tester et obtenir des données sur le serveur

# zabbix_get -s IP du serveur -p 10050 -k disk.discovery # zabbix_get -s IP du serveur -p 10050 -k disk.status

Troisièmement, le fonctionnement côté Web du serveur zabbix

1. Créez un modèle

Configuration - modèle - créer un modèle

2. Configurer les règles de découverte automatique

2.1, créer une règle de découverte

Règle de découverte de création de modèle de configuration

2.2, créer un prototype d'éléments de surveillance

Sélectionnez cette option pour créer un prototype de surveillance dans la règle de découverte automatique.

Notez qu'il s'agit de l'élément défini dans le prototype de l'élément dans la règle de détection automatique du modèle. L'élément défini dans le prototype n'est pas l'élément du modèle. Les deux sont différents. Lorsque vous définissez le prototype de l'élément, vous découvrirez automatiquement les règles qu'il contient, puis automatiquement Ajouter l'élément de surveillance

Nom: {#DISK_NAME} I / 0 heure de la demande Valeur clé: disk.status Unité: ms Processus: changements par seconde Nom: {#DISK_NAME} I / 0 demandes Valeur clé: disk.status Unité: ops / seconde Processus: changements par seconde Nom: {#DISK_NAME} le nombre de fois où la fusion a été écrite Valeur clé: disk.status Unité: ops / seconde Processus: changements par seconde Nom: {#DISK_NAME} nombre de lectures combinées terminées Valeur clé: disk.status Unité: ops / seconde Processus: changements par seconde Nom: {#DISK_NAME} nombre de secteurs d'écriture sur disque Valeur clé: disk.status Unité: B / sec Utiliser un multiple personnalisé: 512 Processus: changements par seconde Nom: {#DISK_NAME} Heures d'écriture sur le disque Valeur clé: disk.status Unité: ops / seconde Processus: changements par seconde Nom: {#DISK_NAME} Écriture sur disque en millisecondes Valeur clé: disk.status Unité: ms Processus: changements par seconde Nom: numéro de secteur de lecture du disque {#DISK_NAME} Valeur clé: disk.status Unité: B / sec Utiliser un multiple personnalisé: 512 Processus: changements par seconde Nom: temps de lecture du disque {#DISK_NAME} Valeur clé: disk.status Unité: ops / seconde Processus: changements par seconde Nom: {#DISK_NAME} Lecture du disque en millisecondes Valeur clé: disk.status Unité: ms Processus: changements par seconde

2.3. Le prototype final des éléments de suivi

3. Hôte associé au modèle

4. Test

4.1, afficher les éléments de surveillance

Dans l'élément configuration-host-monitoring, vous pouvez voir que la clé dynamique que nous avons définie a été générée, et la clé invalide sera automatiquement supprimée lorsqu'elle expirera

4.2, afficher les dernières données

Dans la surveillance des dernières données, vous pouvez également voir que les données ont été obtenues

4.3, voir les graphiques

Dans les graphiques de surveillance, vous pouvez afficher les graphiques d'E / S de disque

Si vous le trouvez utile, aidez-le à le transmettre! Je partagerai plus de contenu devops et DBA plus tard, et les amis intéressés pourront y prêter attention ~

Partagez une solution standard de reconstruction de vues matérialisées Oracle, digne de collecte
Précédent
mysql a accidentellement supprimé le fichier frm et le fichier ibd de la table de base de données? Essayez de récupérer comme ça
Prochain
expérience mysql - supprimé par erreur une table de base de données fichier .frm, mais le fichier existe .ibd comment restaurer?
Implémentation de la surveillance de l'état de la connexion TCP du serveur Linux basée sur zabbix4.2
Python pratique quotidienne table de multiplication neuf neuf
Partagez un mil monter en flèche WEB outil graphique open source - une optimisation clé sql support
Python pratique quotidienne comment copier
D'une expérience mysql pour voir l'autorisation performance_schema / information_schema
Partager Xiaomi soar outil d'optimisation en un clic -Optimisation SQL et outil d'automatisation de réécriture
Python pratique quotidienne d'un carré parfait
Est-ce un siège de première classe ou paresseux? Neuf robots débuts de la chaise électrique auto-équilibré CES 2020
Python pratique quotidienne tri à trois chiffres
Configurez l'application en fonction de l'état zabbix4.2 page web surveillance URL
Plus de 50000 yuans Kia Chi-hwan, amis: Par rapport à Volkswagen Polo, cette voiture n'est pas plus abordable