check mysql health_check_mysql_health 官方说明

Beschreibung

check_mysql_health ist ein Plugin, mit dem unterschiedliche Parameter einer MySQL-Datenbank überprüft werden können.

Kommandozeilenparameter –hostname  Der Datenbankserver, der überwacht werden soll. Im Falle von “localhost” kann dieser Parameter weggelassen werden.

–username  Der Datenbankuser.

–password  Dessen Passwort.

–mode  Mit dem mode-Parameter teilt man dem Plugin mit, was es tun soll. Siehe Liste der möglichen Werte weiter unten.

–name  Hier kann die Prüfung auf ein einziges Objekt begrenzt werden. (Momentan wird dieser Parameter nur für mode=sql verwendet)

–name2  Verwendet man –mode=sql, dann erscheint das SQL-Statement in der Ausgabe und den Performancedaten. Mit dem Parameter name2 kann man dafür einen eigenen String vergeben.

–warning  Ermittelte Werte außerhalb dieses Bereichs lösen ein WARNING aus.

–critical  Ermittelte Werte außerhalb dieses Bereichs lösen ein CRITICAL aus.

–environment = Damit kann man dem Script Environmentvariablen mitgeben. Mehrfachnennungen sind möglich.

–method  Mit diesem Parameter teilt man dem Plugin mit, wie es sich zur Datenbank verbinden soll. (dbi für Verbindung per DBD::mysql (default), mysql für Verbindung per mysql-Aufruf).

–units  Die Angabe von Einheiten dient der “Verschönerung” von Ausgaben des mode=sql

Um dem Plugin mitzuteilen, welche Werte es ermitteln und prüfen soll, benutzt man die Option –mode mit verschiedenen Schlüsselwörtern. Schlüsselwort Bedeutung Wertebereich

connection-time Misst, wie lange Verbindungsaufbau und Login dauern 0..n Sekunden (1, 5)

uptime Die Zeit seit dem DB-Start (erkennt DB-Crash+Restart) 0..n Sekunden (10:, 5: Minuten)

threads-connected Anzahl der offenen Verbindungen 1..n (10, 20)

threadcache-hitrate Hitrate im Thread-Cache 0%..100% (90:, 80:)

q[uery]cache-hitrate Hitrate im Query Cache 0%..100% (90:, 80:)

q[uery]cache-lowmem-prunes Verdrängungen aus dem Query Cache wegen Speicherknappheit n/sec (1, 10)

[myisam-]keycache-hitrate Hitrate im Myisam Key Cache 0%..100% (99:, 95:)

[innodb-]bufferpool-hitrate Hitrate im InnoDB Buffer Pool 0%..100% (99:, 95:)

[innodb-]bufferpool-wait-free Rate der InnoDB Buffer Pool Waits 0..n/sec (1, 10)

[innodb-]log-waits Rate der InnoDB Log Waits 0..n/sec (1, 10)

tablecache-hitrate Hitrate im Table-Cache 0%..100% (99:, 95:)

table-lock-contention Rate fehlgeschlagener Tabellensperren 0%..100% (1, 2)

index-usage Anteil der Index-Nutzung (im Ggs. zu Full Table Scans) 0%..100% (90:, 80:)

tmp-disk-tables Prozent der temporären Tabellen, die auf Platte anstatt im Speicher angelegt wurden 0%..100% (25, 50)

slow-queries Rate von Queries, die als “slow” erkannt wurden 0..n/sec (0.1, 1)

long-running-procs Anzahl der Prozesse, die schon länger als 1 Minute laufen 0..n (10, 20)

slave-lag Verzögerung zwischen Master und Slave 0..n Sekunden

slave-io-running Prüft, ob der IO-Thread der Slave-DB läuft

slave-sql-running Prüft, ob der SQL-Thread der Slave-DB läuft

sql Ergebnis eines beliebigen SQL-Befehls, der eine Zahl zurückliefert. Der Befehl selbst wird mit dem Parameter –name übergeben. Ein Label für die Performancedaten kann mit dem Parameter –name2 übergeben werden. Mit dem Parameter –units kann die Ausgabe um Einheiten ergänzt werden (%, c, s, MB, GB,..). Wenn der SQL-Befehl Sonder- und Leerzeichen enthält, kann er mit dem mode encode zuerst encodiert werden. 0..n

open-files Anzahl der geöffneten Dateien (Als Prozent der Obergrenze) 0%..100% (80, 95)

encode Liest die Standardeingabe und gibt einen encodierten String aus.

