Zabbix überwacht die MySQL-Instanzmethode

Zabbix überwacht die MySQL-Instanzmethode

1. Überwachungsplanung

Bevor Sie ein Überwachungselement erstellen, sollten Sie sich genau überlegen, was und wie Sie überwachen, wie Sie die Überwachungsdaten speichern, wie Sie die Überwachungsdaten anzeigen, wie Sie mit Alarmen umgehen usw. Um ein Überwachungssystem zu planen, müssen Sie über gute Kenntnisse von Zabbix verfügen. Hier stellen wir nur die Überwachungsanforderungen vor.

Anforderung 1: Überwachen Sie den Status von MySQL und geben Sie einen Alarm aus, wenn der Status abnormal ist.

Anforderung 2: MySQL-Operationen überwachen und in Diagrammen darstellen;

2. Benutzerdefinierter Skriptüberwachungserweiterungs-Agent

Die Erfassung von Überwachungsdaten zwischen Zabbix-Server und Agent erfolgt hauptsächlich dadurch, dass der Zabbix-Server den Agent aktiv nach dem Wert eines Schlüssels fragt. Der Agent ruft die entsprechende Funktion entsprechend dem Schlüssel auf, um den Wert abzurufen und an den Server zurückzugeben. Der Zabbix 2.4.7-Agent verfügt nicht über eine integrierte MySQL-Überwachungsfunktion (der Server stellt jedoch die entsprechende Vorlagenkonfiguration bereit). Daher müssen wir die Benutzerparameterfunktion von Zabbix verwenden, um ein Überwachungsskript für MySQL hinzuzufügen.

3. MySQL-Anmeldebenutzer autorisieren (Agentenseite)

mysql> gewährt [email protected] Zugriff auf *.* und identifiziert sich durch „123456“;

mysql> Berechtigungen leeren;

4. Agentenkonfiguration

Überlebenserkennung

Verwenden Sie den UserParameter-Parameter, um den Agentenschlüssel anzupassen.
Für Anforderung 1 verwenden wir das Tool mysqladmin, um sie umzusetzen. Der Befehl lautet wie folgt:

# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping 
mysqld ist am Leben

Wenn der MySQL-Status normal ist, wird angezeigt, dass mysqld aktiv ist, andernfalls wird eine Meldung angezeigt, dass die Verbindung nicht hergestellt werden kann. Für die Serverseite sind Sätze wie „mysqld ist aktiv“ schwer zu verstehen. Für den Server ist es am besten, nur 1 und 0 zu erhalten. 1 bedeutet, dass der Dienst verfügbar ist, und 0 bedeutet, dass der Dienst nicht verfügbar ist. Verbessern Sie diesen Befehl dann wie folgt:

# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping |grep -c alive
1

Das Einfügen von Benutzername und Passwort in den Befehl ist für die zukünftige Wartung nicht sinnvoll. Daher erstellen wir unter /var/lib/zabbix/ eine Konfigurationsdatei „.my.cnf“, die den MySQL-Benutzernamen und das Passwort enthält, wie folgt:

Benutzer=zabbix
Host = 127.0.0.1
Passwort='123456'

Mit dieser Datei ändert sich der Befehl zu

HOME=/var/lib/zabbix/mysqladmin ping |grep -c lebendig
1

Nachdem Sie diesen Schritt abgeschlossen haben, müssen Sie nur noch diesen Überwachungsbefehl zum Zabbix-Agenten hinzufügen und ihn einem Schlüssel zuordnen, damit der Zabbox-Server über diesen Schlüssel den Status von MySQL abrufen kann. Wir verwenden mysql.ping als Schlüssel für den MySQL-Status.

Entfernen Sie zuerst /etc/zabbix/zabbix_agentd.conf

Kommentieren Sie die Zeile „Include=/etc/zabbix_agentd.d/“ aus.

Erstellen Sie zweitens die Datei userparameter_mysql.conf im Verzeichnis /etc/zabbix/zabbix_agentd.d/. Fügen Sie der Datei den folgenden Befehl hinzu:

Benutzerparameter = mysql.ping, HOME = /var/lib/zabbix mysqladmin ping | grep -c lebendig

Verwenden Sie den folgenden Befehl, um zu testen, ob es ordnungsgemäß funktioniert.

# /usr/sbin/zabbix_agentd -t mysql.ping
mysql.ping [t|1]

Weitere Leistungsindikatoren

1. Fügen Sie userparameter_mysql hinzu

vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

####Skript zur Überwachung der MySQL-Leistung UserParameter=mysql.status[*],/etc/zabbix/zabbix_agentd.d/check_mysql.sh $1

#####mysql-Version UserParameter=mysql.version,mysql -V

