Agrégation des données d'inventaire - AWS Systems Manager

Agrégation des données d'inventaire

Une fois vos nœuds gérés configurés pour l'inventaire AWS Systems Manager, vous pouvez afficher les décomptes agrégés des données d'inventaire. Par exemple, supposons que vous avez configuré des dizaines ou des centaines de nœuds gérés pour collecter le type d'inventaire AWS:Application. En utilisant les informations de cette section, vous pouvez voir le décompte exact des nœuds configurés pour collecter ces données.

Vous pouvez également voir des détails d'inventaire spécifiques en effectuant une agrégation sur un type de données. Par exemple, le type d'inventaire AWS:InstanceInformation collecte les informations de plateforme de système d'exploitation avec le type de données Platform. En agrégeant les données sur le type de données Platform, vous pouvez rapidement voir le nombre de nœuds qui exécutent Windows, le nombre de nœuds qui exécutent Linux et le nombre de nœuds qui exécutent macOS.

Les procédures de cette section expliquent comment afficher les décomptes agrégés de données d'inventaire à l'aide de l'AWS Command Line Interface (AWS CLI). Vous pouvez également consulter les décomptes agrégés préconfigurés dans la console AWS Systems Manager sur la page Inventaire. Ces tableaux de bord préconfigurés sont appelés analyses d'inventaire et ils permettent de remédier en un clic à vos problèmes de configuration d'inventaire.

Notez les détails importants suivants relatifs aux décomptes d'agrégation des données d'inventaire :

  • Si vous résiliez un nœud géré configuré pour collecter des données d'inventaire, Systems Manager conserve les données d'inventaire pendant 30 jours, puis les supprime. Pour les nœuds en cours d'exécution, le système supprime les données d'inventaire antérieures à 30 jours. Si vous devez stocker les données d'inventaire plus de 30 jours, vous pouvez utiliser AWS Config pour enregistrer l'historique ou pour interroger régulièrement les données et les charger dans un compartiment Amazon Simple Storage Service (Amazon S3).

  • Si un nœud a été préalablement configuré pour signaler un type de données d'inventaire spécifique, par exemple, AWS:Network, et que vous modifiez ultérieurement cette configuration pour arrêter la collecte de ce type, les décomptes d'agrégation continuent de montrer les données AWS:Network jusqu'à ce que le nœud soit mis hors service et une fois le délai des 30 jours passé.

Pour obtenir des informations sur la façon de configurer et de collecter rapidement des données d'inventaire à partir de toutes les instances dans un Compte AWS spécifique (et de tous les nœuds futurs susceptibles d'être créés dans ce compte), consultez Effectuer l'inventaire de tous les nœuds gérés dans votre Compte AWS.

Agrégation des données d'inventaire pour afficher les décomptes de nœuds qui collectent des types spécifiques de données

Vous pouvez utiliser l'opération d'API AWS Systems Manager GetInventory pour afficher les décomptes agrégés de nœuds qui collectent un ou plusieurs types d'inventaire et types de données. Par exemple, le type d'inventaire AWS:InstanceInformation vous permet d'afficher une vue agrégée des systèmes d'exploitation en utilisant l'opération API GetInventory avec le type de données AWS:InstanceInformation.PlatformType. Voici un exemple de commande AWS CLI et de sortie.

aws ssm get-inventory --aggregators "Expression=AWS:InstanceInformation.PlatformType"

Le système retourne des informations telles que les suivantes.

{
   "Entities":[
      {
         "Data":{
            "AWS:InstanceInformation":{
               "Content":[
                  {
                     "Count":"7",
                     "PlatformType":"windows"
                  },
                  {
                     "Count":"5",
                     "PlatformType":"linux"
                  }
               ]
            }
         }
      }
   ]
}
Premiers pas

Déterminez les types d'inventaire et les types de données pour lesquels vous souhaitez afficher des décomptes. Vous pouvez consulter la liste des types d'inventaires et des types de données qui prennent en charge l'agrégation en exécutant la commande suivante dans l'AWS CLI.

aws ssm get-inventory-schema --aggregator

