コンテナ自動検出機能では、複数のコンテナで実行されるサービスを自動的に監視するように統合を構成することができます。統合の構成ファイルで、コンテナのマッチング基準を設定すると、エージェントは基準に合致する各ローカルコンテナに対して統合を実行します。
統合は、ディスカバリー要素を見つけた回数だけ実行されます。ディスカバリーでコンテナが見つからなかった場合、統合は実行されません。
ヒント
現在、 インフラストラクチャエージェント は、ローカルのDockerコンテナを発見することができます。
設定にプレースホルダーを追加
統合設定では、 ${discovery.<property>} を作成する必要があります。
プレースホルダーを作成する必要があります。その後、これらは自動的に特定のコンテナ情報に置き換えられます。
これらの例(Dockerのみの環境用とKubernetes用)は、 NGINXインテグレーション を設定して、 nginx
を含むイメージ名を持ち、 env=production
とラベル付けされているすべてのローカルコンテナを監視する方法を示しています。それぞれのサービスは、異なるIPとポートで利用できるため、変数を設定する必要があります。
ディスカバリー・プロパティの追加
ディスカバリーを設定するには、統合設定のYAMLに、以下のプロパティを使って discovery
エントリを設定します。 すべての プロパティが定義された値と一致した場合に、コンテナがマッチします。
ヒント
プロパティの値は、 正確な文字列 で照合されます。ただし、照合する値が /.../
の間に設定されている場合は除きます。スラッシュの中の内容は、 正規表現 として照合されます。
発見キー名 | 説明 |
---|---|
タイプ文字列 | キャッシュされたディスカバリーの結果のTime-To-Liveは、ディスカバリープロセスの数を最小化するために使用されます。数字の後に時間単位をつけて定義します( 例: デフォルト:1m |
タイプYAMLプロパティ | Dockerコンテナのマッチング定義。これは、
|
発見例
次の例では、イメージが httpd:
(正規表現で指定)で始まり、 scrapable=yes
と表示されているすべてのDockerコンテナにマッチします。結果はTime-To-Liveを5分に設定してキャッシュされます。
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} となります。
、などです。