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 51952363852La 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 ;; esac3. Redémarrez le service de l'agent après l'autorisation:
chown -R zabbix: zabbix / etc / zabbix / systemctl redémarrer zabbix-agent4. 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.statusTroisiè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 seconde2.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 ~