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 では、Microsoft SQL Servers (以下、「MSSQL」と略します)を包括的に監視することができます。 利用可能なすべてのチェックプラグインの完全なリストは、チェックプラグインのカタログでご覧いただけます。

データベースを監視するには、Checkmk エージェントに加えて、mk-sql エージェントプラグインも必要です。 Checkmk2.3.0 以降、このエージェントプラグインは、リモートシステムのデータベースも監視できるようになりました。 Checkmk サーバーにもデータベースサーバーにも、追加のソフトウェアは必要ありません。

mk-sql を使用するための唯一の必須要件は、SQL サーバーのネットワーク設定で TCP/IP プロトコルが有効になっていることです。 MSSQL サーバー環境で TCP/IP が許可されていない、またはその他の理由で使用できない場合は、追って通知があるまで、レガシーエージェントプラグインmssql.vbsを使用してください。

2. 監視用のアカウントの設定 (Windows)

エージェントプラグインは、MSSQL インスタンスへのアクセスを必要とします。 ルールとして、監視チームが到着するかなり前に、そのようなアクセスがどのようなものになるかは明確になっています。 MSSQL の場合、2 つのオプションがあります。Windows Authentication mode のみを使用するか、SQL Server and Windows Authentication mode の混合モードを使用します。

2.1. LocalSystem アカウントを使用する

Checkmk エージェントは、Windows システム上で LocalSystem アカウント (NT AUTHORITY\SYSTEM) で実行されます。 この LocalSystem アカウントを MSSQL の監視にも使用できる場合は、このアカウント (ログイン) が、少なくとも以下のセキュリティで保護されたエレメント (Securables) に対する許可を持っていることを確認するだけで済みます。

  • View server state

  • Connect SQL

  • Connect any database (optional)

Connect any database (optional) の許可はオプションですが、ほとんどすべての MSSQL 監視シナリオで必要です。

2.2. 専用アカウントの使用

Windows LocalSystem アカウントで MSSQL 監視を実行しないには、正当な理由があります。 その理由としては、組織内のセキュリティ要件や、その目的が名前から明らかな、専用の明確な名前のアカウントを使用したいといったことが考えられます。

もちろん、このプラグインは、そのようなアカウント (ログイン) でも動作します。

MSSQL の基本的な要件は、Server authenticationSQL Server and Windows Authentication mode に設定されていることです。 Windows LocalSystem アカウントを使用しない、または使用できない場合は、この要件はすでに満たされているはずですが、ここで言及しておく必要があります。

MSSQL サーバーまたはインスタンスに対応するユーザーが存在しない場合は、Microsoft SQL Server Management Studio を使用して、Windows システムにユーザーを作成することができます(ユーザー名は任意です)。

“Selecting the ‘New Login...’ option in MSSQL.”

このログインには、以下の許可が必要です。

  • Connect SQL

  • Connect any database

  • View server state

Security > Logins から、Object Explorer でこれらの許可を付与してください。 アカウント (ログイン) のプロパティを開き、[Securables] をクリックします。 [Explicit ] に、上記の 3 つのエントリがあります。Grant 列で、対応するチェックマークを設定し、[OK] で確定します。

“Grant ‘Connect any database’ permission.”

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

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

その後:

mssql> USE master;
      GRANT CONNECT SQL TO checkmk;
      GRANT CONNECT ANY DATABASE TO checkmk;
      GRANT VIEW SERVER STATE TO checkmk;
      GO

2.3. 接続を手動で設定する

Checkmk Rawを使用している場合、または商業版のエージェントベーカリーを使用しない場合は、手動で通信を設定してください。

この説明では、Windows 監視用のエージェントがホストにすでにインストールされていることを前提としています。

設定ファイルの作成

Windows ホストで、以下のディレクトリにmk-sql.yml ファイルを作成します。

LocalSystem アカウントを使用する場合、必要な設定は以上です。

C:\ProgramData\checkmk\agent\config\mk-sql.yml
---
mssql:
  main:
    authentication:
      username: ''
      type: integrated

監視用に専用のアカウントを使用する場合は、その代わりに、以下の内容が必要です。

C:\ProgramData\checkmk\agent\config\mk-sql.yml
---
mssql:
  main:
    authentication:
      username: checkmk
      password: MyPassword123
      type: sql_server

ホスト上で、ユーザー名とパスワードが異なる複数の MSSQL インスタンスを実行している場合は、yml ファイルにインスタンスの詳細を適宜追加してください。yml ファイルは、たとえば次のようにになります。

