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. 序文

この記事で説明している、Microsoft SQL Server を監視するためのエージェントプラグイン「mssql.vbs 」は、 に置き換えられ、まもなく Checkmk から削除されます (Werk #15844 をご覧ください)。 SQL Server ネットワークの構成で TCP/IP 経由のアクセスが許可されている場合は、新しいエージェントプラグイン「mk-sql 」の使用をお勧めします。 新しいエージェントプラグインの設定方法および使用方法については、記事「Microsoft SQL Server の監視」で説明しています。

2. 概要

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

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

Windows ホストのセットアップについては、以下で説明します。 さらにその後に、エージェントベーカリーによる設定について詳しく説明します。

3. 監視の設定

3.1. LocalSystem アカウントを使用する場合

監視に LocalSystem アカウント (NT AUTHORITY\SYSTEM) を使用できる場合、このアカウント (ログイン) には、少なくとも以下のセキュリティで保護可能なエレメント (Securables) が必要であることをご留意ください。

  • Connect any database

  • View Server State

  • Connect SQL

監視するインスタンスのデータベース、および LocalSystem アカウントがすでに持っているサーバーの役割とマッピングに応じて、Connect any database に対する許可も付与する必要がある場合があります。

3.2. 余談:新しいユーザーの設定

組織で LocalSystem アカウントを使用できない場合は、監視するインスタンスに適切なデータベース監視ユーザーを作成する必要があります。 MSSQL の基本要件は、Server authenticationSQL Server and Windows Authentication mode に設定されていることです。 Windows LocalSystem アカウントを使用できない場合は、この要件はすでに満たされているはずですが、念のため記載しておきます。

次に、MSSQL で十分なアクセス許可を持つユーザーで MSSQL にログインし、Microsoft SQL Server Management Studio を使用して新しいデータベースユーザーを作成します。

Selecting the 'New Login...' option in MSSQL.

新しく作成したユーザーには、上記の許可が必要です。Object Explorer に移動し、Security > Logins を開き、エージェントプラグイン用に設定したログインのプロパティを開きます。Securables に、Connect any database の明示的な許可があります。この許可を付与する必要があります。

Grant permission 'Connect any database'.

または、コマンドラインからユーザーと許可を作成することもできます。 次の例では、ユーザーcheckmk に対してこの操作を行っています。

mssql> USE master;
      CREATE USER checkmk WITH PASSWORD = 'MyPassword123';
      GO

その後:

mssql> USE master;
      GRANT CONNECT ANY DATABASE TO checkmk;
      GO

設定ファイルの作成

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

C:\ProgramData\checkmk\agent\config\mssql.ini
[client]
user=checkmk
password=MyPassword123

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

3.3. エージェントプラグインのインストール

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

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

3.4. サービスの設定

プラグインのインストールと設定が完了したら、このホストのサービスディスカバリーを実行できます。 次のスクリーンショットは、検出可能なサービスの一部です。

Excerpt from the service discovery results.

4. 拡張設定

4.1. エージェントプラグインの非同期実行

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

Windows でプラグインを非同期で実行するには、エージェントの設定をカスタマイズし、pluginsexecution セクションに次のエントリを追加します。

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

Windows ホストでのプラグインの非同期実行に関する詳細な手順は、Windows エージェントに関する記事をご覧ください。

4.2. 閾値の設定

接続の監視

MSSQL で指定されている同時接続の最大数については、他のサービスよりも MSSQL インスタンスの構造に大きく依存するため、利用率の閾値をご自身で指定することができます。MSSQL Connections ルールセットのルールを使用すると、適切な閾値をすぐに設定することができます。

Setting the upper thresholds for active connections.

ファイルサイズの監視

MSSQL では、個々のファイルのサイズに関する閾値も定義できます。 これを行うには、MSSQL datafile sizes ルールセットを使用します。

Setting the file sizes used.

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

エージェントベーカリーを使用することで、商業版ではセットアップが大幅に簡略化されています。 これにより、設定ファイルでの構文エラーが回避され、環境の変化にも容易に対応できるため、セットアッププロセスが大幅に簡略化されます。 手動インストールとの主な違いは、MSSQL に関する特別な設定を行う場合のみ、MSSQL ホストのコマンドラインで作業を行う必要があることです。

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

The rule 'Microsoft SQL Server' in the agent rules.

Microsoft SQL Server (Windows) セクションの新しいルールで、シンプルで問題のない接続のために、System Authentication オプションを選択してください。

Possible settings for the MSSQL Server in the Agent Bakery.

代わりに「Database User Credentials 」オプションを選択した場合は、目的のデータベースユーザー(たとえば、前に作成したユーザー)の「User ID 」および「Password 」も入力する必要があります。

6. 診断オプション

たとえば、監視の設定時に予期しない動作や問題が発生した場合は、影響を受けるホストで直接確認することをお勧めします。 MSSQL を監視するためのプラグインは、シェルまたは Visual Basic スクリプトであるため、エージェントなしで簡単に実行できます。 シェルまたはコマンドラインには、事前に関連する設定ディレクトリを認識させておく必要があります。

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

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

注:ここでも、環境変数は永続的に設定されるのではなく、このコマンドラインが開いている間のみ有効です。

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

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

6.1. 発生する可能性のあるエラーとエラーメッセージ

データベースへの接続に失敗しました

Checkmk は、MSSQL データベースへの接続を試みる際に、3 種類のドライバ(msoledbsqlsqloledbsqlncli11 )を順番に使用します。

デフォルトでは、3 つのドライバは通常すべて使用可能であり、接続を確立する際に順番にテストされます。 状況によっては、この連続した処理によってエラーメッセージが表示される場合があります。 その場合は、呼び出しの構文から、上記のドライバのうち 1 つまたは 2 つを削除する必要があります。

mssql.vbs: 「バックアップが見つかりません」

プラグインが「バックアップが見つかりません」とレポートした場合は、まず手動でバックアップが利用可能かどうかを確認してください。 バックアップが存在しても問題が解決しない場合は、MSSQL 側の命名規則が原因である可能性があります。

Checkmk はホスト名を常に小文字で解釈しますが、バックアップ中にホストから大文字で送信された場合、通信の問題が発生します。

その後、MSSQL 側のserverproperty('collation') の値を確認してください。 たとえば、ここでSQL_Latin1_General_CP1_CS_AS が設定されている場合、CS は「大文字と小文字を区別する」を意味します。 プラグインはホスト名を変換できないため、スペルによる問題が発生する可能性があります。SQL_Latin1_General_CP1_CI_AS 、つまり「大文字と小文字を区別しない」のCI に変更すると、この問題は解決するはずです。

あるいは、MSSQL サーバーの元の名前を変更することもできます。 ただし、これはすべての企業および環境において可能なわけではありません。

7. ファイルおよびディレクトリ

7.1. MSSQL ホスト上

ファイルパス 内容

C:\ProgramData\checkmk\agent\plugins\

プラグインディレクトリ

C:\ProgramData\checkmk\agent\config\

設定ディレクトリ

7.2. Checkmk サーバー上

ファイルパス 内容

~/share/check_mk/agents/plugins/mssql

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

このページでは