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 は、ホストに任意の数を割り当てることができるラベルの概念をサポートしています。 ラベルとホストタグは、ほぼ同様に動作します。

  • ラベルは、タグと同じようにホストに「添付」されます。

  • ラベルは、タグと同じようにルールの条件として使用できます。

  • ラベルは、key:value の原則に基づいてタグと同様に作成されます。

では、なぜここに新しい概念が登場したのでしょうか? それは、IT の世界が変化し、よりダイナミックになっているからです。 Amazon Web Services (AWS)Microsoft AzureKubernetesなどのクラウドおよびコンテナシステムは、Checkmk のホストに相当する「オブジェクト」を自律的に作成および削除します。 これらのテクノロジーでは、ラベルとタグが、監視対象オブジェクトとその機能間の接続を確立する上で大きな役割を果たしています。 一方、ホスト名は、ますますランダムで意味のないものになってきています。

Checkmk は、ダイナミックホストマネージメントにより、このようなダイナミックホストを自動的に作成し、すでに存在するラベル/タグに関する情報も受け取ることができます。 これらのラベル/タグは、ルールの条件、検索、評価、ダッシュボード、その他のタスクに使用できます。

もちろん、このような動的なラベルを、既存のホストタグの概念にマッピングしないのかという疑問が生じます。 これは、一見すると非常に当然の結論です。 しかし、ホストタグには、それを非常に困難かつ複雑にする非常に重要な特性があります。 Checkmk では、どのタグおよびタググループが存在するか厳密に定義されています。 すべてが明確に定義されています。 すべてのホストは、各グループから 1 つのタグのみを持っています。 誰もがそれを信頼することができます。 タグのスペルミスは、スキームに従っていないホストでも発生しません。その順守は Checkmk によって厳格に管理されているためです。 これは、何千もの手動で管理されるホストが存在する、非常に異機種混在の環境では非常に重要であり、有用です。

対照的に、Kubernetes などの動的ラベルは事実上「自由形式」であり、スキームに従っている場合でも、Checkmk にはそのことはわかりません。 さらに、監視対象が複数の異なるプラットフォームであり、それぞれでラベルの使用方法がまったく異なる場合もあります。

そのため、このダイナミックな変化に対応するために、Checkmk のラベルの概念が導入されました。 もちろん、クラウド環境への接続を使用していない場合でも、ラベルを使用することは可能です。

「ラベルとホストタグはいつ使用すべきか」という疑問については、ホストの構造に関する記事で詳しく説明しています。

ラベルの機能は次のとおりです。

  • ラベルは、どこにも事前に定義しておく必要はありません。 ラベルの固定的なスキームはありません。 すべては自由形式です。 すべて使用できます。

  • 各ホストには、好きなだけラベルを付けることができます。 これらは、手動で管理、ルールで定義、または自動的に作成することができます。

  • ラベルは、key:value の原則に従って構造化されています。 各ホストは、キーごとに 1 つの値しか持つことができません。 したがって、ラベルfoo:bar を持つホストは、foo:bar2 を同時に持つことはできません。

  • ホストタグとは異なり、キーと値(コロン(:)を除く)には、任意の文字を使用できます。

  • ID とタイトル (または表示名) は区別されません。ラベルのキーは、その両方を兼ねています。

ラベルには、次のタスクがあります。

  • 設定ルールの条件の基礎となります。 たとえば、「os:windows 」というラベルを持つすべてのホストは、同じように監視されるべきです。

  • ホストに関する追加情報(location:RZ 74/123/xyz など)やコメントを簡単に保存し、ビューなどで表示することができます。

2. ラベルの作成

2.1. 明示的なラベル

ラベルは、さまざまな方法でホストに割り当てることができます。

最初の方法は簡単です。 セットアップで ホストを作成または編集するときに表示されるホストのプロパティページで ホストに任意のラベルをいくつでも付けることができます。

Dialog with properties of a host for defining labels.

Labels をチェックボックスで有効にして、Add some label フィールドをクリックし、key:value の形式に従ってラベルの定義を入力し、Enter キーで終了します。

既存のラベルは、そのテキストをクリックして編集したり、小さな「x」で削除したりすることができます。