C:\ProgramData\checkmk\agent\config\mk-sql.yml
---
mssql:
  main:
    authentication:
      username: ""
      type: integrated
    instances:
      - sid: myInstance 1
        auth:
          username: myUser1
          password: "123456"
          type: sql_server
      - sid: myInstance 2
        auth:
          username: myUser2
          password: "987654"
          type: sql_server

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

mk-sql.exe プラグインは、Checkmk RawのSetup > Agents > Windows 、および商業版のSetup > Agents > Windows, Linux, Solaris, AIX > Related > Windows files にあります。

Selection of the agent plug-in in Checkmk.

mk-sql.exe ファイルをダウンロードし、Windows ホストのディレクトリC:\ProgramData\checkmk\agent\plugins\ に保存します。

サービスの設定

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

“Excerpt of the service discovery.”

2.4. 拡張設定

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

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

Windows でエージェントプラグインを非同期で実行するには、プラグインの設定を編集し、main セクションに「cache_age 」行を追加します。

C:\ProgramData\checkmk\agent\config\mk-sql.yml
mssql:
  main:
    authentication:
      username: myuser
      password: mypassword
      type: sql_server
    cache_age: 300

Windows ホストでエージェントプラグインを非同期で実行する方法の詳細については、Windows エージェントを説明する記事をご覧ください。

3. 監視用のアカウントの設定 (Linux)

3.1. 監視用のユーザーの作成

MSSQL インスタンスに接続できるユーザーが必要です。 このユーザーには、少なくとも以下の許可が必要です。

  • SQL 接続

  • データベースへの接続

  • サーバーの状態のビュー

これらの許可以外については、そのようなユーザーを作成できるかどうか、または作成する必要があるかどうかは、お客様またはお客様の組織で決定してください。

テスト目的では、ローカルユーザーを使用することができます。 MSSQL サーバーまたはインスタンスに対応するユーザーが存在しない場合は、Linux システムでコマンドラインを使用してユーザーを作成することができます。

次の例では、ユーザーcheckmk に対してこの操作を行っています。

user@host:~$ sudo adduser --system checkmk --ingroup sudo

プロンプトに従って、パスワードなどを割り当ててください。

その後:

mssql> USE master;
      GRANT CONNECT SQL TO checkmk;
      GRANT CONNECT ANY DATABASE TO checkmk;
      GRANT VIEW SERVER STATE TO checkmk;
      GO

3.2. 接続の手動セットアップ

Checkmk Rawを使用している場合、または商業版のエージェントベーカリーを使用しない場合は、手動で通信を設定してください。

この説明では、Linux 監視用のエージェントがホストにすでにインストールされていることを前提としています。

設定ファイルを作成してください

Linux ホストで、以下のディレクトリにmk-sql.yml ファイルを作成します。

/etc/check_mk/mk-sql.yml
---
mssql:
  main:
    authentication:
      username: checkmk
      password: checkmkPW
      type: sql_server

ホスト上で、ユーザー名とパスワードが異なる複数の MSSQL インスタンスを実行している場合は、yml ファイルにインスタンスの詳細を適宜追加してください。yml ファイルは、たとえば次のようにになります。

/etc/check_mk/mk-sql.yml
---
mssql:
  main:
    authentication:
      username: checkmk
      password: checkmkPW
      type: sql_server
    instances:
    - sid: myInstance1
      auth:
        username: myUser1
        password: 123456
        type: sql_server
    - sid: myInstance2
      auth:
        username: myUser2
        password: 987654
        type: sql_server

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

mk-sql プラグインは、Checkmk RawのSetup > Agents > Linux 、および商業版のSetup > Agents > Windows, Linux, Solaris, AIX > Related > Linux, Solaris, AIX files

Selection of the agent plug-in in Checkmk.

mk-sql ファイルをダウンロードし、Linux ホストの/usr/lib/check_mk_agent/plugins/ ディレクトリに配置します。

サービスの設定

エージェントプラグインをインストールして設定しましたので、このホストのサービスディスカバリーを実行できます。 次のスクリーンショットは、見つかったサービスの一部です。

“Excerpt from the service discovery.”

3.3. 拡張設定

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

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

Linux でエージェントプラグインを非同期で実行するには、プラグインの設定を編集し、main セクションに「cache_age 」行を追加します。

/etc/check_mk/mk-sql.yml
mssql:
  main:
    authentication:
      username: myuser
      password: mypassword
      type: sql_server
    cache_age: 300

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

4. Checkmk のその他の設定オプション

4.1. 閾値の設定

接続の監視

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

“Setting the upper threshold values for active connections.”

ファイルサイズの監視

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

“Setting the sizes of files in use.”

5. エージェントベーカリーによる設定

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

