• English日本語한국어
  • ログイン今すぐ開始

この機械翻訳は参考用に提供されます。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、こちらのページをご覧ください。

問題を作成する

ECS統合のトラブルシューティング冗長なログの生成

問題

オンホストECS統合のトラブルシューティング 、エラーを発見して調査するために、数分間の詳細なログを生成することができます。これは、自分自身のトラブルシューティングを行う際や、 New Relic のサポート に情報を提供する際に役立ちます。

詳細なロギングは、非常に迅速に大量のデータを生成します。ログの生成が終了したら、ディスク領域の消費を減らすために必ずverbose: 0を設定してください。

newrelic-infra-ctlコマンドを使用して、このプロセスを自動化できます。詳しくは、実行中のエージェントのトラブルシューティングを参照してください。

解決

冗長なログファイルを生成するには、タスク定義ファイルを編集する必要があります。該当するすべての設定を含む設定ファイルのサンプルについては、 Infrastructure configuration settings を参照してください。

冗長なログの実装にはいくつかのオプションがあります。

タスク定義環境変数の使用

環境変数を変更してタスクの再起動を行うことで、冗長なログを有効にすることができます。

  1. タスク定義を編集します。NRIA_VERBOSEの値を0から次のように変更します。

    • 1 常時詳細ログ用
    • 2 スマートロギング用
    • 3 New Relicへの送信用

    これらのオプションについて 詳しく読む.

  2. タスク定義を保存します。

  3. 新しく登録されたタスク定義を使用するように、サービスを更新します。

  4. NRIA_VERBOSE=3を選択し、ログを New Relic に直接送信しない場合は、ログを表示およびダウンロードするための 2 つのオプションがあります。

  5. 設定をデフォルトに戻します。

    1. タスク定義を編集し、 NRIA_VERBOSE0に設定して、詳細ログを無効にします。
    2. タスク定義を保存します。
    3. サービスを最新のタスクに更新してください。
  6. ログファイルにエラーがないか調べてください。

  7. ログファイルを New Relic support に送る必要がある場合。

    1. ECSインテグレーションのバージョンを含む行をログファイルに含めてください。

      New Relic ECS integration version X.YY.ZZZ
    2. そのログファイルを、タスク定義の.ymlファイルと一緒にサポートチケットに添付してください。

SSHによるログの取得(EC2起動タイプのみ)

SSHでログを取得するには

  1. タスク定義を編集します。NRIA_VERBOSEの値を0から次のように変更します。

    • 1 常時詳細ログ用
    • 2 スマートロギング用
    • 3 New Relicへの送信用

    これらのオプションについて 詳しく読む.

  2. いずれかのコンテナ・インスタンスにSSHで接続します。

  3. コマンドdocker ps -aを実行して、New Relic 統合コンテナーのコンテナー ID を見つけます。コンテナーの名前はnri-ecsでなければなりません。

  4. コマンドdocker logs NRI_ECS_CONTAINER_ID > logs.txtを使用してコンテナからログを保存します。コマンドを約 3 分間実行したままにして、十分なログ データを生成します。

  5. enable verbose logs のセクションの指示に従ってください。

ログをCloudWatchに転送し、awscliでダウンロードする。

