Zabbix implementiert die Überwachung mehrerer MySQL-Prozesse

Zabbix implementiert die Überwachung mehrerer MySQL-Prozesse

Auf einem Server werden drei MySQL-Instanzprozesse gestartet, die unterschiedliche Ports belegen: 3306, 3307 und 3308

Prinzipbeschreibung:

Der Port der MySQL-Instanz wird über die Regel zur automatischen Erkennung ermittelt. Der {$MYSQLPORT} in der Regel zur automatischen Erkennung ist ein Parameter, der an das Skript zur automatischen Erkennung des Agenten übergeben wird. Dieser Wert wird aus dem vom Host definierten Makro {$MYSQLPORT} ermittelt. Das Skript zur automatischen Erkennung analysiert ihn in die Form {#MYSQLPORT}: Port. Der Prototyp des Überwachungselements generiert dann das Überwachungselement basierend auf dem Wert von {#MYSQLPORT}. Der allgemeine Prozess ist wie folgt:

Hostdefinitionsmakro {$MYSQLPORT}->Schlüssel der automatischen Erkennungsregel {$MYSQLPORT}->Aufruf des Skripts zur automatischen Erkennung auf dem Agenten und Analysieren in {#MYSQLPORT}: Port->Prototyp des Überwachungselements {#MYSQLPORT}->Automatisches Generieren eines Hostüberwachungselements

1. Operationen auf MySQL-Multiinstanzservern

1. Autorisieren Sie Zabbix, das MySQL-Konto zu überwachen, was in jedem Fall erforderlich ist.

Das Konto hier ist zabbixagent und das Passwort ist: Zabbix131

GRANT USAGE, PROCESS, REPLICATION CLIENT, REPLICATION SLAVE ON *.* AN ‚zabbixagent‘@‚localhost‘ IDENTIFIZIERT DURCH ‚Zabbix131‘;
Berechtigungen leeren;

2. Ändern Sie die Konfigurationsdatei zabbix_agentd.conf

Letzte Positionserhöhung

     UnsafeUserParameters=1
     EnableRemoteCommands=1
     Include=/etc/zabbix/etc/zabbix_agentd.conf.d/*.conf
[root@mysql zabbix]# vi /etc/zabbix/etc/zabbix_agentd.conf
     UnsafeUserParameters=1
     EnableRemoteCommands=1
     Include=/etc/zabbix/etc/zabbix_agentd.conf.d/*.conf

3. Konfigurationsdateien hinzufügen

[root@mysql usw.]# vim /etc/zabbix/etc/zabbix_agentd.conf.d/check_mysql.conf
     UserParameter=mysql_discovery[*],/etc/zabbix/bin/discovery_mysql.sh $1 ###Automatisch verschiedene Ports erkennen UserParameter=mysql.status[*],/etc/zabbix/bin/mysql_status.sh $1 $2 ###Informationen zur Leistungsüberwachung UserParameter=mysql.ping[*],/etc/zabbix/bin/mysql_alive.sh $1 ### Ist es aktiv? UserParameter=mysql.ms.check[*],/etc/zabbix/bin/mysql_slave_status.sh $1 ### Ist der Slave-Status normal? UserParameter=mysql.ms.time[*],/etc/zabbix/bin/mysql_slave_time.sh $1 ### Gibt es eine Verzögerung im Slave

4. Ausführungsskriptdatei hinzufügen

[root@mysql usw.]# ll /etc/zabbix/bin/
insgesamt 716
     -rwxr-xr-x 1 root root 441 22. Juli 11:36 discovery_mysql.sh
     -rwxr-xr-x 1 root root 401 22. Juli 11:36 mysql_alive.sh
     -rwxr-xr-x 1 root root 303 22. Juli 15:10 mysql_slave_status.sh
     -rwxr-xr-x 1 root root 286 22. Juli 15:10 mysql_slave_time.sh
     -rwxr-xr-x 1 root root 299 22. Juli 11:36 mysql_status.sh
     -rwxr-xr-x 1 root root 370 22. Juli 11:36 mysql_version.sh
[root@mysql usw.]# mehr /etc/zabbix/bin/discovery_mysql.sh
     res=`echo $1| sed "s/_/\n/g"`;
     port=($res)
     druckenf '{\n'
     printf '\t"Daten":[\n'
     für Schlüssel in ${!port[@]}
     Tun
       wenn [[ "${#port[@]}" -gt 1 und "${key}" -ne "$((${#port[@]}-1))" ]];
     Dann
         printf '\t {\n'
         printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"
     sonst [[ "${key}" -eq "((${#port[@]}-1))" ]]
         printf '\t {\n'
         printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
     fi
     Erledigt
     printf '\t ]\n'
     printf '}\n'
[root@mysql usw.]# mehr /etc/zabbix/bin/mysql_status.sh
     #!/bin/bash
     var=$1
     mysql=/usr/local/mysql/bin/mysql
     MYSQL_USER="zabbixagent"
     MYSQL_PASSWORD=Zabbix131
     MYSQL_SOCK_DIR="/tmp/mysql$2.sock"
     ${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} -e "globalen Status anzeigen;" 2> /dev/null |grep -v Variablenname|grep "\b${var}\b"|awk '{print $2}'
[root@mysql usw.]# mehr /etc/zabbix/bin/mysql_alive.sh
     #!/bin/bash
     mysqladmin=/usr/local/mysql/bin/mysqladmin
     MYSQL_USERdd="zabbixagent"
     MYSQL_PASSWORD=Zabbix131
     MYSQL_SOCK_DIR="/tmp/mysql$1.sock"
     ${mysqladmin} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} ping|grep -c alive
[root@mysql usw.]# mehr /etc/zabbix/bin/mysql_slave_status.sh
     #!/bin/bash
     #var=$1
     mysql=/usr/local/mysql/bin/mysql
     MYSQL_USERdd="zabbixagent"
     MYSQL_PASSWORD=Zabbix131
     MYSQL_SOCK_DIR="/tmp/mysql$1.sock"
     ${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} -e "Slave-Status anzeigen\G;" 2> /dev/null|grep -E 'Slave_IO_Running: Ja|Slave_SQL_Running: Ja'|grep -c Ja
[root@mysql usw.]# mehr /etc/zabbix/bin/mysql_slave_time.sh
     #!/bin/bash
     #var=$1
     mysql=/usr/local/mysql/bin/mysql
     MYSQL_USERdd="zabbixagent"
     MYSQL_PASSWORD=Zabbix131
     MYSQL_SOCK_DIR="/tmp/mysql$1.sock"
     ${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} -e "Slave-Status anzeigen\G;" 2> /dev/null|grep -E 'Seconds_Behind_Master'|awk '{print $2}'

5. Starten Sie zabbix_agentd neu

[root@mysql zabbix_agentd.d]# systemctl restart zabbix-agent

2. Operationen auf der Zabbix-Seite

1. Importieren Sie die Vorlageninformationen template_multi_MySQL.xml. Sie können auch auf die XML-Datei verweisen, um sie manuell hinzuzufügen.

2. Erstellen Sie automatische Erkennungsregeln für die Vorlage. In den automatischen Erkennungsregeln müssen zwei Dinge definiert werden:
a. Der Schlüsselwert wird verwendet, um automatisch den Port der MySQL-Instanz zu erhalten. Sie müssen das Host-Makro {$MYSQLPORT} verwenden.

b. Der Überwachungselementprototyp generiert das entsprechende Überwachungselement entsprechend dem erhaltenen Port und das automatische Erkennungsmakro {#MYSQLPORT} ist erforderlich.

3. Fügen Sie die neu erstellte Vorlage dem zu überwachenden Host hinzu

4. Definieren Sie auf dem zu überwachenden Host ein Makro {$MYSQLPORT}, das dem zu überwachenden Port entspricht, z. B. 3306_3307_3308

3. Warten Sie, bis die Datenerfassung abgeschlossen ist. Wenn keine Daten vorliegen, testen Sie die spezifischen

Wenn Sie beispielsweise Vorgänge auf dem Zabbixserver ausführen, etwa testen, ob MySQL 3306 aktiv ist, bedeutet 1 aktiv und 0 inaktiv.

Der endgültige Effekt ist

Zabbix131

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So überwachen Sie MySQL mit Zabbix
  • Detailliertes Tutorial zur Überwachung von Nginx/Tomcat/MySQL mit Zabbix
  • Detaillierte Erklärung, wie Zabbix den Master-Slave-Status von MySQL überwacht
  • So überwachen Sie MySQL mit dem Percona-Plugin in Zabbix
  • Zabbix 2.4.5 enthält ein Tutorial zur MySQL-Überwachungskonfiguration
  • Grundlegendes Tutorial zur Installation und Konfiguration von Zabbix zur Überwachung von MySQL
  • Zabbix überwacht die MySQL-Instanzmethode

<<:  Umfassende Interpretation der MySQL Master-Slave-Replikation, vom Prinzip bis zur Installation und Konfiguration

>>:  So verwenden Sie wangEditor in Vue und erhalten durch Echo von Daten den Fokus

Artikel empfehlen

JavaScript-OffsetParent-Fallstudie

1. Definition von offsetParent: offsetParent ist ...

Praktische Methode zum Upgrade von PHP auf 5.6 unter Linux

1: Überprüfen Sie die PHP-Version nach dem Aufruf...

Steuern Sie die vertikale Mitte des Textes im HTML-Textfeld über CSS

Wenn das Höhenattribut von Text definiert ist, wir...

mysql5.7.21 UTF8-Kodierungsproblem und -Lösung in der Mac-Umgebung

1. Ziel: Ändern Sie den Wert des character_set_se...

Verwenden von JavaScript-Unterschieden zum Implementieren eines Vergleichstools

Vorwort Bei der Arbeit muss ich jede Woche die vo...

Zusammenfassung und Analyse häufig verwendeter Docker-Befehle und Beispiele

Inhalt 1. Container-Lebenszyklusmanagement (1) Do...

Beispiel für eine CSS3-Tab-Animation mit dynamischem Hintergrundwechseleffekt

CSS 3-Animationsbeispiel - Dynamischer Effekt des...

TimePicker im Element deaktiviert einen Teil der Zeit (deaktiviert auf Minuten)

Die Projektanforderungen lauten: Datum und Uhrzei...

Erläuterung der Faktoren, die die Datenbankleistung in MySQL beeinflussen

Eine Geschichte über die Datenbankleistung Währen...

Spezifische Verwendung des Node.js-Paketmanagers npm

Inhaltsverzeichnis Zweck npm init und package.jso...

Einfache Verwendung des Vue Vee-Validate-Plugins

Inhaltsverzeichnis 1. Installation 2. Import 3. V...

Häufig verwendete HTML-Meta-Enzyklopädie (empfohlen)

Der Meta-Tag ist ein Hilfstag im Head-Bereich der...