• ログイン

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

オンホスト統合のためのコンテナ自動発見機能

コンテナ自動検出機能では、複数のコンテナで実行されるサービスを自動的に監視するように統合を構成することができます。統合の構成ファイルで、コンテナのマッチング基準を設定すると、エージェントは基準に合致する各ローカルコンテナに対して統合を実行します。

統合は、ディスカバリー要素を見つけた回数だけ実行されます。ディスカバリーでコンテナが見つからなかった場合、統合は実行されません。

ヒント

現在、 インフラストラクチャエージェント は、ローカルのDockerコンテナを発見することができます。

設定にプレースホルダーを追加

統合設定では、 ${discovery.<property>} を作成する必要があります。 プレースホルダーを作成する必要があります。その後、これらは自動的に特定のコンテナ情報に置き換えられます。

これらの例(Dockerのみの環境用とKubernetes用)は、 NGINXインテグレーション を設定して、 nginx を含むイメージ名を持ち、 env=production とラベル付けされているすべてのローカルコンテナを監視する方法を示しています。それぞれのサービスは、異なるIPとポートで利用できるため、変数を設定する必要があります。

ディスカバリー・プロパティの追加

ディスカバリーを設定するには、統合設定のYAMLに、以下のプロパティを使って discovery エントリを設定します。 すべての プロパティが定義された値と一致した場合に、コンテナがマッチします。

ヒント

プロパティの値は、 正確な文字列 で照合されます。ただし、照合する値が /.../ の間に設定されている場合は除きます。スラッシュの中の内容は、 正規表現 として照合されます。

発見キー名

説明

ttl

タイプ文字列

キャッシュされたディスカバリーの結果のTime-To-Liveは、ディスカバリープロセスの数を最小化するために使用されます。数字の後に時間単位をつけて定義します(s, m or h )。

例: 30s, 10m, 1h, 0

デフォルト:1m

docker

タイプYAMLプロパティ

Dockerコンテナのマッチング定義。これは、 match プロパティに含まれるマップで構成されています。

  • 各キーは以下のプロパティのいずれかです。

  • 値は、返されたコンテナに対する与えられたプロパティの期待値です。

  • コンテナは、すべてのプロパティが一致した場合にマッチします(AND演算)。

    利用可能なYAMLキーは以下の通りです。

  • ip: コンテナの外部IPアドレス(ある場合)。

  • private.ip: コンテナのプライベートIPアドレス

  • ポート: コンテナ外部ポート番号

  • private.port: コンテナのプライベートポート番号

  • 画像 :画像名

  • 名前: コンテナ名

  • ラベルです。<ラベル名> : 任意のコンテナラベルで、その名前でアクセスできます。

発見例

次の例では、イメージが httpd: (正規表現で指定)で始まり、 scrapable=yes と表示されているすべてのDockerコンテナにマッチします。結果はTime-To-Liveを5分に設定してキャッシュされます。

discovery:
ttl: 5m
docker:
match:
image: /^httpd:/
label.scrapable: yes

利用可能なコンテナ情報

ディスカバリー機能は現在、以下の変数を発信しており、これらは統合の設定に使用できます。インフラストラクチャエージェントは、これらの変数を、検出されたコンテナの対応する値に置き換えます。

重要

必ず、 discovery. のプレフィックスを付けてください。

変数

説明

${discovery.ip}となります。

コンテナのパブリックIPアドレス(ある場合

${discovery.private.ip}となります。

コンテナのプライベートIPアドレス

${discovery.port}の

コンテナのパブリックポート番号

${discovery.private.port}を使用しています。

コンテナのプライベートポート番号

${discovery.image}。

画像名

${discovery.name}の

コンテナ名

${discovery.label.<ラベル名>}。

任意の容器のラベル、その名前でアクセス可能

複数のポートのマッピング

コンテナが多くのプライベートポートやパブリックポートを公開している場合、それらのポートには discovery.private.ports. または discovery.ports. の後に 0 から始まるインデックスを付けてアクセスすることができます。ポートは、プライベートポートの値が低いものから高いものへとインデックスされます。

例えば、80番と443番のプライベートポートを、それぞれ2345番と1111番のパブリックポートを介して公開するコンテナでは、以下の変数にそれぞれの値を指定します。

変数

${discovery.private.ports.0}になります。

80 (最も低いプライベートポート)

${discovery.private.ports.1}になります。

443 (最高のプライベートポート)

${discovery.ports.0}になります。

2345 (プライベートポート0にマッピングされているパブリックポート)

${discovery.ports.1}になります。

1111 (プライベートポート1へのパブリックポートのマッピング)

${discovery.private.port}を使用しています。

80 ( ${discovery.private.ports.0}と同じ))

${discovery.port}の

2345 ( ${discovery.ports.0}と同じ))

重要

port の単語は、インデックスのない変数では単数形で、インデックスのある変数では複数形であることに注意してください。

プロトコル名によるポートのマッピング

前節の索引に加えて、ポートはプロトコル名でも参照できます(例えば、 tcp, udp, など)。例えば、 ${discovery.ports.tcp}。 または ${discovery.ports.udp}。

複数のポートが同じプロトコルにマッチする場合、前節のルールでインデックスを作成することもできます: ${discovery.ports.tcp.0} 。, ${discovery.ports.tcp.1} となります。 、などです。

Copyright © 2022 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.