Tip

ラベルのキーと値には、コロン (:)以外の任意の文字を使用できます。 ただし、後でラベルを使用して条件を設定する場合、キーと値のスペルは厳密に一致する必要があるため、文字や大文字と小文字の使用には注意してください。

もちろん、ラベルはフォルダから継承することもできます。 他の属性と同様に、ラベルはサブフォルダまたはホストに設定でき、必要に応じて個別に上書きすることができます。 たとえば、フォルダに「location:munich 」というラベルが設定されている場合、このフォルダ内の「location 」というラベルがまだ定義されていないすべてのホストに、このラベルが継承されます。 ホストに他のラベルが設定されている場合は、そのラベルは影響を受けません。

ホストまたはフォルダに明示的に定義されたラベルは、ホストのリストで紫色で表示されます。

List entry of a host with the assigned explicit labels.

2.2. ルールを使用してラベルを作成する

Checkmk では通常どおり、ルールによってホストおよびサービスに属性を割り当てることもできます。 これにより、フォルダ構造に依存しなくなるほか、ラベルにも適用されます。 この機能には、Host labels ルールセットが用意されており、セットアップメニューで検索してすばやく見つけることができます。

次のルールは、Bavaria フォルダ内の、ホストタグが「Real Hardware 」のすべてのホストに「hw:real 」ラベルを追加します。

Rule for specifying labels for hosts.

このルールの条件ではラベルを使用できないことに気付いたかもしれません。 これは間違いではなく、再帰的な依存関係やその他の異常を回避するための意図的なものです。

ルールによって追加されたラベルは、表示されているホストには赤色で表示されますが、セットアップのホストリストには表示されません。 代わりに、ホストのステータスビューにのみ表示されます。

2.3. 自動生成されるラベル

ラベルを作成する 3 つめの方法は、完全に自動です。 クラウドおよびコンテナシステムを監視するための特別なエージェントなど、さまざまなデータソースが自動的にラベルを生成します。 ここでは、特に AWS、Azure、および Kubernetes 用の特別なエージェントについてご説明します。 これらは、それぞれのプラットフォームではタグと呼ばれることもあり、Checkmk ではホストラベルまたはサービスラベルとして作成されます。 それぞれのルールセットには、この点に関する十分な情報が記載されています。

この方法の良い点は、何も設定する必要がないことです。 これらのデータソースがアクティブになると、対応するラベルが自動的に生成されます。

自動的に生成されるホストラベルセクションには、Checkmk が自動的に生成するラベルの概要が表示されます。

2.4. エージェントプラグインによるラベルの指定

ラベルを直接操作する簡単な方法は、エージェントプラグインを追加することです。これにより、ローカルチェックと同様に、 labels というセクションが作成されます。 この方法では、HW/SW インベントリだけを評価する場合よりも、より詳細にラベルを割り当てることができます。たとえば、インストールされているハードウェアの微妙な違い(CPU 機能など)や、実際に実行されているプロセス(単にインストールされているソフトウェアではなく)に関連してラベルを割り当てることができます。

ラベルの出力は、次の例のように Python 辞書としてフォーマットする必要があります。

<<<labels:sep(0)>>>
{"cpu/vendor": "zilog"}

評価の順序は保証されないため、Checkmk 自体や他のプラグインによって自動的に割り当てられるラベルとの衝突は避けてください。

2.5. ディスカバリーチェックで見つかったラベルを含める

ディスカバリーチェックを有効にしている場合新規インストールではデフォルト設定です)、セットアップのホストプロパティにまだ追加されていない新しいホストラベルが見つかった場合に警告が表示されます。 たとえば、次のような警告が表示されます。

Service list with the service 'Check_MK Discovery'.

この警告には 2 つの対応方法があります。 1 つ目は、セットアップでホストのサービス設定を呼び出し、[Hosts > Update host labels ] メニュー項目でラベルの設定を更新して、新しいラベルを追加する方法です。 この場合、変更をアクティブにしなくても、次回ディスカバリーチェックが実行されると(最大 2 時間遅れて)、ディスカバリーチェックは再び「OK 」になります。 それほど長く待ちたくない場合は、サービスのアクションメニューで [Reschedule check ] を選択して、サービスをすぐに手動で更新することもできます。

