インベントリデータの集計
AWS Systems Manager インベントリのマネージドノードを設定した後、インベントリデータの集計カウントを表示できます。例えば、数十または数百のマネージドノードで AWS:Application
インベントリタイプを収集するように設定されている場合を考えます。このセクションの情報を使用することで、このデータを収集するように設定されているノードの数を正確に把握できます。
データ型で集計することで、特定のインベントリの詳細を確認することもできます。例えば、AWS:InstanceInformation
インベントリタイプは、Platform
データ型とオペレーティングシステムのプラットフォーム情報を収集します。Platform
データ型でデータを集計することで、Windows を実行するノードの数、Linux を実行するノードの数、macOS を実行するノードの数を速やかに確認できます。
このセクションの手順では、AWS Command Line Interface (AWS CLI) を使用して、集計されたインベントリデータ数を表示する方法について説明します。AWS Systems Manager コンソールの [インベントリ] ページで、事前設定された集計カウントを表示することもできます。これらの事前設定されたダッシュボードは、インベントリインサイトと呼ばれ、インベントリ設定の問題を 1 クリックで修復する機能が用意されています。
インベントリデータの集計カウントに関する以下の重要な詳細情報に注意してください。
-
インベントリデータを収集するように設定されたマネージドノードを終了すると、Systems Manager はインベントリデータを 30 日間保持し、その後削除します。実行中のノードの場合、システムは 30 日以上経過した古いインベントリデータを削除します。インベントリデータを 30 日以上保存する必要がある場合は、AWS Config を使用して履歴を記録したり、データを定期的にクエリして Amazon Simple Storage Service (Amazon S3) バケットにアップロードしたりできます。
-
以前に特定のインベントリデータタイプ (
AWS:Network
など) をレポートするようにノードが設定されていて、後で設定を変更し、そのタイプの収集を停止する場合は、ノードが終了し 30 日間が経過するまで、集計カウントにAWS:Network
データが表示されます。
特定の AWS アカウント のすべてのノード (およびそのアカウントで作成される可能性がある将来のノード) に対してインベントリデータを迅速に設定および収集する方法については、「AWS アカウント のすべてのマネージドイノードインベントリする」を参照してください。
トピック
特定のタイプのデータを収集するノードのカウントを表示するためのインベントリデータの集計
AWS Systems Manager GetInventory API オペレーションを使用して、1 つ以上のインベントリタイプとデータ型を収集するノードの集計数を表示できます。例えば、AWS:InstanceInformation
インベントリタイプでは、GetInventory API オペレーションで AWS:InstanceInformation.PlatformType
データ型を使用することにより、オペレーティングシステムの集計を表示できます。AWS CLI コマンドの例と出力を次に示します。
aws ssm get-inventory --aggregators "Expression=AWS:InstanceInformation.PlatformType"
システムが以下のような情報をレスポンスします。
{ "Entities":[ { "Data":{ "AWS:InstanceInformation":{ "Content":[ { "Count":"7", "PlatformType":"windows" }, { "Count":"5", "PlatformType":"linux" } ] } } } ] }
開始方法
カウントを表示するインベントリタイプとデータ型を決定します。AWS CLI で次のコマンドを実行して、集計をサポートするインベントリタイプとデータ型のリストを表示できます。
aws ssm get-inventory-schema --aggregator
このコマンドは、集計をサポートするデータ型とインベントリタイプの JSON リストを返します。[TypeName] フィールドには、サポートされているインベントリタイプが表示されます。また、[Name (名前)] フィールドに各データ型が表示されます。例えば、次のリストでは、AWS:Application
インベントリタイプには Name
および Version
データ型が含まれています。
{ "Schemas": [ { "TypeName": "AWS:Application", "Version": "1.1", "DisplayName": "Application", "Attributes": [ { "DataType": "STRING", "Name": "Name" }, { "DataType": "STRING", "Name": "Version" } ] }, { "TypeName": "AWS:InstanceInformation", "Version": "1.0", "DisplayName": "Platform", "Attributes": [ { "DataType": "STRING", "Name": "PlatformName" }, { "DataType": "STRING", "Name": "PlatformType" }, { "DataType": "STRING", "Name": "PlatformVersion" } ] }, { "TypeName": "AWS:ResourceGroup", "Version": "1.0", "DisplayName": "ResourceGroup", "Attributes": [ { "DataType": "STRING", "Name": "Name" } ] }, { "TypeName": "AWS:Service", "Version": "1.0", "DisplayName": "Service", "Attributes": [ { "DataType": "STRING", "Name": "Name" }, { "DataType": "STRING", "Name": "DisplayName" }, { "DataType": "STRING", "Name": "ServiceType" }, { "DataType": "STRING", "Name": "Status" }, { "DataType": "STRING", "Name": "StartType" } ] }, { "TypeName": "AWS:WindowsRole", "Version": "1.0", "DisplayName": "WindowsRole", "Attributes": [ { "DataType": "STRING", "Name": "Name" }, { "DataType": "STRING", "Name": "DisplayName" }, { "DataType": "STRING", "Name": "FeatureType" }, { "DataType": "STRING", "Name": "Installed" } ] } ] }
次の構文を使用するコマンドを作成することで、リストされているインベントリタイプのいずれかのデータを集計できます。
aws ssm get-inventory --aggregators "Expression=
InventoryType
.DataType
"
次に例を示します。
例 1
この例では、ノードによって使用される Windows ロールの数を集計します。
aws ssm get-inventory --aggregators "Expression=AWS:WindowsRole.Name"
例 2
この例では、ノードにインストールされているアプリケーション数を集計します。
aws ssm get-inventory --aggregators "Expression=AWS:Application.Name"
複数のアグリゲータの結合
データをさらによく理解できるように、1 つのコマンドで複数のインベントリタイプとデータ型を組み合わせることもできます。次に例を示します。
例 1
この例では、ノードによって使用されるオペレーティングシステムのタイプ数を集計します。また、オペレーティングシステムの個別の名前も返します。
aws ssm get-inventory --aggregators '[{"Expression": "AWS:InstanceInformation.PlatformType", "Aggregators":[{"Expression": "AWS:InstanceInformation.PlatformName"}]}]'
例 2
この例では、各アプリケーションの特定のバージョンとノードで実行されているアプリケーションの数を集計します。
aws ssm get-inventory --aggregators '[{"Expression": "AWS:Application.Name", "Aggregators":[{"Expression": "AWS:Application.Version"}]}]'
必要に応じて、JSON ファイルの 1 つまたは複数のインベントリタイプとデータ型に対する集計式を作成し、AWS CLI からファイルを呼び出すことができます。ファイルの JSON には次の構文を使用する必要があります。
[ { "Expression": "string", "Aggregators": [ { "Expression": "string" } ] } ]
.json 拡張子でファイルを保存する必要があります。
複数のインベントリタイプとデータ型を使用する例を次に示します。
[ { "Expression": "AWS:Application.Name", "Aggregators": [ { "Expression": "AWS:Application.Version", "Aggregators": [ { "Expression": "AWS:InstanceInformation.PlatformType" } ] } ] } ]
次のコマンドを使用して AWS CLI からファイルを呼び出します。
aws ssm get-inventory --aggregators file://
file_name
.json
このコマンドによって以下のような情報が返されます。
{"Entities": [ {"Data": {"AWS:Application": {"Content": [ {"Count": "3", "PlatformType": "linux", "Version": "2.6.5", "Name": "audit-libs"}, {"Count": "2", "PlatformType": "windows", "Version": "2.6.5", "Name": "audit-libs"}, {"Count": "4", "PlatformType": "windows", "Version": "6.2.8", "Name": "microsoft office"}, {"Count": "2", "PlatformType": "windows", "Version": "2.6.5", "Name": "chrome"}, {"Count": "1", "PlatformType": "linux", "Version": "2.6.5", "Name": "chrome"}, {"Count": "2", "PlatformType": "linux", "Version": "6.3", "Name": "authconfig"} ] } }, "ResourceType": "ManagedInstance"} ] }
インベントリタイプを収集するように設定されている/設定されていないノードを確認するためのグループによるインベントリデータの集計
Systems Manager Inventory のグループを使用すると、1 つ以上のインベントリタイプを収集するように設定されている/設定されていないマネージドノードのカウントを迅速に確認できます。グループを使用して、exists
オペレータを使用するフィルタと 1 つ以上のインベントリタイプを指定します。
たとえば、以下のインベントリタイプを収集するように設定されている 4 つのマネージドノードがある場合を考えます。
-
ノード 1:
AWS:Application
-
ノード 2:
AWS:File
-
ノード 3:
AWS:Application
、AWS:File
-
ノード 4:
AWS:Network
AWS CLI から次のコマンドを実行して、AWS:Application
および AWS:File
inventory
タイプの両方を収集するように設定されているノードの数を確認できます。レスポンスは、これら両方のインベントリタイプを収集するように設定されていないノードの数も返します。
aws ssm get-inventory --aggregators 'Groups=[{Name=ApplicationAndFile,Filters=[{Key=TypeName,Values=[AWS:Application],Type=Exists},{Key=TypeName,Values=[AWS:File],Type=Exists}]}]'
このコマンドのレスポンスでは、AWS:Application
および AWS:File
インベントリタイプの両方を収集するように設定されているマネージドノードは 1 つのみであること表しています。
{ "Entities":[ { "Data":{ "ApplicationAndFile":{ "Content":[ { "notMatchingCount":"3" }, { "matchingCount":"1" } ] } } } ] }
注記
グループはデータ型のカウントを返しません。また、インベントリタイプを収集するように設定されているノード ID、または設定されていないノード ID を表示する結果をドリルダウンすることはできません。
必要に応じて、JSON ファイルの 1 つまたは複数のインベントリタイプで集計式を作成し、AWS CLI からファイルを呼び出すことができます。ファイルの JSON には次の構文を使用する必要があります。
{ "Aggregators":[ { "Groups":[ { "Name":"
Name
", "Filters":[ { "Key":"TypeName", "Values":[ "Inventory_type
" ], "Type":"Exists" }, { "Key":"TypeName", "Values":[ "Inventory_type
" ], "Type":"Exists" } ] } ] } ] }
.json 拡張子でファイルを保存する必要があります。
次のコマンドを使用して AWS CLI からファイルを呼び出します。
aws ssm get-inventory --cli-input-json file://
file_name
.json
その他の例
次の例は、指定されたインベントリタイプを収集するように設定されている/設定されていないマネージドノードを確認するためにインベントリデータを集計する方法を示します。以下の例では、AWS CLI を使用します。それぞれの例には、コマンドラインから実行できるフィルタ付きのフルコマンドと、情報をファイルに入力する場合のサンプル input.json ファイルが含まれています。
例 1
この例では、AWS:Application
または AWS:File
インベントリタイプを収集するように設定されている/設定されていないノードの数を集計します。
AWS CLI から、次のコマンドを実行します。
aws ssm get-inventory --aggregators 'Groups=[{Name=ApplicationORFile,Filters=[{Key=TypeName,Values=[AWS:Application, AWS:File],Type=Exists}]}]'
ファイルを使用する場合は、以下のサンプルをコピーしてファイルに貼り付け、input.json ファイルとして保存します。
{ "Aggregators":[ { "Groups":[ { "Name":"ApplicationORFile", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:Application", "AWS:File" ], "Type":"Exists" } ] } ] } ] }
AWS CLI から、次のコマンドを実行します。
aws ssm get-inventory --cli-input-json file://input.json
このコマンドによって以下のような情報が返されます。
{ "Entities":[ { "Data":{ "ApplicationORFile":{ "Content":[ { "notMatchingCount":"1" }, { "matchingCount":"3" } ] } } } ] }
例 2
この例では、AWS:Application
、AWS:File
、および AWS:Network
インベントリタイプを収集するように設定されているノードとそう設定されていないノードの数を集計します。
AWS CLI から、次のコマンドを実行します。
aws ssm get-inventory --aggregators 'Groups=[{Name=Application,Filters=[{Key=TypeName,Values=[AWS:Application],Type=Exists}]}, {Name=File,Filters=[{Key=TypeName,Values=[AWS:File],Type=Exists}]}, {Name=Network,Filters=[{Key=TypeName,Values=[AWS:Network],Type=Exists}]}]'
ファイルを使用する場合は、以下のサンプルをコピーしてファイルに貼り付け、input.json ファイルとして保存します。
{ "Aggregators":[ { "Groups":[ { "Name":"Application", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:Application" ], "Type":"Exists" } ] }, { "Name":"File", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:File" ], "Type":"Exists" } ] }, { "Name":"Network", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:Network" ], "Type":"Exists" } ] } ] } ] }
AWS CLI から、次のコマンドを実行します。
aws ssm get-inventory --cli-input-json file://input.json
このコマンドによって以下のような情報が返されます。
{ "Entities":[ { "Data":{ "Application":{ "Content":[ { "notMatchingCount":"2" }, { "matchingCount":"2" } ] }, "File":{ "Content":[ { "notMatchingCount":"2" }, { "matchingCount":"2" } ] }, "Network":{ "Content":[ { "notMatchingCount":"3" }, { "matchingCount":"1" } ] } } } ] }