Agregación de datos de Inventory - AWS Systems Manager

Agregación de datos de Inventory

Después de configurar los nodos administrados de AWS Systems Manager Inventory, puede ver los totales agregados de los datos de Inventory. Por ejemplo, supongamos que ha configurado decenas o cientos de nodos administrados para que recopilen el tipo de inventario AWS:Application. La información de esta sección le permite ver un recuento exacto del número de nodos que están configurados para recopilar estos datos.

También puede ver detalles específicos de inventario si efectúa la agregación por un tipo de datos. Por ejemplo, el tipo de inventario AWS:InstanceInformation recopila información de la plataforma del sistema operativo con el tipo de datos Platform. Al agregar datos según el tipo de datos Platform, puede ver rápidamente el número de nodos en los que se ejecuta Windows, en los que se ejecuta Linux y en los que se ejecuta macOS.

En los procedimientos de esta sección, se describe cómo ver los totales agregados de datos de inventario mediante la AWS Command Line Interface (AWS CLI). También puede ver los recuentos agregados preconfigurados en la consola de AWS Systems Manager, en la página Inventario. Estos paneles preconfigurados se denominan Inventory Insights (Información de inventario) y ofrecen la solución a los problemas de configuración de Inventory con un solo clic.

Tenga en cuenta los siguientes detalles importantes sobre los recuentos de agregación de los datos de inventario:

  • Si termina un nodo administrado que está configurado para recopilar datos de inventario, Systems Manager conserva los datos durante 30 días y, luego, los elimina. Para los nodos en ejecución, los sistemas eliminan los datos de inventario con más de 30 días de antigüedad. Si necesita almacenar datos de inventario durante más de 30 días, puede usar AWS Config para registrar el historial o para realizar una consulta periódica y cargar los datos en un bucket de Amazon Simple Storage Service (Amazon S3).

  • Si un nodo se había configurado previamente para informar sobre un tipo de datos de inventario específico, por ejemplo, AWS:Network y, más adelante, se cambia la configuración para dejar de recopilar ese tipo de datos, los totales de agregación siguen mostrando los datos AWS:Network hasta que se termine el nodo y hayan pasado 30 días.

Para obtener información sobre cómo configurar y recopilar rápidamente los datos de inventario de todos los nodos en una Cuenta de AWS específica (y de los futuros nodos que podrían crearse en dicha cuenta), consulte Configuración de la recopilación mediante el uso de la consola.

Agregación de datos de Inventory para ver recuentos de nodos que recopilen determinados tipos de datos

Puede utilizar la operación GetInventory de la API de AWS Systems Manager para ver los totales agregados de nodos que recopilan uno o varios tipos de inventario y tipos de datos. Por ejemplo, el tipo de inventario AWS:InstanceInformation le permite ver el total de sistemas operativos mediante la operación GetInventory de la API con el tipo de datos AWS:InstanceInformation.PlatformType. A continuación, se muestra un ejemplo de comando de la AWS CLI y su resultado.

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

El sistema devuelve información similar a la siguiente.

{
   "Entities":[
      {
         "Data":{
            "AWS:InstanceInformation":{
               "Content":[
                  {
                     "Count":"7",
                     "PlatformType":"windows"
                  },
                  {
                     "Count":"5",
                     "PlatformType":"linux"
                  }
               ]
            }
         }
      }
   ]
}
Introducción

Determine los tipos de inventario y los tipos de datos cuyos recuentos desea ver. Puede ver una lista de los tipos de inventario y de datos que admiten la agregación mediante la ejecución del siguiente comando en la AWS CLI.

aws ssm get-inventory-schema --aggregator

El comando devuelve una lista JSON de tipos de inventario y tipos de datos que admiten la agregación. El campo TypeName muestra los tipos de inventario admitidos. Y el campo Name muestra cada tipo de datos. Por ejemplo, en la siguiente lista, el tipo de inventario AWS:Application incluye tipos de datos para Name y 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"
                }
            ]
        }
    ]
}

Puede agregar datos para cualquiera de los tipos de inventario indicados mediante un comando con la sintaxis siguiente.

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

Estos son algunos ejemplos.

Ejemplo 1