cluster-ndb-running Prüft, ob alle Knoten im Cluster laufen.

Bei den Performancedaten tauchen je nach Modus zwei Labels auf.

= und =

Die ermittelten Werte beziehen sich dann auf die gesamte Laufzeit der Datenbank und auf die Zeit seit dem letzen Lauf von check_mysl_health.

Beispiel: qcache_hitrate=71.63%;90:;80: qcache_hitrate_now=8.25%

Die Hitrate des Query-Cache errechnet sich so aus Qcache_hits / ( Qcache_hits + Com_select ). Diese Werte werden kontinuierlich erhöht. Eine gravierende Änderung im Zugriffsverhalten wirkt sich nur langsam auf diese Hitrate aus. Damit man auch kurzfristige Schwankungen der Hitrate erkennen und z.b. einem Applikationsupdate zuordnen kann, wird zusätzlich der Wert qcache_hitrate_now ausgegeben. Dieser errechnet sich aus den Deltas von Qcache_hits und Com_select (aktueller Wert der Variablen minus Wert beim letzten Lauf von check_mysql_health).

Hier kommt der Kommandozeilenparameter –lookback ins Spiel. fehlt dieser, so errechnet sich qcache_hitrate_now aus den Deltas von Qcache_hits und Com_select seit dem letzten Aufruf von check_mysql_health. Maßgeblich für Exitcode des Plugins ist der langfristige Messwert qcache_hitrate (seit DB-Start).

wird –lookback mit einem Argument n angegeben, so wird qcache_hitrate_now aus den Deltas von Qcache_hits und Com_select in den vergangenen n Sekunden errechnet. Beispielsweise erhält man mit –lookback 3600 die mittlere Hitrate der vergangenen Stunde, zurückgerechnet vom aktuellen Pluginaufruf. Auch der Exitcode des Plugins richtet sich jetzt nach dem kurzfristigen Messwert.

Die Verwendung von –lookback wird empfohlen, jedoch sollte man mindestens eine halbe Stunde (–lookback 1800) angeben, da der now-Wert einer starken Schwankung unterliegen kann und damit häufige Alarme auslösen würde.

Es ist zu beachten, daß Schwellwerte entsprechend den Nagios Developer Guidelines anzugeben sind.

“10″ bedeutet demzufolge “Alarm, wenn > 10″ und

“90:” bedeutet “Alarm, wenn < 90″

Verbindung zur Datenbank

Anlegen eines Datenbankbenutzers

Damit sich das Plugin die benötigten Informationen aus der Datenbank holen kann, muss ein Benutzer angelegt werden, der über folgende Berechtigungen verfügt:

GRANT usage ON *.* TO 'nagios'@'nagiosserver' IDENTIFIED BY 'nagiospassword'

Connectionstring

Zur Anmeldung an der Datenbank benutzt man die Parameter –username und –password. Die zu kontaktierende Datenbank kann noch weiter spezifiziert werden durch Verwendung von –hostname und –socket oder –port.

Verwendung von Environmentvariablen

Man kann die Parameter –hostname, –username und –password sowie –socket und –port ganz weglassen, wenn man die entsprechenden Daten in Environmentvariablen bereitstellt. Seit der Version 3.x kann man Servicedefinitionen in Nagios um eigene Attribute (custom object variables) erweitern. Diese tauchen dann bei der Ausführung des Checkcommands im Environment auf.

Die Environmentvariablen heissen: NAGIOS__SERVICEMYSQL_HOST (_mysql_host in der Servicedefinition)

NAGIOS__SERVICEMYSQL_USER (_mysql_user in der Servicedefinition)

NAGIOS__SERVICEMYSQL_PASS (_mysql_pass in der Servicedefinition)

NAGIOS__SERVICEMYSQL_PORT (_mysql_port in der Servicedefinition)

NAGIOS__SERVICEMYSQL_SOCK (_mysql_sock in der Servicedefinition)

Beispiele

