AWS IoT Core の AWS IoT ログのデフォルトのロギング設定を設定して、コストとデータトラフィックの両方を削減したいと考えています。
簡単な説明
**メモ:**この記事は、V2 の AWS IoT Core ログのみを対象としています。
AWS IoT Core のデフォルトロギングを低冗長度レベルに設定し、リソース固有のロギングをより詳細なレベルに設定するのがベストプラクティスです。ログの詳細度レベルには、無効 (最低)、エラー、警告、情報、デバッグ (最高) が含まれます。
**重要:**AWS IoT Core のフリートサイズによっては、より詳細なログレベルを有効にすると、コストが高くなり、トラブルシューティングが難しくなる可能性があります。より詳細なログレベルを有効にすると、データトラフィックも増加します。INFO または DEBUG は、トラブルシューティング時の一時的な手段としてのみ使用するのがベストプラクティスです。トラブルシューティングが完了したら、ロギングレベルを詳細度の低い設定にリセットします。
解像度
前提条件
AWS コマンドラインインターフェイス (AWS CLI) が IoT 管理者権限認証情報とともにローカルにインストールされていることを確認してください。AWS CLI のデフォルトの AWS リージョンは、対象の AWS リージョンを指している必要があります。登録済みまたは未登録の IoT Things として、クライアントを AWS IoT Core エンドポイントに接続してやり取りする必要があります。
**メモ:**AWS CLI コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
デフォルトのロギングレベルを設定
AWS IoT ログのデフォルトのログレベルを ERROR または WARN に設定すると、ログエラーや警告が発生したときに確認できます。
**メモ:**AWS サポートに連絡して支援を求める場合は、トラブルシューティングのために AWS IoT Core ログを提供する必要があります。この情報は顧客データと見なされ、AWS サポートからはアクセスできません。
1. [list-v2-logging-levels] AWS CLI コマンドを実行して、現在適用されているロギングレベルの設定を確認してください。
aws iot list-v2-logging-levels
ログレベルが設定されていないために AWS IoT ログが設定されていない場合、NotConfiguredException エラーが表示されます。
AWS IoT Core ログが設定されているがオフになっている場合は、次のような出力が表示されます。
{
"logTargetConfigurations": [
{
"logTarget": {
"targetType": "DEFAULT"
},
"logLevel": "DISABLED"
}
]
}
2. 次のコマンドを実行して、AWS IoT Core ログに現在設定されている AWS ID およびアクセス管理 (IAM) ロールを確認します。
aws iot get-v2-logging-options
IAM ロールが設定されている場合、次のような出力が表示されます。
{
"roleArn": "arn:aws:iam::123456789012:role/service-role/iot-log-role",
"defaultLogLevel": "DISABLED",
"disableAllLogs": false
}
**メモ:**IAM ロールが設定されていない場合、AWS IoT Core は Amazon CloudWatch にログを送信できず、この機能は使用できません。
3. AWS IoT Core のデフォルトロギングを、ERROR や WARN などの冗長性の低いロギングレベルのいずれかに設定します。これは AWS IoT コンソールまたは AWS CLI を使用して実行できます。
**メモ:**問題をトラブルシューティングしていて、特定のクライアント属性がない場合は、デフォルトのログレベルを一時的に DEBUG に設定できます。レベルを DEBUG に設定すると、車両のサイズとこのレベルで費やした時間によっては、多大なコストとデータトラフィックが発生します。
AWS IoT コンソール
1. AWS IoTコンソールにサインインします。**メモ:**設定する AWS リージョンを必ず選択してください。
2. ナビゲーションペインで、[設定] を選択します。
3. [ログ] で [ログの管理] を選択します。
4. [ログロール]で、[ロールを作成] を選択します。ロールの名前を入力して、[作成] を選択します。
5. [ログレベル] で、詳細度の低いログレベル (ERROR または WARN) のいずれかを選択します。
6. [更新] を選択します。
7. IAM コンソールを開きます。
8. ナビゲーションペインで、[Roles] を選択します。
9. 検索ボックスに作成したログロールの名前を入力し、ロールを選択します。
10. [概要]に、ログロールの ARN を書き留めます。[arn: aws: iam:: 123456789012: role/service-role/iot-log-role] に似ています。
AWS CLI
1. AWS IoT Core ログサービスに使用する特定の IAM ポリシーを含む IAM ロールを作成します。
2. 次のコマンドを実行して、デフォルトのログレベルを WARN に設定します。
aws iot set-v2-logging-options \
--role-arn arn:aws:iam::123456789012:role/service-role/iot-log-role \
--default-log-level WARN
メモ:この例では、[--role-arn] を作成した IAM ロールの ARN に置き換えます。WARN を、デフォルトレベルとして設定したいログレベルに置き換えます。
3. 次のコマンドを実行して、変更がロギングレベルに反映されていることを確認します。
aws iot list-v2-logging levels
出力は次のメッセージのようになります。
{
"logTargetConfigurations": [
{
"logTarget": {
"targetType": "DEFAULT"
},
"logLevel": "WARN"
}
]
}
4. 次のコマンドを実行して、変更がロギングオプションに反映されていることを確認します。
aws iot list-v2-logging-options
出力は次のメッセージのようになります。
{
"roleArn": "arn:aws:iam::123456789012:role/service-role/iot-log-role",
"defaultLogLevel": "WARN",
"disableAllLogs": false
}
生成されたログを監視
IoT ログに問題や問題がないか監視するのがベストプラクティスです。Amazon CloudWatch ログコンソールまたは AWS CLI のいずれかを使用して AWS IoT Core ログをモニタリングできます。詳細については、AWS IoT Core で AWS IoT ログのログレベルを最適に管理するにはどうすればよいですか?の「ログエントリの監視」セクションをご覧ください。
関連情報
AWS IoT のモニタリング
AWS IoT Core の特定のリソースのログレベルを動的に設定する方法を教えてください。
AWS IoT Core の特定のリソースのログレベルを手動で設定する方法を教えてください。