Cette commande renvoie la liste JSON des types d'inventaire et des types de données qui prennent en charge l'agrégation. Le champ TypeName montre les types d'inventaire pris en charge. Et le champ Name montre chaque type de données. Par exemple, dans la liste suivante, le type d'inventaire AWS:Application inclut des types de données pour Name et 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"
                }
            ]
        }
    ]
}

Vous pouvez agréger les données pour l'un quelconque des types d'inventaire répertoriés en créant une commande qui utilise la syntaxe suivante.

aws ssm get-inventory --aggregators "Expression=InventoryType.DataType"

Voici quelques exemples.

Exemple 1

Cet exemple agrège un décompte des rôles Windows utilisés par vos nœuds.

aws ssm get-inventory --aggregators "Expression=AWS:WindowsRole.Name"

Exemple 2

Cet exemple agrège un décompte des applications installées sur vos nœuds.

aws ssm get-inventory --aggregators "Expression=AWS:Application.Name"
Combinaison de plusieurs agrégateurs

Vous pouvez également combiner plusieurs types d'inventaire et types de données en une seule commande pour mieux comprendre les données. Voici quelques exemples.

Exemple 1

Cet exemple agrège un décompte des types de système d'exploitation utilisés par vos nœuds. Il renvoie également le nom spécifique de ces systèmes d'exploitation.

aws ssm get-inventory --aggregators '[{"Expression": "AWS:InstanceInformation.PlatformType", "Aggregators":[{"Expression": "AWS:InstanceInformation.PlatformName"}]}]'

Exemple 2

Cet exemple agrège un décompte des applications qui s'exécutent sur vos nœuds et de la version spécifique de chaque application.

aws ssm get-inventory --aggregators '[{"Expression": "AWS:Application.Name", "Aggregators":[{"Expression": "AWS:Application.Version"}]}]'

Si vous préférez, vous pouvez créer une expression d'agrégation avec un ou plusieurs types d'inventaire et types de données dans un fichier JSON et appeler ce fichier à partir de l'AWS CLI. Le code JSON figurant dans le fichier doit utiliser la syntaxe suivante.

[ { "Expression": "string", "Aggregators": [ { "Expression": "string" } ] } ]

Vous devez enregistrer le fichier avec l'extension de fichier .json.

Voici un exemple qui utilise plusieurs types d'inventaire et types de données.

[ { "Expression": "AWS:Application.Name", "Aggregators": [ { "Expression": "AWS:Application.Version", "Aggregators": [ { "Expression": "AWS:InstanceInformation.PlatformType" } ] } ] } ]

Utilisez la commande suivante pour appeler le fichier à partir de l'AWS CLI.

aws ssm get-inventory --aggregators file://file_name.json

La commande renvoie des informations telles que les suivantes.

{"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"}
 ]
}

Agrégation des données d'inventaire avec des groupes pour voir quels nœuds sont ou non configurés pour collecter un type d'inventaire

Dans Systems Manager Inventory, les groupes vous permettent de voir rapidement un décompte des nœuds gérés qui sont ou ne sont pas configurés pour collecter un ou plusieurs types d'inventaire. Avec les groupes, vous spécifiez un ou plusieurs types d'inventaire et un filtre qui utilise l'opérateur exists.

Par exemple, supposons que vous avez quatre nœuds gérés configurés pour collecter les types d'inventaire suivants :

  • Nœud 1 : AWS:Application

  • Nœud 2 : AWS:File

  • Nœud 3 : AWS:Application, AWS:File

  • Nœud 4 : AWS:Network

Vous pouvez exécuter la commande suivante à partir de la AWS CLI pour voir combien de nœuds sont configurés pour collecter les types d'inventaire AWS:Application et AWS:File inventory. La réponse renvoie également un décompte des nœuds qui ne sont pas configurés pour collecter ces deux types d'inventaire.

aws ssm get-inventory --aggregators 'Groups=[{Name=ApplicationAndFile,Filters=[{Key=TypeName,Values=[AWS:Application],Type=Exists},{Key=TypeName,Values=[AWS:File],Type=Exists}]}]'