この変更が一度に多くのホストに影響する場合、各ホストのサービス設定を個別に確認するのは大変です。 この場合は、Run bulk service discovery のバルクアクションを実行し、モードとしてOnly discover new host labels を選択します。新しいサービスも追加したい場合は、Add unmonitored services and new host labels を選択してください。

ディスカバリーチェックを緑色にする 2 つめの方法は、新しいラベルについて警告が表示されないように再設定することです。 これを行うには、Periodic service discovery ルールセットに移動し、既存のルールを編集します。そこで、Severity of new host labels オプションが見つかります。

Rule for periodic service discovery.

これは、デフォルトでは「Warning 」に設定されています。 「OK - do not alert, just display 」を選択すると、チェックは表示されなくなります。

ディスカバリーチェックによって検出されたラベルは、黄土色で表示されます。

2.6. ラベルの割り当て優先順位の順序

理論的には、同じラベルが複数のソースで同時に異なる値で定義される場合があります。 そのため、以下の優先順位が設定されています。

  1. まず、明示的なラベル、つまり、セットアップでホストまたはフォルダに直接定義したラベルが優先されます。

  2. 次に、ルールによって作成されたラベルが優先されます。

  3. 最後に、自動的に生成されたラベルが優先されます。

この優先順位ルールにより、ラベルを完全に制御することができます。

3. ルールにおける条件としてのラベル

3.1. ルール内の条件

ラベルの重要な機能は、ホスト機能と同じです。 つまり、ルール内の条件として使用することです。 これは、AWS、Azure、Kubernetes などの情報に基づいて監視を完全に自動化できるため、自動生成されたラベルに特に役立ちます。

ホストまたはサービスラベルに条件を追加するには、Add to condition (条件を追加)をクリックします。 次に、is (条件が真の場合)またはnot (条件が偽の場合)を選択して、肯定または否定の条件を設定し、通常のフォームkey:value (ラベル)にラベルを入力します。 大文字小文字を含むスペルに注意してください。 ラベルは指定なしで定義できるため、Checkmk はタイプミスを認識できません。 ただし、ラベルを入力すると、Checkmk は、入力内容と一致する既存のラベルを候補として表示します。 提案では、ホストラベルとサービスラベルは区別されません。一致するすべてのラベルが提案されます。 スペルミス、大文字小文字の誤りなど、正しいスペルに注意してください。

ただし、条件の定義はさらに一歩進んでいます。 条件をさらに絞り込むために、ブール演算子NotAndOr も使用できます。 ここで、Not は、And Not の略語です。

  • Not は、条件 A が満たされ、条件 B が満たされていないことを意味します。

  • And は、条件 A と条件 B の両方が同時に満たされなければならないことを意味します。

  • Or は、条件 A または条件 B のいずれかが満たされなければならないことを意味しますが、両方の条件が満たされてもかまいません。

Important

オペレーターは、NotAndOrの順で、つまりリストに表示されている順とは限らず、この優先順位に従って処理されます。 これは、ブール代数の標準に対応しています。 たとえば、A And B Not C Or D は、括弧で囲まれた(A And (B Not C)) Or D に対応します。

たとえば、ラベルcmk/site:today があり、ラベルcmk/piggyback_source_today:yes がないホストを検索するには、条件は次のようになります。

Condition for host labels.

この条件は、is またはnot とその他の仕様でさらに絞り込むことができます。 または、Add to condition を使用して新しい条件のグループを追加することができます。これにより、より複雑になった条件が読みやすくなりますが、ブール代数の評価は変わりません。

multiple conditions for host labels.
Tip

Host tags およびHost labels のいずれも定義していない場合、問題のルールは常にすべてのホストまたはサービスに適用されます。 複数のルールを作成した場合、後続のルールは評価されなくなる場合があります。ルールの分析の種類を参照してください。

ルールでは、ラベルとホストタグの両方を使用できます。 これらは自動的に AND リンクされます。 したがって、ルールは、両方の条件が同時に満たされた場合にのみ適用されます。

3.2. 通知ルールの条件

