コンテナ自動検出機能では、複数のコンテナで実行されるサービスを自動的に監視するように統合を構成することができます。統合の構成ファイルで、コンテナのマッチング基準を設定すると、エージェントは基準に合致する各ローカルコンテナに対して統合を実行します。
統合は、ディスカバリー要素を見つけた回数だけ実行されます。ディスカバリーでコンテナが見つからなかった場合、統合は実行されません。
ヒント
現在、 インフラストラクチャエージェント は、ローカルのDockerコンテナを発見することができます。
設定にプレースホルダーを追加
統合構成で、 ${discovery.<property>}
プレースホルダーを作成する必要があります。これらは、特定のコンテナー情報に自動的に置き換えられます。
これらの例 (Docker のみの環境および Kubernetes の場合) は 、NGINX 統合を 構成して、イメージ名に nginx
が含まれ、ラベルが env=production
であるすべてのローカル コンテナーを監視する方法を示しています。各サービスは異なる IP とポートを介して利用できるため、それらは変数である必要があります。
ディスカバリー・プロパティの追加
検出を構成するには、次のプロパティを使用して、インテグレーション設定 YAML にdiscovery
エントリを設定します。 allプロパティが定義された値と一致する場合、コンテナーは一致します。
ヒント
一致させる値が/.../
の間に設定されていない限り、プロパティ値はexact stringと一致します。 スラッシュ内の内容は正規表現として一致します。
発見キー名 | 説明 |
---|---|
タイプ文字列 | 検出プロセスの数を最小限に抑えるために使用される、キャッシュされた検出結果の Time-To-Live。数値の後に時間単位 ( 例: デフォルト:1m |
タイプYAMLプロパティ | 定義に一致する Docker コンテナー。これは、次のマップを含む
|
発見例
次の例は、イメージがhttpd:
(正規表現として提供) で始まり、 scrapable=yes
というラベルが付いているすべての Docker コンテナーに一致します。結果は 5 分の Time-To-Live でキャッシュされます。
discovery: ttl: 5m docker: match: image: /^httpd:/ label.scrapable: yes
利用可能なコンテナ情報
ディスカバリー機能は現在、以下の変数を発信しており、これらは統合の設定に使用できます。インフラストラクチャエージェントは、これらの変数を、検出されたコンテナの対応する値に置き換えます。
重要
必ずdiscovery.
プレフィックスを追加してください。
変数 | 説明 |
---|---|
| コンテナのパブリックIPアドレス(ある場合 |
| コンテナのプライベートIPアドレス |
| コンテナのパブリックポート番号 |
| コンテナのプライベートポート番号 |
| 画像名 |
| コンテナ名 |
| 任意の容器のラベル、その名前でアクセス可能 |
複数のポートのマッピング
コンテナが多くのプライベート ポートまたはパブリック ポートを公開している場合、 discovery.private.ports.
またはdiscovery.ports.
の後に 0 から始まるインデックスを使用してアクセスできます。ポートは、プライベート ポートの値が小さいものから大きいものへとインデックス付けされます。
例えば、80番と443番のプライベートポートを、それぞれ2345番と1111番のパブリックポートを介して公開するコンテナでは、以下の変数にそれぞれの値を指定します。
変数 | 価値 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
重要
port
という単語は、インデックスのない変数では単数形であり、インデックスのある変数では複数形であることに注意してください。
プロトコル名によるポートのマッピング
前のセクションのインデックスに加えて、ポートはそのプロトコル名 ( tcp
、 udp
など) で参照することもできます。たとえば、 ${discovery.ports.tcp}
または${discovery.ports.udp}
です。
複数のポートが同じプロトコルに一致する場合、前のセクションのルールによってインデックスを作成することもできます: ${discovery.ports.tcp.0}
、 ${discovery.ports.tcp.1}
など。