Checkmk
to checkmk.com
Important

This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved.

1. 概要

Checkmk では、MySQL および MySQL 用の Galera クラスタを包括的に監視することができます。 監視オプションの完全なリストは、チェックプラグインのカタログでご覧いただけます。 Checkmk では、とりわけ以下の項目を監視することができます。

データベースを監視するには、Checkmk エージェントの他に データベースサーバーにエージェントプラグインのみが必要です。追加の ソフトウェアは、Checkmk およびデータベースサーバーに必要ありません。

ここでは、Linux および Windows ホストで MySQL 監視を設定する方法について説明します。 後で、エージェントベーカリーを使用した設定について詳しく説明します。

2. 監視の設定

2.1. ユーザーの作成

Linux および Windows

MySQL 内で監視を設定するための唯一の要件は、 データベースユーザーとそのパスワードが利用可能であることです。このユーザーには、MySQL インスタンスの読み取り 権限のみが必要です。そのようなユーザーがまだ存在しない場合は、 監視するインスタンスで作成してください。これを行うには、十分なアクセス権を持つユーザーで MySQL にログインし、 新しいデータベースユーザーを作成します。

mysql> CREATE USER 'checkmk'@'localhost' IDENTIFIED BY 'MyPassword';

新しく作成したユーザーには、インスタンスを読み取るための認可が必要です。そのため、 ユーザーに必要な許可が与えられているかどうかをチェックし、 次のコマンドで許可を追加してください。次の例は、ユーザーcheckmk

mysql> GRANT SELECT, SHOW DATABASES ON *.* TO 'checkmk'@'localhost';

MySQL レプリケーションを使用する場合、ユーザーは、レプリカサーバーを監視するための REPLICATION CLIENT 権限を少なくとも持っている必要があります。

mysql> GRANT REPLICATION CLIENT ON *.* TO 'checkmk'@'localhost';

2.2. プラグインのインストール

Linux

必要なmk_mysql プラグインは、CheckmkサーバーのSetup > Linux, Solaris, AIX files > Plugins 、または~/share/check_mk/agents/plugins/ ディレクトリにあります。

まず、このプラグインを、監視するホストのエージェントのプラグインディレクトリにコピーします。 プラグインディレクトリは通常、/usr/lib/check_mk_agent/plugins/ です。 スクリプトが指定のディレクトリにコピーされたら、実行可能にしてください。

root@linux# chmod 700 mk_mysql

このプラグインは、もちろん必要に応じて非同期で実行することもできます。

Windows

Windows 用のエージェントには、標準でいくつかのプラグインが付属しています。 そのため、エージェントをインストールすると、ホスト上の MySQL を監視するためのプラグインも表示されます。 このプラグインを、使用するディレクトリにコピーしてください。

PS> copy "c:\Program Files (x86)\checkmk\service\plugins\mk_mysql.vbs" c:\ProgramData\checkmk\agent\plugins\

2.3. 設定ファイルの作成

以下で、またはエージェントベーカリーを使用して作成する設定ファイルは、MySQL 監視設定の唯一のソースとして使用されます。 ローカルに存在するその他の設定は、Checkmk では考慮されません。

Linux

次に、ターゲットホストの Checkmk エージェントの 設定ディレクトリ(通常:/etc/check_mk/ )に、mysql.cfg という名前のファイルを作成します。

エージェントは、このファイルに入力されたユーザーデータを使用して、MySQL インスタンスから必要な情報を取得できます。 データベースユーザーの指定はオプションですが、エージェントは通常、システムユーザーroot としてプラグインを実行するため、指定することをお勧めします。 データベースユーザー名が指定されていない場合、MySQL クライアントは、パスワードを使用せずに、実行しているシステムユーザーのユーザー名を使用して、または.mylogin.cnf に保存されているパスワードを使用して、データベースへのアクセスを試みます。 詳細については、MySQL のドキュメントなどを参照してください。

これは、MySQL 設定ファイルの通常の形式で指定します:

/etc/check_mk/mysql.cfg
[client]
user=checkmk
password=MyPassword

次のコマンドでアクセスデータを保存すると、不正アクセスから保護されます。

root@linux# chmod 400 mysql.cfg

Windows

Windows ホストでは、以下のディレクトリに「mysql.ini 」という名前のファイルを作成します。

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword

ホストで、異なるユーザー名とパスワードを使用して複数の MySQL インスタンスを実行している場合は 、以下の命名規則に従って、インスタンスごとに 1 つの.ini ファイルを作成してください 。mysql_INSTANCE-ID.ini

2.4. サービスの作成

プラグインのインストールと設定が完了しましたので、このホストの サービスディスカバリーを実行できます。次のスクリーンショット には、検出されたサービスの一部のみが表示されています。

mysql discovery

3. 詳細設定

3.1. プラグインを非同期で実行