La réponse de la commande montre qu'un seul nœud géré est configuré pour collecter les deux types d'inventaire AWS:Application et AWS:File.

{
   "Entities":[
      {
         "Data":{
            "ApplicationAndFile":{
               "Content":[
                  {
                     "notMatchingCount":"3"
                  },
                  {
                     "matchingCount":"1"
                  }
               ]
            }
         }
      }
   ]
}
Note

Les groupes ne renvoient pas de décomptes de type de données. De plus, vous ne pouvez pas explorer en détail les résultats pour voir les ID des nœuds qui sont ou non configurés pour collecter le type d'inventaire.

Si vous préférez, vous pouvez créer une expression d'agrégation avec un ou plusieurs types d'inventaire dans un fichier JSON et appeler ce fichier à partir de l'AWS CLI. Le code JSON figurant dans le fichier doit utiliser la syntaxe suivante :

{ "Aggregators":[ { "Groups":[ { "Name":"Name", "Filters":[ { "Key":"TypeName", "Values":[ "Inventory_type" ], "Type":"Exists" }, { "Key":"TypeName", "Values":[ "Inventory_type" ], "Type":"Exists" } ] } ] } ] }

Vous devez enregistrer le fichier avec l'extension de fichier .json.

Utilisez la commande suivante pour appeler le fichier à partir de l'AWS CLI.

aws ssm get-inventory --cli-input-json file://file_name.json
Exemples supplémentaires

Les exemples suivants vous montrent comment agréger les données d'inventaire pour voir quels nœuds gérés sont ou non configurés pour collecter les types d'inventaire spécifiés. Ces exemples utilisent l'AWS CLI. Chaque exemple inclut une commande complète avec des filtres que vous pouvez exécuter à partir de la ligne de commande et un exemple de fichier input.json si vous préférez entrer les informations dans un fichier.

Exemple 1

Cet exemple regroupe un décompte des nœuds qui sont ou ne sont pas configurés pour collecter le type d'inventaire AWS:Application ou AWS:File.

Exécutez la commande suivante à partir de l'AWS CLI.

aws ssm get-inventory --aggregators 'Groups=[{Name=ApplicationORFile,Filters=[{Key=TypeName,Values=[AWS:Application, AWS:File],Type=Exists}]}]'

Si vous préférez utiliser un fichier, copiez et collez l'exemple suivant dans un fichier et enregistrez-le sous le nom input.json.

{ "Aggregators":[ { "Groups":[ { "Name":"ApplicationORFile", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:Application", "AWS:File" ], "Type":"Exists" } ] } ] } ] }

Exécutez la commande suivante à partir de l'AWS CLI.

aws ssm get-inventory --cli-input-json file://input.json

La commande renvoie des informations telles que les suivantes.

{
   "Entities":[
      {
         "Data":{
            "ApplicationORFile":{
               "Content":[
                  {
                     "notMatchingCount":"1"
                  },
                  {
                     "matchingCount":"3"
                  }
               ]
            }
         }
      }
   ]
}

Exemple 2

Cet exemple regroupe un décompte des nœuds qui sont ou ne sont pas configurés pour collecter les types d'inventaire AWS:Application, AWS:File et AWS:Network.

Exécutez la commande suivante à partir de l'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}]}]'

Si vous préférez utiliser un fichier, copiez et collez l'exemple suivant dans un fichier et enregistrez-le sous le nom 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" } ] } ] } ] }

Exécutez la commande suivante à partir de l'AWS CLI.

aws ssm get-inventory --cli-input-json file://input.json

La commande renvoie des informations telles que les suivantes.

{
   "Entities":[
      {
         "Data":{
            "Application":{
               "Content":[
                  {
                     "notMatchingCount":"2"
                  },
                  {
                     "matchingCount":"2"
                  }
               ]
            },
            "File":{
               "Content":[
                  {
                     "notMatchingCount":"2"
                  },
                  {
                     "matchingCount":"2"
                  }
               ]
            },
            "Network":{
               "Content":[
                  {
                     "notMatchingCount":"3"
                  },
                  {
                     "matchingCount":"1"
                  }
               ]
            }
         }
      }
   ]
}