AWS IoT Core ログにリソース固有のロギングを手動で設定したいのですが。
簡単な説明
**メモ:**この記事は、AWS IoT Core ログの V2 のみを対象としています。
AWS IoT Core ログでは、以下のリソース固有のログレベルを設定できます:
- モノとして登録されたクライアント
- モノとして登録されていないクライアント
これは、特定のターゲットタイプのロギングレベルを作成し、その詳細レベルを設定することによって行われます。ターゲットタイプには、THING\ _GROUP、CLIENT_ID、SOURCE_IP、または PRINCIPAL_ID が含まれます。デフォルトのロギングを低い詳細レベルに設定し、リソース固有のロギングをより高い詳細レベルに設定するのがベストプラクティスです。
ログの詳細度レベルには、DISABLED (最低)、ERROR、WARN、INFO、DEBUG (最高) が含まれます。
**重要:**AWS IoT Core のフリートサイズによっては、より詳細なログレベルを有効にすると、コストが高くなり、トラブルシューティングが難しくなる可能性があります。詳細ログを有効にすると、データトラフィックも増加します。INFO または DEBUG は、トラブルシューティング時の一時的な対策としてのみ使用してください。トラブルシューティングが完了したら、ロギングレベルを詳細度の低い設定に戻す必要があります。
解像度
前提条件
AWS コマンドラインインターフェイス (AWS CLI) が IoT 管理者権限認証情報とともにローカルにインストールされていることを確認してください。AWS CLI のデフォルトの AWS リージョンは、対象の AWS リージョンを指している必要があります。登録済みまたは未登録の IoT Things として、クライアントを AWS IoT Core エンドポイントに接続してやり取りする必要があります。
**メモ:**AWS CLI コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
モノとして登録されたクライアントの手動ロギングの設定
定義したログレベルで複数のモノのリソース固有のロギングを管理し、モノグループに手動で追加または削除できます。デバイスとクライアントは AWS IoT Core に IoT Thing として登録され、同じクライアント ID に関連付けられたモノ名を使用して接続する必要があります。その後、ターゲットタイプが THING\ _GROUP の静的モノグループを使用してモノグループを管理できます。階層内で親モノグループを設定すると、その設定は階層の子モノグループにも適用されます。
**メモ:**静的モノグループをターゲットタイプとして使用する場合は、そのクォータ制限を考慮する必要があります。詳細については、「AWS IoT Core のモノグループのリソース制限と割り当て」を参照してください。
1.2 つの静的モノグループを作成します。これを行うには、AWS IoT コンソールを使用するか、AWS CLI のcreate-thing-group コマンドを使用します。この例では、AWS CLI が使用されています。
aws iot create-thing-group --thing-group-name logging_level_info
aws iot create-thing-group --thing-group-name logging_level_debug
メモ:既存のモノグループを使用している場合は、logging\ _level\ _info と logging\ _level\ _debug を自分のモノグループの名前に置き換えてください。
出力は次のメッセージのようになります:
{
"thingGroupName": "logging_level_info",
"thingGroupArn": "arn:aws:iot:eu-west1-1:123456789012:thinggroup/logging_level_info",
"thingGroupId": "58dd497e-97fc-47d2-8745-422bb21234AA"
}
{
"thingGroupName": "logging_level_debug",
"thingGroupArn": "arn:aws:iot:eu-west-1:123456789012:thinggroup/logging_level_debug",
"thingGroupId": "2a9dc698-9a40-4487-81ec-2cb4101234BB"
}
2.setV2LoggingLevel コマンドを実行して、モノグループのロギングレベルを設定します: **メモ:**ログレベルの設定変更が反映されるまでに最大 10 分かかることがあります。
aws iot set-v2-logging-level \
--log-target targetType=THING_GROUP,targetName=logging_level_info \
--log-level INFO
aws iot set-v2-logging-level \
--log-target targetType=THING_GROUP,targetName=logging_level_debug \
--log-level DEBUG
**メモ:**INFO と DEBUG は、モノグループごとに設定したいログレベルに置き換えてください。
3.次のコマンドを実行して、ロギングレベルが正しく設定されていることを確認します:
aws iot list-v2-logging-levels
出力は次のメッセージのようになります:
{
"logTargetConfigurations": [
{
"logTarget": {
"targetType": "DEFAULT"
},
"logLevel": "WARN"
},
{
"logTarget": {
"targetType": "THING_GROUP",
"targetName": "logging_level_debug"
},
"logLevel": "DEBUG"
},
{
"logTarget": {
"targetType": "THING_GROUP",
"targetName": "logging_level_info"
},
"logLevel": "INFO"
}
]
}
4.AddThingToThingGroup コマンドを実行して、適切なモノグループにモノを追加します:
aws iot add-thing-to-thing-group \
--thing-name YourThingName1 \
--thing-group-name logging_level_info
**メモ:**YourThingName1 は、モノグループに追加するモノの名前に置き換えてください。
モノとして登録されていないクライアントの手動ロギングの設定
AWS IoT Core にモノを登録しない場合でも、複数のターゲットタイプにリソース固有のロギングレベルを追加できます。これらのターゲットタイプはクライアント属性であり、CLIENT_ID、SOURCE_IP、または PRINCIPAL_ID が含まれます。デバイスが既に AWS IoT Core のモノとして登録されている場合でも、これらのクライアント属性を使用してログレベルを管理できます。
1.SetV2LoggingLevel コマンドを実行して、特定のクライアントのロギングレベルを設定します:
aws iot set-v2-logging-level \
--log-target targetType=CLIENT_ID,targetName=YourClientId \
--log-level YourLogLevel
**メモ:**別のターゲットタイプを使用するには、CLIENT\ _ID を、ターゲットクライアントが使用するサポートされている値 (SOURCE\ _IP や PRINCIAL\ _ID など) に置き換えます。
2.次のコマンドを実行して、ログレベルが正しく設定されていることを確認します:
aws iot list-v2-logging-levels
出力は次のメッセージのようになります:
...
{
"logTarget": {
"targetType": "CLIENT_ID",
"targetName": "YourClientId"
},
"logLevel": "YourLogLevel"
}
...
生成されたログの監視
IoT ログに課題や問題がないか監視するのがベストプラクティスです。Amazon CloudWatch Logs コンソールまたは AWS CLI のいずれかを使用して AWS IoT Core ログをモニタリングできます。詳細については、「AWS IoT Core で AWS IoT ログのログレベルを最適に管理するにはどうすればよいですか?」の「ログエントリの監視」セクションを参照してください。
関連情報
AWS IoT のモニタリング
AWS IoT Core のデフォルトのログ設定はどのように設定すればよいですか?
AWS IoT Core の特定のリソースのログレベルを動的に設定する方法を教えてください。