nagios$ check_mysql_health --hostname mydb3 --username nagios --password nagios --mode connection-time OK - 0.03 seconds to connect as nagios | connection_time=0.0337s;1;5  nagios$ check_oracle_health --mode=connection-time OK - 0.17 seconds to connect | connection_time=0.1740;1;5  nagios$ check_mysql_health --mode querycache-hitrate CRITICAL - query cache hitrate 70.97% | qcache_hitrate=70.97%;90:;80: qcache_hitrate_now=72.25% selects_per_sec=270.00  nagios$ check_mysql_health --mode querycache-hitrate --warning 80: --critical 70: WARNING - query cache hitrate 70.82% | qcache_hitrate=70.82%;80:;70: qcache_hitrate_now=62.82% selects_per_sec=420.17  nagios$ check_mysql_health --mode sql --name 'select 111 from dual' CRITICAL - select 111 from dual: 111 | 'select 111 from dual'=111;1;5  nagios$ echo 'select 111 from dual' | check_mysql_health --mode encode select%20111%20from%20dual  nagios$ check_mysql_health --mode sql --name select%20111%20from%20dual CRITICAL - select 111 from dual: 111 | 'select 111 from dual'=111;1;5  nagios$ check_mysql_health --mode sql --name select%20111%20from%20dual --name2 myval CRITICAL - myval: 111 | 'myval'=111;1;5  nagios$ check_mysql_health --mode sql --name select%20111%20from%20dual --name2 myval --units GB CRITICAL - myval: 111GB | 'myval'=111GB;1;5  nagios$ check_mysql_health --mode sql --name select%20111%20from%20dual --name2 myval --units GB --warning 100 --critical 110 CRITICAL - myval: 111GB | 'myval'=111GB;100;110

Installation

Dieses Plugin setzt die Installation eines MySQL-Client-Pakets voraus. Die Installation der Perl-Module DBI und DBD::mysql ist wünschenswert, aber nicht zwingend.

Nach dem Auspacken des Archivs wird ./configure aufgerufen. Mit ./configure –help können Optionen angezeigt werden, die für den Bau des Plugins einige Defaulteinstellungen liefern. –prefix=BASEDIRECTORY

Geben Sie hier das Verzeichnis an, in dem check_mysql_health liegen soll. (default: /usr/local/nagios)

–with-nagios-user=SOMEUSER

Dieser User wird der Eigentümer der Datei check_mysql_health sein. (default: nagios)

–with-nagios-group=SOMEGROUP

Die Gruppe des check_mysql_health Plugins. (default: nagios)

–with-perl=PATHTOPERL

Geben sie hier den Pfad zum Perl-Interpreter an, den sie benutzen möchten. (default: perl im PATH)

Download

Manche tar-Versionen haben Probleme wegen der langen Dateinamen. In diesem Fall entpacken sie bitte das shar-Paket mit

cat check_mysql_health-xxx.shar.gz | gzip -d | sh

Changelog 2011-01-03 bugfix in mode sql (numerical vs. regexp output)

2010-12-20 2.1.5 fixed a division by zero bug in index-usage (Thanks Wiltmut Gerdes) fixed a severe bug when loading dynamic extensions (Thanks Ralph Schneider) added mode table-fragmentation fixed a bug in table-lock-contention (thanks mayukmok00) mode sql can now have a non-numerical output which is compared to a string/regexp new parameter –dbthresholds new mode report can be used to output only the bad news (short,long,html)

2010-10-02 2.1.4 added modes threads-created, threads-running, threads-cached added connects-aborted, clients-aborted

2010-10-01 2.1.3 added mode open-files fix a bug in the pnp template add extra-opts

2010-06-10 2.1.2 Changed some statements for better 4.x compatibility. (Thanks Florian)

2010-03-30 2.1.1 More tracing (touch /tmp/check_mysql_health.trace to watch), fixed a bug in master-slave modes, so it outputs a more meaningful error message (Thanks Will Oberman), fixed a typo (Thanks Larsen)

2009-10-02 2.1 New parameter –lookback

2009-09-20 2.0.5 Bugfix in master-slave modes. (Danke Thomas Mueller). Bugfix in bufferpool-wait-free. (Danke Matthias Flacke). Bugfix im PNP template. (Danke Matthias Flacke). Mode slave-lag bemerkt failed io threads. (Danke Greg)

2009-04-02 2.0.4 Bugfix bei mode cluster-ndb-running, Bugfix im Master/Slave-Code. (Danke Arkadiusz Miskiewicz)

2009-03-18 2.0.3 Bugfix wg. warning=0, Bugfix in long-running-procs (betr. MySQL < 5.1) (Danke Bodo Schulz)

2009-03-11 2.0.1 Störende Uninitialized-Meldungen beseitigt (Danke John Alberts & Thomas Borger). Passwortloses login an localhost ist jetzt möglich.

2009-03-06 2.0 erste öffentliche Version

Copyright

Gerhard Laußer

Check_mysql_health wird unter der GNU General Public License zur Verfügung gestellt. GPL

Autor

Gerhard Laußer (gerhard.lausser@consol.de) beantwortet gerne Fragen zu diesem Plugin.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值