인벤토리 데이터 집계
AWS Systems Manager 인벤토리용 관리형 노드를 구성한 뒤에는 집계된 인벤토리 데이터 수를 볼 수 있습니다. 예를 들어 AWS:Application
인벤토리 유형을 수집하기 위해 관리형 노드를 수십, 수백 개 정도 구성했다고 가정하겠습니다. 그 경우 이 섹션의 정보를 이용하여 이 데이터를 수집하도록 구성된 노드가 몇 개인지 정확한 수를 알아볼 수 있습니다.
데이터 유형으로 집계하여 특정한 인벤토리 세부 정보를 확인할 수도 있습니다. 예를 들어 AWS:InstanceInformation
인벤토리 유형은 Platform
데이터 형식의 운영 체제 플랫폼 정보를 수집합니다. Platform
데이터 형식으로 데이터를 집계함으로써 Windows, Linux 및 macOS를 실행 노드가 각각 몇 개인지 빠르게 파악할 수 있습니다.
이 섹션의 절차에서는 AWS Command Line Interface(AWS CLI)를 사용하여 집계된 인벤토리 데이터 수를 보는 방법을 설명합니다. AWS Systems Manager 콘솔의 인벤토리 페이지에서 사전 구성된 집계 개수를 볼 수도 있습니다. 이렇게 사전 구성된 대시보드를 인벤토리 인사이트라고 부르며, 이를 통해 인벤토리 구성 문제를 클릭 한 번으로 해결할 수 있습니다.
다음은 인벤토리 데이터 집계 개수에 관한 중요한 세부 정보입니다.
-
인벤토리 데이터를 수집하도록 구성된 관리형 노드를 종료하면 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 작업을 사용하여 하나 이상의 Inventory 유형 및 데이터 형식을 수집하는 노드의 집계 개수를 볼 수 있습니다. 예를 들어 AWS:InstanceInformation
Inventory 유형을 사용하면 AWS:InstanceInformation.PlatformType
데이터 형식과 함께 GetInventory API 작업을 사용하여 운영 체제의 집계를 볼 수 있습니다. 다음은 예 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
이 예에서는 해당 노드에서 사용하는 운영 체제 유형의 개수를 집계합니다. 또한 운영 체제의 구체적인 이름도 반환합니다.
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 파일로 만들고 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의 그룹으로 관리형 노드 중 하나 이상의 Inventory 유형을 수집하도록 구성된 인스턴스 수와 그렇지 않은 인스턴스 수를 빠르게 파악할 수 있습니다. 그룹을 통해 하나 이상의 인벤토리 유형과 exists
연산자를 사용하는 필터를 지정합니다.
예를 들어, 다음 인벤토리 유형을 수집하도록 구성한 관리형 노드가 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
인벤토리 유형을 둘 다 수집하도록 구성된 관리형 노드가 하나뿐임을 보여줍니다.
{ "Entities":[ { "Data":{ "ApplicationAndFile":{ "Content":[ { "notMatchingCount":"3" }, { "matchingCount":"1" } ] } } } ] }
참고
그룹은 데이터 유형 개수를 반환하지 않습니다. 또한 결과를 심층 분석하여 인벤토리 유형을 수집하도록 구성된 노드와 그렇지 않은 노드 ID를 파악할 수도 없습니다.
원한다면 하나 이상의 인벤토리 유형으로 된 집계 표현식을 JSON 파일로 만들고 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" } ] } } } ] }