他の多くのプラグインと同様に、MySQL を監視するプラグインも非同期で実行できます。 たとえば、大規模な MySQL インスタンスのランタイムが長い場合などに、この機能を利用できます。

Linux

Linux ホストでは、プラグインはプラグインディレクトリのサブディレクトリにのみ移動されます。 たとえば、プラグインを 5 分ごとに実行したい場合は、mk_mysql スクリプトを300 というサブディレクトリに移動するだけです。プラグインを非同期で実行するための詳細な手順は、Linux エージェントに関する記事をご覧ください。 Linux エージェント Linux エージェント

Windows

プラグインを非同期で実行するには、エージェントの設定を調整し、pluginsexecution セクションを展開して、以下のエントリを追加してください。 C:\Program Data\checkmk\agent\check_mk.user.yml

C:\ProgramData\checkmk\agent\check_mk.user.yml
plugins:
    execution:
        - pattern: mk_mysql.vbs
          cache_age: 300
          async: yes

Windows ホストでのプラグインの非同期実行に関する詳細な手順は 、Windows エージェントに関する記事をご覧ください。 3.2. 設定ファイルの追加オプション

3.2. 設定ファイルの追加オプション

ソケット経由で MySQL との通信を設定する

エージェントが TCP 経由で MySQL と通信する代わりに、Checkmk にソケットをアドレス指定するように指示することができます。 これを行うには、mysql.cfg ファイルにsocket 変数を定義するだけです。 Windows 構成ファイルの例を以下に示します。

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword
*socket=/var/run/mysqld/mysqld.sock*

ホストを手動で定義する

さらに、設定ファイルを使用して MySQL ホストを手動で設定することもできます。 対応する変数は、単にhost です。 ここでも Windows の例を使用します。

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword
*host=127.0.0.1*

3.3. 閾値の設定

セッションの監視

この方法で設定されるチェックの中には、閾値が事前に設定されていないものもあります。 これは通常、ほとんどの場合に十分な妥当なデフォルト値がないためです。 ただし、これらはいくつかの簡単な手順で設定することができます。 たとえば、MySQL Sessions & Connectionsルールは、おなじみのHost & Service Parameters から見つけることができます。これを使用して、 MySQL インスタンスに有用な、MySQL sessions サービスに対する意味のある閾値を定義することができます。

mysql sessions connections

接続の監視

MySQL で指定されている同時接続の最大数 の利用率についても、閾値は指定していません。 これは、他のサービスよりも MySQL インスタンスの構造に大きく依存するためです。 対応する閾値の設定は、MySQL Connections セットのルールを使用して、あっという間に完了します。 開いている接続の数についても同様です。

mysql connections

データベースのサイズの監視

MySQL 内の個々のデータベースのサイズは、MySQL: 容量チェックプラグインによって監視されます。 このプラグインの閾値は、Size of MySQL databases ルールで決定できます。

mysql size database

3.4. ログファイルの監視

ログウォッチチェックプラグインを使用すると、MySQL によって生成されたログファイルにエラーがないかを監視することもできます。 プラグインを設定したら、まず、MySQL インスタンス内の対応するログファイルの場所を確認してください。 その正確な場所は、インスタンスの.ini または.cnf ファイルで確認できます。

ログウォッチ設定ファイル に、必要なログを入力し、Linux ホストでは、たとえば次のように入力します。

/etc/check_mk/logwatch.cfg
/var/log/mysql/error.log
 W Can't create/write to file
 C [ERROR] Can't start server
 C mysqld_safe mysqld from pid file /var/run/mysql/mysqld.pid ended

4. エージェントベーカリーを使用した設定

エージェントベーカリーを使用すると、設定が大幅に簡略化されます。 設定ファイルでの構文エラーが回避され、環境の変化への対応も 簡単に行えます。 手動インストールとの主な違いは、MySQL 独自の設定については、MySQL ホストのコマンドラインで作業を行う必要がある 点だけです。

初期セットアップでは、MySQL ホストでデータベースユーザーを設定し 、Bakery で対応するルールを作成するだけで十分です。 ルールセットはSetup > Agents > Windows, Linux, Solaris, AIX > Agent rules にあります。 次に、検索フィールドで「MySQL 」を検索します。

mysql bakery ruleset search

新しいデータベースユーザーのユーザー ID とパスワードを入力します。次の フィールドでは、Linux ホストの Checkmk エージェントが TCP 経由ではなく、ソケット経由で MySQL への接続を確立するように設定できます。 サイズや利用率によっては、これによりパフォーマンスが向上する場合があります。

このルールセットを使用して、MySQL プラグインの非同期バージョンも定義できます。 これは、大規模な MySQL インスタンスでより長いランタイムを考慮する場合、またはステータスデータを 1 分ごとに取得する必要がない場合に役立ちます。

mysql bakery

5. 診断オプション