2.check_mysql.sh

#!/bin/bash
# -----------------------------------------------------------------------------------
# Dateiname: check_mysql.sh
# Revision: 1.0
# -----------------------------------------------------------------------------------
# Urheberrecht:
# Lizenz: GPL

# Benutzername MYSQL_USER = 'zabbix'

# Passwort MYSQL_PWD = 'zabbix@123'

# Hostadresse/IP
MYSQL_HOST='ip'

# Port MYSQL_PORT = '3306'

#Datenverbindung MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"

# Sind die Parameter korrekt? if [ $# -ne "1" ]; then
echo "Argumentfehler!"
fi

# Datenfall $1 abrufen in
Betriebszeit
Ergebnis=`${MYSQL_CONN} status 2>/dev/null |cut -f2 -d":"|cut -f1 -d"T"`
echo $ergebnis
;;
Com_update)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Com_update"|cut -d"|" -f3`
echo $ergebnis
;;
Langsame Abfragen
Ergebnis=`${MYSQL_CONN} status 2>/dev/null |cut -f5 -d":"|cut -f1 -d"O"`
echo $ergebnis
;;
(Com_Auswahl)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Com_select"|cut -d"|" -f3`
echo $ergebnis
;;
Com_rollback)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Com_rollback"|cut -d"|" -f3`
echo $ergebnis
;;
Fragen)
Ergebnis=`${MYSQL_CONN} status 2>/dev/null |cut -f4 -d":"|cut -f1 -d"S"`
echo $ergebnis
;;
Com_insert)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Com_insert"|cut -d"|" -f3`
echo $ergebnis
;;
Com_delete)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Com_delete"|cut -d"|" -f3`
echo $ergebnis
;;
Com_commit)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Com_commit"|cut -d"|" -f3`
echo $ergebnis
;;
Bytes_gesendet)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $ergebnis
;;
Bytes_empfangen)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Bytes_received" |cut -d"|" -f3`
echo $ergebnis
;;
Com_begin)
Ergebnis = `${MYSQL_CONN} erweiterter Status 2>/dev/null |grep -w "Com_begin"|cut -d"|" -f3`
echo $ergebnis
;;

*)
echo "Verbrauch:$0(Betriebszeit|Com_update|Langsame Abfragen|Com_select|Com_rollback|Fragen|Com_insert|Com_delete|Com_commit|Gesendete Bytes|Empfangene Bytes|Com_begin)"
;;
esac

3. Autorisierung:

chmod +x /etc/zabbix/zabbix_agentd.d/check_mysql.sh

Chown zabbix.zabbix /etc/zabbix/zabbix_agentd.d/check_mysql.sh

4. Test auf zabbix_agent:

zabbix_agentd -t mysql.ping

Bildbeschreibung hier einfügen

5. Zabbix_server-Test

zabbix_get -s ip -P port -k mysql.ping

Bildbeschreibung hier einfügen

5. Konfigurieren im Web

**Erstellen eines Hosts**

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Zugehörige Vorlagen

Bildbeschreibung hier einfügen

Überwachungselemente erstellen

Erstellen eines Diagramms


Überwachungsbilder ansehen

Mit dieser Konfiguration werden weitere Überwachungselemente ausgeführt

6. Zabbix wird mit MySQL-Überwachungselementen geliefert