ラベルは、通知ルールの条件としても使用できます。 使用方法は他の条件と同じであるため、使用方法を新たに習得する必要はありません。Match host labels (条件)を選択し、ホストまたはサービスが持つべきラベルを入力するだけで、このルールによって通知がトリガーされます。 ここでも、複数のラベルは AND 演算で連結されます。

4. ビューのラベル

これまで、設定環境(略して「セットアップ」)のラベルについてのみ説明してきました。 ラベルは監視環境でも表示されます。たとえば、ホストのステータスビューでは、次のように表示されます。

Dialog with the host state and the assigned labels.

ここでは、作成方法に応じて、ラベルがさまざまな色で表示されています。 明示的なラベルは紫色、ルールによって作成されたラベルは赤色、ディスカバリーチェックによって作成されたラベルは黄褐色で表示されています。

ラベルの色の強調表示は、ビューで視覚的に目立つだけでなく、クリックするとそのラベルを持つすべてのホストを検索できる実用的な機能も備わっています。

Filter bar with filter to search for a label.

ここでは、このラベルが付いているホスト(デフォルトのis を使用)またはこのラベルが付いていないホストis not オプションを使用)を検索できます。

ルール の「条件」で説明しているように、ラベル検索では、ブール演算子NotAndOr を使用することもできます。 たとえば、ミュンヘンにあり、web サーバーではない Linux ホストを検索するには、フィルタは次のようになります。

Filter options with 3 label filters linked by logical operators.

このフィルタをさらに絞り込んで、たとえば、「or 」で「ヘッドレス」であり、「and 」で「フランス語」である Windows ホストを追加で検索することができます。 このフィルタの拡張用に 3 行の新しい行を、既存の行のすぐ下に直接入力することもできます。または、Add to query を使用して新しいグループを作成することもできます。これにより、より複雑になったフィルタが読みやすくなりますが、ブール代数の評価は変わりません。

Filter options with 6 label filters linked by logical operators.
Tip

Checkmk が入力されたラベルフィルタからどのブラケット置換を生成するかについて知りたい場合は、関連するライブステータスクエリを表示することができます。 これを行うには、Setup > General > Global settings > Debug Livestatus queries.

もちろん、フィルターバーでは、ラベルの検索を他の利用可能な検索パラメータと組み合わせることもできます。

5. サービスラベル

サービスにもラベルを付けることができます。 これらはホストラベルと似ていますが、いくつかの小さな違いがあります。

  • サービスラベルは明示的に定義することはできません。 これらは、ルール (Service labels) によって、または自動的に作成されます。

  • サービスラベルを使用して条件を作成することもできます。 ルールセットでは、ルールがサービスと一致する場合にのみ、サービスラベルが入力可能になります。

6. エージェントラベル

Checkmk CloudおよびCheckmk MSPには ホストを自動的に作成するオプションが含まれています。 このオプションを使用すると、エージェントの登録、ホストの作成、サービスのディスカバリー、変更のアクティブ化という一連の処理がすべて自動化されます。 ホストの作成は、登録後に実行されます。

この自動化により、新しく作成されたホストの構造化にいくつかの課題が生じます。 これまで、オペレーティングシステム(ホストラベルcmk/os_family に保存)は、エージェントの出力からのみ決定することができました。 ただし、これを得るには、ホストがすでに作成されている必要があります。

このため、揮発性のエージェントラベルの概念が導入されました。これらのラベルは登録時に送信されるため、最初のエージェントが作成される前に利用可能になります。 登録時に、エージェントラベルを使用して、監視にホストを実際に作成するかどうかを決定し、作成する場合は、ホストのフォルダやその他のホスト属性を変更することができます。 登録が完了すると、エージェントラベルにはアクセスできなくなります。

登録時には、2 つの定義済みエージェントラベルが常に転送されます。

  • cmk/os-family オペレーティングシステムファミリーが含まれます (現在は または )。Windows Linux

  • cmk/hostname-simple コンピュータ名を短縮形式(ドメイン部分を除く)で含みます。

追加のカスタムエージェントラベルは、自由に割り当てることができます。organizational/department:documentation など。

