applicationName および subsystemName メタデータ・フィールドにカスタム値を設定するエージェントの構成
ロギング・エージェントがIBM Cloud Logsサービスにログを送信するように設定できます。
送信するログには、applicationName と subsystemName のメタデータフィールドの値を含める必要があります。
デフォルトでは、ロギング・エージェントを設定すると、エージェントはこれらのフィールドにデフォルト値を設定します。 デフォルト値を置き換えるために、独自のカスタム値を設定することができます。 デフォルト値の詳細については、メタデータ・フィールド を参照してください。
IBM Cloud Logsでは、applicationName と subsystemName のメタデータフィールドを使って、以下の機能のいずれかを設定できます:
- TCOポリシー
- 解析ルール
- データ利用レポート
- アラート
- ビュー
- ダッシュボード
- イベントから測定基準まで
- ロギング
IBM Cloud Logs については、IBM Cloud Logs ドキュメント を参照してください。
カスタム値を設定するエージェントの設定
ロギング・エージェントは、APIオプションを指定することで、applicationName と subsystemName のメタデータフィールドにカスタム値を設定することができます。
-
-aを使って、使いたいapplicationNameを指定します。デフォルトでは、
applicationNameは Red Hat OpenShift on IBM Cloud または IBM Cloud Kubernetes Service クラスタの名前空間名kubernetes.namespace_nameになります。また、
'${POD_NAMESPACE}'のように、環境変数を使ってカスタム値を設定することもできます。 -
-sを使って、使いたいsusbsystemNameを指定します。デフォルトでは、
subsystemNameはRed Hat OpenShift on IBM CloudまたはIBM Cloud Kubernetes Serviceクラスタのコンテナ名kubernetes.container_nameになります。たとえば
'${POD_NAME}'のように、環境の変数を使うこともできます。
これらのメタデータ・フィールドを設定する際、以下のオプションがある:
- 値を固定文字列に設定できる。 たとえば、
-s 'production'を使うことができます。 - 例えば
-a '${POD_NAMESPACE}'のように、環境変数が使えます。 - 例えば
-a 'mycluster:${POD_NAME}'のように、固定文字列と環境の変数を組み合わせることができます。
applicatioName、subsystemName、またはその両方を設定できます。 値が設定されていない場合は、デフォルト値が適用される。 applicationName と subsystemName のメタデータフィールドに設定されるデフォルト値については、メタデータを参照してください。
例動的な値の設定
ロギング・エージェントを applicationName と subsystemName メタデータ・フィールドのカスタム動的値で構成するには、Kubernetesクラスタに以下のようにエージェントをデプロイします:
curl -sSL https://ibm.biz/logs-router-setup | bash -s -- -v 1.1.1 -m IAMAPIKey -k xxxx -t Kubernetes -r eu-es -p 3443 -s '${POD_NAME}' -a '${POD_NAMESPACE}'
例固定値と動的値を組み合わせた値の設定
ロギング・エージェントを applicationName と subsystemName メタデータ・フィールドのカスタム値で構成するには、Kubernetesクラスタに以下のようにエージェントをデプロイします:
curl -sSL https://ibm.biz/logs-router-setup | bash -s -- -v 1.1.1 -m IAMAPIKey -k xxxx -t Kubernetes -r eu-es -p 3443 -s '${POD_NAME}' -a 'mycluster-dallas:${POD_NAMESPACE}'
この例では、クラスタ名を文字列として追加している。
例固定値の設定
ロギング・エージェントを、applicationName と subsystemName メタデータ・フィールドのカスタム固定値で構成するには、Kubernetesクラスタに以下のようにエージェントをデプロイします:
curl -sSL https://ibm.biz/logs-router-setup | bash -s -- -v 1.1.1 -m IAMAPIKey -k xxxx -t Kubernetes -r eu-es -p 3443 -s 'mysubsystem' -a 'myapp'
ログラインに基づいてカスタム値を設定するエージェントの設定
ログ行に応じて、アプリケーション名とサブシステム名の値を動的に追加できます。
次の例では、Kubernetes クラスター用に、JSON フォーマットのメッセージにカスタム・アプリケーション名を追加するエージェントを構成する方法を示します:
-
applicationNameをログ行に追加する。
例えば、ログラインは次のようになる:
{"level":"info", "msg":"Test message", "applicationName":"my-application"} -
JSON PARSERプラグインを
logger-agent-iks.yamlファイルに追加して、stingifyのJSONをJSONオブジェクトに変換します。 詳細は JSONを参照。[PARSER] # Converts the original log source from a JSON map string to the internal binary representation. Name json Format json # Time_Key: Set the time in your log entry to the log record time included with the log. If not set, Fluenti Bit uses its own time. Time_Key time Time_Format %d/%b/%Y:%H:%M:%S %z # Time_Keep: To keep all fields in the original log record Time_Keep On -
PARSER プラグインを
logger-agent-iks.yamlファイルに追加して、ログからフィールドを抽出します。 詳細は パーサーを参照。デフォルトでは、パーサープラグインは解析されたフィールドのみを出力に保持します。
[FILTER] # Name: Specify the name of the parser Name parser # Match: A pattern that is used to match against the tags that are defined on incoming records. Match * # Key_Name: Specify the field name in the log to be parsed. Key_Name message # Parser: Specify the parser name to interpret the field. Parser json # Reserve_Data: Set to keep all the fields Reserve_Data On # preserve_key: Set to keep the original key field. Preserve_Key On -
Nest filterプラグインを使用してアプリケーション名を抽出する
ネスト・フィルター・プラグインは、ネストされたデータを操作することができます。 その動作モードは次のとおりである:
nestでは、レコードのセットを受け取り、それをマップに入れる。liftでは、キーによってマップを受け取り、そのレコードを持ち上げる。 詳しくは ネストを参照。applicationNameはトップレベルでなければならないので、
liftオペレーションを使わなければなりません。[FILTER] ネスト名 マッチ 操作リフト ネスティッド_アンダーメッセージ ワイルドカード applicationName
このようにすると、上記のログ行の例の"applicationName"は、その特定の行では "my-application "となります。