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

Detaillierte Schritte zum Einrichten des Hosts Nginx + Docker WordPress Mysql

Umfeld Linux 3.10.0-693.el7.x86_64 Docker-Version...

So passen Sie mit CSS einen schöneren Link-Prompt-Effekt an

Vorschlag: Das möglichst häufige handschriftliche ...

Zwei Möglichkeiten zum Erstellen eines privaten GitLab mit Docker

Die erste Methode: Docker-Installation 1. Ziehen ...

Beispielcode für HTML-Layout links und rechts

CSS: Code kopieren Der Code lautet wie folgt: html...

Beheben von Problemen mit hoher MySQL-CPU-Auslastung

Hohe CPU-Last durch MySQL Heute Nachmittag habe i...

Warum MySQL große Transaktionen vermeiden sollte und wie man sie löst

Was ist eine große Sache? Transaktionen, die über...

Anweisungen zur Verwendung von JSON-Operationsfunktionen in Mysql5.7

Vorwort JSON ist ein leichtes Datenaustauschforma...

Lösung für das Fehlen einer chinesischen Eingabemethode in Ubuntu

Es gibt keine Lösung für die chinesische Eingabem...

So verwenden Sie JSX in Vue

Was ist JSX JSX ist eine Syntaxerweiterung von Ja...