En este ejemplo, se calcula el total de los roles de Windows que utilizan los nodos.

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

Ejemplo 2

En este ejemplo, se calcula el total de las aplicaciones instaladas en los nodos.

aws ssm get-inventory --aggregators "Expression=AWS:Application.Name"
Combinación de varios agregadores

También puede combinar varios tipos de inventario y tipos de datos en un mismo comando para entender mejor los datos. Estos son algunos ejemplos.

Ejemplo 1

En este ejemplo, se calcula el total de los tipos de sistemas operativos que utilizan los nodos. También devuelve el nombre específico de los sistemas operativos.

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

Ejemplo 2

En este ejemplo, se calcula el total de las aplicaciones que se ejecutan en los nodos y la versión específica de cada aplicación.

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

Si lo prefiere, puede crear una expresión de agregación con uno o varios tipos de inventario y tipos de datos en un archivo JSON y llamar al archivo desde la AWS CLI. El JSON del archivo debe utilizar la sintaxis siguiente.

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

Debe guardar el archivo con la extensión .json.

A continuación se muestra un ejemplo que utiliza varios tipos de inventario y tipos de datos.

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

Utilice el siguiente comando para llamar al archivo desde la AWS CLI.

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

El comando devuelve información similar a la siguiente.

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

Agregación de datos de Inventory mediante grupos para ver qué nodos están configurados o no para recopilar un tipo de inventario

Los grupos en Systems Manager Inventory le permiten ver rápidamente el número de nodos administrados que están o que no están configurados para recopilar uno o varios tipos de inventarios. Con los grupos, debe especificar uno o varios tipos de inventario y un filtro que utiliza el operador exists.

Por ejemplo, suponga que tiene cuatro nodos administrados configurados para recopilar los siguientes tipos de inventario:

  • Nodo 1: AWS:Application

  • Nodo 2: AWS:File

  • Nodo 3: AWS:Application, AWS:File

  • Nodo 4: AWS:Network

Puede ejecutar el siguiente comando desde la AWS CLI para ver cuántos nodos están configurados para recopilar los tipos AWS:Application y AWS:File inventory. La respuesta también devuelve el número de nodos que no están configurados para recopilar ambos tipos de inventario.

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

La respuesta del comando muestra que solo hay un nodo administrado configurado para recopilar los tipos de inventario AWS:Application y AWS:File.

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

Los grupos no devuelven recuentos para los tipos de datos. Además, no se pueden desglosar los resultados para ver los ID de los nodos que están o que no están configurados para recopilar el tipo de inventario.

Si lo prefiere, puede crear una expresión de agregación con uno o varios tipos de inventario en un archivo JSON y llamar al archivo desde la AWS CLI. El JSON del archivo debe utilizar la sintaxis siguiente:

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

Debe guardar el archivo con la extensión .json.

Utilice el siguiente comando para llamar al archivo desde la AWS CLI.

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

Los siguientes ejemplos muestran cómo agregar datos de inventario para ver los nodos administrados que están o que no están configurados para recopilar los tipos de inventario especificados. Estos ejemplos utilizan la AWS CLI. Cada ejemplo incluye un comando completo con filtros que puede ejecutar desde la línea de comandos y un ejemplo de archivo input.json por si prefiere introducir la información en un archivo.

Ejemplo 1

En este ejemplo, se calcula el número de nodos que están o que no están configurados para recopilar los tipos de inventario AWS:Application o AWS:File.

Ejecute el siguiente comando desde la AWS CLI.

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

Si prefiere utilizar un archivo, copie y pegue el siguiente ejemplo en un archivo y guárdelo como input.json.

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

Ejecute el siguiente comando desde la AWS CLI.

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

El comando devuelve información similar a la siguiente.

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

Ejemplo 2

En este ejemplo, se calcula el número de nodos que están o que no están configurados para recopilar los tipos de inventario AWS:Application, AWS:File y AWS:Network.

Ejecute el siguiente comando desde la 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 prefiere utilizar un archivo, copie y pegue el siguiente ejemplo en un archivo y guárdelo como 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" } ] } ] } ] }

Ejecute el siguiente comando desde la AWS CLI.

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

El comando devuelve información similar a la siguiente.

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