初期セットアップでは、エージェントベーカリーで対応するルールを作成するだけで十分です。 ルールセットは、Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules.にあります。 検索フィールドで「mssql 」を検索してください。

The rule ‘Microsoft SQL Server (Linux, Windows)’ in the agent rules.

5.1. エージェントルールの設定 (Windows)

エージェントプラグインが MSSQL サーバーにログインする許可方法(監視用のアカウントの設定を参照)に応じて、Authentication で適切なオプションを選択します。 LocalSystem アカウント(NT AUTHORITY\SYSTEM )を使用している場合は、Local Integrated Authentication (Windows) の選択のままにしておきます。

“Possible settings for the MSSQL server in the Agent Bakery.”

SQL Server 認証を使用する場合は、[SQL database user credentials ] オプションを選択し、[User ] フィールドにLogin name (「専用アカウントの使用」を参照) を入力し、対応するPassword を追加します。

ホスト上で、ユーザー名とパスワードが異なる複数の MSSQL インスタンスを実行している場合は、[Custom instances ] オプションを選択し、[ ] フィールドに [Add new element ] (「専用アカウントの使用」を参照) を入力し、対応する [ ] を追加します。 を使用して、監視する最初のインスタンス、そして追加のインスタンスの詳細にアクセスします。 上記の手順に従って、各インスタンスのアクセスデータをここに入力します。

“Multiple MSSQL instances in the Agent Bakery rule.”

5.2. エージェントルールの設定 (Linux)

Authentication 」で「SQL database user credentials 」オプションを選択してください。

“Possible settings for the MSSQL server in the Agent Bakery.”

次に、[User ] フィールドにLogin name を入力し、対応するPassword を追加します。Connection には、Host name を追加します。

ホスト上で、ユーザー名とパスワードが異なる複数の MSSQL インスタンスを実行している場合は、[Custom instances ] オプションを選択します。Add new element を使用して、監視する最初のインスタンス、そして追加のインスタンスの詳細にアクセスします。 上記の手順に従って、各インスタンスのアクセスデータをここに入力します。

“Multiple MSSQL instances in the Agent Bakery rule.”

5.3. 追加オプション

この設定により、MSSQL インスタンスを監視するための単純なエージェントが、ホスト上に直接作成されます。 利用可能なすべてのデータは Checkmk で直接評価されます。これは、一般的なケースではこれで十分です。 ただし、組織でより複雑な MSSQL 環境を使用している場合は、同じホスト上のデータベースを監視する場合と、リモートホスト上のデータベースを監視する場合の両方で、さらにオプションがあります。 これらのオプションは、基本的に両方の接続タイプで同じです。

オプション 説明

Connection

MSSQL サーバーへの一般的な接続について、より具体的な接続データが必要な場合は、ここで指定できます。

Data to collect (Sections)

ここでは、収集するデータ、およびデータを同期的に収集するか非同期的に収集するかをセクションごとに制限することができます。

Cache age for asynchronous checks

以前に定義した非同期チェックのキャッシュ期間を秒単位で変更できます。

特定のホストにデータをマッピング (ピギーバック)

ピギーバックデータは、実際のソースに関係なく、ホストに割り当てることができます。たとえば、SQL 情報を、基盤となる Windows サーバーのデータから分離することができます。

Discovery mode of database instances

インスタンスでの検索の設定。

Custom instances

MSSQL サーバーへのアクセスに関する一般的な設定に加え、特定のインスタンスに関する独自の設定もここで定義できます。

Options

ここで、SQL サーバーの同時接続の最大数を設定できます。

6. 診断オプション

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

エラーメッセージ:SQL Server インスタンスの収集に失敗しました

TCP/IP 接続が設定されており、正常に機能しているかどうかを確認してください。

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

7.1. MSSQL ホスト上 (Windows)

ファイルパス 説明

C:\ProgramData\checkmk\agent\plugins\

エージェントプラグインを保存するディレクトリです。

C:\ProgramData\checkmk\agent\config\mk-sql.yml

エージェントプラグインの設定ファイルです。

7.2. MSSQL ホスト (Linux)

ファイルパス 説明

/usr/lib/check_mk_agent/plugins/

エージェントプラグインを保存するディレクトリ。

/etc/check_mk/mk-sql.yml

エージェントプラグインの設定ファイル。

7.3. Checkmk サーバー

ファイルパス 説明

~/share/check_mk/agents/windows/mk-sql.exe

MSSQL を監視するために Windows ホストにコピーするエージェントプラグイン。

~/share/check_mk/agents/linux/mk-sql

Linux ホストにコピーして、MSSQL を監視するためのエージェントプラグイン。

このページでは