たとえば、監視の設定時に予期しない動作や問題が発生した場合は 、影響を受けるホストで直接チェックすることをお勧めします。 Linux および Windows 用の MySQL 監視プラグインは、シェルまたは Visual Basic スクリプトであるため、エージェントなしで簡単に実行できます。使用するオペレーティングシステムに関係なく 、関連する設定ディレクトリをシェルまたはコマンドラインに指定するだけで 使用できます。

Linux の診断オプション

まず、それぞれのホストに該当するディレクトリを確認してください。

user@host:~$  grep 'export MK' /usr/bin/check_mk_agent
export MK_LIBDIR='/usr/lib/check_mk_agent'
export MK_CONFDIR='/etc/check_mk'

次に、export コマンドを使用して、MK_CONFDIR およびMK_LIBDIR 環境変数を作成します。実際のディレクトリに応じて、コマンドをカスタマイズしてください。 重要:これらの環境変数は、現在開いているシェルにのみ存在し、シェルを閉じると消えます。

root@linux# export MK_CONFDIR="/etc/check_mk/"
root@linux# export MK_LIBDIR="/usr/lib/check_mk_agent"

重要:これらの環境変数は、現在開いているシェルにのみ存在し 、シェルを閉じるとすぐに消えます。

その後、Checkmk エージェントのプラグインディレクトリでmk_mysql スクリプトを直接実行できます。 データベースユーザーにすべての権限が正しく付与されている場合、

root@linux# $MK_LIBDIR/plugins/mk_mysql

データベースユーザーにすべての権限が正しく付与されている場合、 小さな新しい MySQL 環境でも、数百行の出力結果が表示されます。

5.2. Windows での診断オプション

Windows ホストで Check プラグインを手動で実行するには、まず 管理者権限でコマンドラインを開きます。次に、このコマンドラインでMK_CONFDIR環境変数を設定します。これは、 プラグインが設定ファイルを見つけるために必要です。

PS> set MK_CONFDIR=c:\ProgramData\checkmk\agent\config

重要:ここでも、ここで設定した環境変数は永続的ではなく 、このコマンドラインが開いている間だけ存在します。

プラグインの実行中は、出力をコマンドラインにリダイレクトすることをお勧めします。 Windows には、この目的のための組み込みツール「cscript 」が用意されています。

PS> cscript c:\ProgramData\checkmk\agent\plugins\mk_mysql.vbs

5.3. 発生する可能性のあるエラーおよびエラーメッセージ

mysqladmin:xyzのサーバーへの接続に失敗しました

エラーメッセージ「connect to server at xyz failed 」は、 設定ファイルで指定されたユーザーが MySQL にアクセスできないことを示しています。まず、 設定ファイル(mysql.cfg またはmysql.ini )の作成時に、転送エラーが発生していないことを確認してください。

設定ファイルで指定したユーザー名またはパスワードが間違っている場合 次のようなエラーメッセージが表示されます。

Access denied for user checkmk

データベースのサイズが出力されていません

Checkmk で MySQL インスタンスからの一連のデータが表示されているにもかかわらず、 そのデータベースのサイズを監視するサービスがない場合は、 データベースユーザーに SELECT 権限がないことを示しています。

次のコマンドを使用して、MySQL でデータベースユーザーを確認してください。

mysql> show grants for 'checkmk'@'localhost';
+--------------------------------------------------------------------------+
| Grants for checkmk@localhost                                             |
+--------------------------------------------------------------------------+
| GRANT SELECT, SHOW DATABASES ON *.* TO `checkmk`@`localhost`             |
+--------------------------------------------------------------------------+

出力にキーワード SELECT が含まれていない場合は、 ユーザーセットアップの章で指定されている 適切な権限をデータベースユーザーに付与してください。

6. ファイルとディレクトリ

6.1. MySQL ホスト上

Linux

ファイルパス 機能

/usr/bin/check_mk_agent

ホストに関するすべてのデータを収集するエージェント。

/usr/lib/check_mk/plugins/

プラグインが通常保存されるディレクトリです。

/etc/check_mk/mysql.cfg

MySQL プラグインの設定ファイルです。

/etc/check_mk/mysql.local.cfg

ホスト固有のソケットを指定するための追加の設定ファイル。

Windows

ファイルパス 関数

C:\ProgramData\checkmk\agent\plugins\

通常のプラグインディレクトリです。

C:\ProgramData\checkmk\agent\config\

通常の設定ディレクトリです。

C:\Program Files (x86)\checkmk\agent\config\

Checkmk バージョンまでの通常の設定ディレクトリです。1.6.0

C:\Program Files (x86)\check_mk\plugins\

Checkmk バージョンまでの通常のプラグインディレクトリです。1.6.0

6.2. Checkmk サーバー上

ファイルパス 機能

~/share/check_mk/agents/plugins/mk_mysql

MySQL ホストからデータを取得するプラグイン。

このページでは