自動的に登録されたホストには、cmk/agent_auto_registered:yes ホストラベルが割り当てられます。 特定のエージェントラベルの結果としてホストラベルを直接割り当てることはサポートされていません。 ただし、ホストを (一時的な) フォルダに登録し、そのフォルダ内のすべてのホストにホストラベルを割り当てるという方法があります。

7. 詳細情報

7.1. 自動生成されるホストラベル

キー

cmk/agent_auto_registered

yes、ホストが自動登録によって作成された場合

cmk/aws/ec2

instance すべての EC2 インスタンスに対して

cmk/aws/account

ホストが属する AWS アカウントの名前

cmk/aws/tag/{key}:{value}

AWS オブジェクトのタグ

cmk/azure/resource_group

リソースグループ

cmk/azure/tag/{key}:{value}

Azure オブジェクトからのタグ

cmk/azure/vm

instance すべての Azure VM に対して

cmk/check_mk_server

yes すべての Checkmk サーバーに対して

cmk/device_type

SNMP によって送信されたデバイス名、例:appliancefcswitchfirewallprinterroutersensorswitchupswlc

cmk/docker_image

ドッカーイメージ、例:docker.io/library/nginx:latest

cmk/docker_image_name

Docker イメージの名前、例:nginx

cmk/docker_image_version

Docker イメージのバージョン、例:latest

cmk/docker_object

containerホストが Docker コンテナの場合は、node 、ホストが Docker ノードの場合は、

cmk/kubernetes/annotation/{key}:{value}

これらのラベルは、有効な Kubernetes アノテーションであるすべての Kubernetes ラベルに対して出力されます (Kubernetes ルールで設定可能)。

cmk/kubernetes

yes ホストが Kubernetes オブジェクトの場合。

cmk/kubernetes/cluster

Kubernetes クラスタの名前

cmk/kubernetes/cluster-host

Kubernetes クラスタのホスト名

cmk/kubernetes/cronjob

Kubernetes クーロンジョブ

cmk/kubernetes/daemonset

デーモンセットの名前

cmk/kubernetes/deployment

デプロイの名前

cmk/kubernetes/namespace

関連付けられている Kubernetes 名前空間の名前

cmk/kubernetes/node

関連付けられている Kubernetes ノードの名前。タイプが Pod または Node の Checkmk ホストには、このラベルが付けられます。

cmk/kubernetes/object

Kubernetes オブジェクトタイプ。ホストが Kubernetes エンドポイントオブジェクトの場合は、endpoint など。

cmk/kubernetes/statefulset

ステートフルセットの名前

cmk/meraki

yes すべての Meraki デバイスに対して

cmk/meraki/device_type

Meraki デバイスのタイプ。例:switch またはwireless

cmk/meraki/net_id

Meraki デバイスが属するネットワーク ID

cmk/meraki/org_id

Meraki デバイスが属する組織 ID

cmk/meraki/org_name

Meraki デバイスが所属する組織名

cmk/nutanix/object

control_plane Nutanix スペシャルエージェントがインストールされているホストの場合。 Nutanix ホストの場合。 Nutanix VM の場合。node vm

cmk/os_family

オペレーティングシステム、エージェントによってAgentOS としてレポートされます(例:windows またはlinux )。

cmk/os_type

オペレーティングシステムのタイプ。エージェントによってOS type としてレポートされます (例:windowslinuxunix)。

cmk/os_name

オペレーティングシステム名、エージェントによってOSName としてレポートされます(例:Microsoft Windows 10 ProUbuntuOracle Solaris )。

cmk/os_platform

オペレーティングシステムプラットフォーム。エージェントによってOSPlatform としてレポートされます (例:Xubuntu などの Ubuntu 派生版の場合はUbuntu )。/etc/os-release に保存されている場合。エージェントの出力にこの行がない場合、ラベルにはcmk/os_family の値が割り当てられます。

cmk/os_version

オペレーティングシステムのバージョン。エージェントによってOSVersion としてレポートされます (例: Ubuntu の場合は22.04 、Windows の場合は10.0.19045 )。

cmk/vsphere_object

vm ホストが仮想マシンの場合。ホストが ESXi ホストシステムの場合は、 。server

cmk/vsphere_vcenter

yes ホストが VMware vCenter の場合。

このページでは