version: Datenbankversion key_buffer_size: Indexpuffergröße von MyISAM sort_buffer_size: Sortierplatz der Sitzung (einer wird für jeden Thread angefordert)
join_buffer_size: Dies ist die minimale Puffergröße, die für Verbindungsvorgänge zugewiesen wird. Diese Verbindungen verwenden normale Index-Scans, Bereichs-Scans oder Verbindungen, die keine Indizes anwenden. max_connections: Die maximal zulässige Anzahl gleichzeitiger Verbindungen. max_connect_errors: Die maximal zulässige Anzahl fehlerhafter Verbindungen für einen Host. Bei Überschreitung werden nachfolgende Verbindungen abgelehnt (Standard: 100). Mit dem Befehl „flush hosts“ können Sie die Ablehnung von „open_files_limits“ entfernen: die Anzahl der Dateien, die das Betriebssystem MySQL öffnen lässt. Sie können anhand des Status von „opened_tables“ feststellen, ob Sie „table_open_cache“ erhöhen müssen. Wenn „opened_tables“ relativ groß ist und weiter zunimmt, bedeutet dies, dass Sie „table_open_cache“ erhöhen müssen.
max-heap_tables_size: Die maximale Größe der erstellten Speichertabelle (Standard 16 MB). Dieser Parameter und tmp_table_size begrenzen zusammen den Maximalwert der internen temporären Tabelle (nehmen Sie den kleineren der beiden Parameter). Wenn der Grenzwert überschritten wird, wird die Tabelle in die InnoDB- oder Myisam-Engine geändert (vor 5.7.5 ist Myisam der Standardwert und ab 5.7.6 ist es InnoDB, was durch den Parameter internal_tmp_disk_storage_engine angepasst werden kann).
max_allowed_packet: Maximale Größe eines Pakets##########GET INNODB INFO
#INNODB-Variablen
innodb_version:
innodb_buffer_pool_instances: Den InnoDB-Pufferpool in mehrere angegebene Instanzen aufteilen (Standard ist 1)
innodb_buffer_pool_size: InnoDB-Pufferpoolgröße, 5.7.5 führte innodb_buffer_pool_chunk_size ein,
innodb_doublewrite: ob Doublewrite aktiviert werden soll (standardmäßig aktiviert)
innodb_read_io_threads: die Anzahl der IO-Lese-Threads innodb_write_io_threads: die Anzahl der IO-Schreib-Threads########innodb-Status
innodb_buffer_pool_pages_total: Die Anzahl der InnoDB-Pufferpoolseiten, die Größe entspricht innodb_buffer_pool_size/(16*1024)
innodb_buffer_pool_pages_data: die Anzahl der Seiten mit Daten im InnoDB-Pufferpool########### GET MYSQL HITRATE
1. Abfrage-Cache-Trefferquote: Wenn Qcache_hits+Com_select<>0, dann ist es Qcache_hits/(Qcache_hits+Com_select), andernfalls ist es 0

2. Thread-Cache-Trefferquote: Wenn Verbindungen<>0, dann ist es 1-Threads_created/Connections, andernfalls ist es 0

3. Die Trefferquote des MyISAM-Schlüsselcaches beträgt 1-Key_reads/Key_read_requests, wenn Key_read_requests<>0, andernfalls 0.

4. Die Schreibtrefferrate im MyISAM-Schlüsselcache beträgt 1-Key_writes/Key_write_requests, wenn Key_write_requests<>0, andernfalls 0

5. Schlüsselblock-Nutzungsrate: Wenn Key_blocks_used+Key_blocks_unused<>0, dann Key_blocks_used/(Key_blocks_used+Key_blocks_unused), andernfalls 0

6. Erstellen Sie das Verhältnis der temporären Tabelle für den Festplattenspeicher. Wenn „Created_tmp_disk_tables+Created_tmp_tables<>0“, dann „Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables), andernfalls 0“.

7. Verbindungsnutzungsrate: Wenn max_connections<>0, dann threads_connected/max_connections, sonst 0

8. Offene Datei-Ratio: wenn open_files_limit<>0, dann open_files/open_files_limit, sonst 0

9. Tabellen-Cache-Nutzung Wenn table_open_cache<>0, dann open_tables/table_open_cache, sonst 0

Dies ist das Ende dieses Artikels über die Beispielmethode zur Überwachung von MySQL durch Zabbix. Weitere relevante Inhalte zur Überwachung von MySQL durch Zabbix finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So überwachen Sie MySQL mit Zabbix
  • Zabbix implementiert die Überwachung mehrerer MySQL-Prozesse
  • 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

<<:  HTML-Code für feste Titelspalte und spezifische Implementierungscode für die Titelkopftabelle

>>:  Müssen die Texte der Website noch gestaltet werden?

Artikel empfehlen

Untersuchung und Korrektur des seltsamen Verhaltens von parseInt() in js

Hintergrund: Ich frage mich, ob Ihnen aufgefallen...

Grundkenntnisse im Website-Design: Neulinge lesen bitte dies

Heutzutage beginnen viele Leute damit, Websites z...

CentOS 6.5 Installations-Tutorial zu MySQL 5.7

1. Neue Funktionen MySQL 5.7 ist ein spannender M...

Detaillierte Erklärung des TARGET-Attributs des HTML-Hyperlink-Tags A

Das Hyperlink-Tag <a> stellt einen Linkpunkt...

Tiefgreifendes Verständnis des Linux-Lastausgleichs LVS

Inhaltsverzeichnis 1. LVS-Lastausgleich 2. Grundl...

Linux Überprüfen Sie den Installationsort der Software einfache Methode

1. Überprüfen Sie den Installationspfad der Softw...

Analysieren Sie, wie Sie automatisch Vue-Komponentendokumentation generieren

Inhaltsverzeichnis 1. Aktuelle Situation 2. Commu...

js implementiert Axios Limit-Anforderungswarteschlange

Inhaltsverzeichnis Der Hintergrund ist: Was wird ...

Analyse der Docker-Methode zum Erstellen lokaler Images

Der sogenannte Container erstellt tatsächlich ein...