CloudWatchでログを取得するには

  1. タスク定義を編集します。NRIA_VERBOSEの値を0から次のように変更します。

    • 1 常時詳細ログ用
    • 2 スマートロギング用
    • 3 New Relicへの送信用

    これらのオプションについて 詳しく読む.

  2. /newrelic-infra/ecsという CloudWatch ログ グループを使用してログを転送します。既に存在するかどうかを確認するには、次を実行します。

    aws logs describe-log-groups --log-group-name-prefix /newrelic-infra/ecs

    そのプレフィックスを持つロググループが存在すれば、このような出力が得られます。

    {
    "logGroups": [
    {
    "logGroupName": "/newrelic-infra/ecs",
    "creationTime": 1585828615225,
    "metricFilterCount": 0,
    "arn": "arn:aws:logs:YOUR_REGION:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:*",
    "storedBytes": 122539356
    }
    ]
    }

    このコマンドはログ グループとプレフィックスを照合するため、返されるログ グループ名が正確に/newrelic-infra/ecsであることを確認してください。ログ グループが存在しない場合、出力は次のようになります。

    {
    "logGroups": []
    }
  3. ロググループが存在しない場合は、実行して作成してください。

    aws logs create-log-group --log-group-name /newrelic-infra/ecs
  4. タスク定義を編集します。newrelic-infraコンテナのコンテナ定義で、次のlogConfigurationを追加します。

    "logConfiguration": {
    "logDriver": "awslogs",
    "options": {
    "awslogs-group": "/newrelic-infra/ecs",
    "awslogs-region": "AWS_REGION_OF_YOUR_CLUSTER",
    "awslogs-stream-prefix": "verbose"
    }
    }
  5. 新しいタスクのバージョンを登録し、サービスを更新します。

  6. 次に、関連するログ ストリームを探します。実行中のタスクのインスタンスが複数ある場合、それらはすべてログを同じログ グループに送信しますが、それぞれに独自のログ ストリームがあります。ログ ストリーム名は構造AWSLOGS_STREAM_PREFIX/TASK_FAMILY_NAME/TASK_IDに従います。この場合、 verbose/newrelic-infra/TASK_IDになります。

    指定したロググループのすべてのログストリームを取得するには、次のコマンドを実行します。

    aws logs describe-log-streams --log-group-name /newrelic-infra/ecs

    以下は、2つのストリームを持つロググループの出力例です。

    {
    "logStreams": [
    {
    "logStreamName": "verbose/newrelic-infra/9dfb28114e40415ebc399ec1e53a21b7",
    "creationTime": 1586166741197,
    "firstEventTimestamp": 1586166742030,
    "lastEventTimestamp": 1586173933472,
    "lastIngestionTime": 1586175101220,
    "uploadSequenceToken": "49599989655680038369205623273330095416487086853777112338",
    "arn": "arn:aws:logs:AWS_REGION_OF_YOUR_CLUSTER:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:log-stream:verbose/newrelic-infra/9dfb28114e40415ebc399ec1e53a21b7",
    "storedBytes": 0
    },
    {
    "logStreamName": "verbose/newrelic-infra/f6ce0be416804bc4bfa658da5514eb00",
    "creationTime": 1586166745643,
    "firstEventTimestamp": 1586166746491,
    "lastEventTimestamp": 1586173037927,
    "lastIngestionTime": 1586175100660,
    "uploadSequenceToken": "49605664273821671319096446647846424799651902350804230514",
    "arn": "arn:aws:logs:AWS_REGION_OF_YOUR_CLUSTER:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:log-stream:verbose/newrelic-infra/f6ce0be416804bc4bfa658da5514eb00",
    "storedBytes": 0
    }
    ]
    }
  7. ログ ストリームの前のリストから、ログを取得するタスク ID を持つものを特定し、次のコマンドで logStreamName を使用します。

    aws logs get-log-events --log-group-name /newrelic-infra/ecs --log-stream-name "LOG_STREAM_NAME" --output text > logs.txt
  8. enable verbose logs の指示に従ってください。

実行中のコンテナから

実行中のコンテナからコマンドを実行して冗長なログを有効にするには

  1. いずれかのコンテナ・インスタンスにSSHで接続します。

  2. コマンドdocker ps -aを実行して、New Relic 統合コンテナーのコンテナー ID を見つけます。コンテナーの名前はnri-ecsでなければなりません。

  3. newrelic-infra-ctlを使用して、限られた期間の詳細ログを有効にします。次のコマンドを実行します。

    docker exec INTEGRATION_CONTAINER_ID /usr/bin/newrelic-infra-ctl

    詳細については、 Troubleshoot agent をご覧ください。

  4. コマンドでコンテナのログを保存します。

    docker logs INTEGRATION_CONTAINER_ID > logs.txt

    十分なログデータを生成するため、コマンドを約3分間実行します。

  5. ログファイルにエラーがないか調べてください。

ログファイルを New Relic support に送る必要がある場合。

  1. ECSインテグレーションのバージョンを含む行をログファイルに含めてください。

    New Relic ECS integration version X.YY.ZZZ
  2. そのログファイルを、タスク定義の.ymlファイルと一緒にサポートチケットに添付してください。

Copyright © 2024 New Relic Inc.

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