Generar informe de línea de tiempo de VM de Azure con asistente de chat de Google Gemini AI

Intermedio

Este es unDevOps, AIflujo de automatización del dominio deautomatización que contiene 11 nodos.Utiliza principalmente nodos como Set, Agent, ToolCode, ChatTrigger, ToolHttpRequest, combinando tecnología de inteligencia artificial para lograr automatización inteligente. Usar el asistente de chat de Google Gemini AI para generar informes de línea de tiempo de VM de Azure

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Clave de API de Google Gemini
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "dc70be25ab3de91313745487daa53ea6b35f677ae326eae305310e197f986f71",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "214c1831-bd0d-431a-b811-bc29122f5bf1",
      "name": "Agente de IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1092,
        -780
      ],
      "parameters": {
        "text": "={{ $('When chat message received').item.json.chatInput }}",
        "options": {
          "systemMessage": "=You are an assistant that queries the user's Azure subscription for various Azure virtual machine information.\n\nThrough your tools, you have the ability to query information in Azure such as resource groups and virtual machines.\n\nYour task is to carefully analyze all information about one or more VMs and provide a timeline report to the user including VM state changes, CPU, network, disk activity, etc. The report will be broken down by VM and provide a historical timeline of what happened to a VM during that time.\n\nDo not ask the user questions unless absolutely necessary. He relies on you to make your own decisions.\n\nBy default, the user needs all events starting 90 days ago and newer but can override that with a request.\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "1c5bee5e-bbd8-4a0c-bcdf-817540cf5b0f",
      "name": "Establecer variables comunes",
      "type": "n8n-nodes-base.set",
      "position": [
        720,
        -780
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "942ba480-59b8-4a77-a36d-6f198b2b76b4",
              "name": "azure_subscription_id",
              "type": "string",
              "value": "<your azure subscription id here>"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f2bc18f2-aa40-43b5-8738-0faa64aa5beb",
      "name": "Obtener estadísticas de rendimiento de VM",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        1060,
        -500
      ],
      "parameters": {
        "url": "=https://management.azure.com/subscriptions/{{ $json.azure_subscription_id }}/resourceGroups/{azure_resource_group_name}/providers/Microsoft.Compute/virtualMachines/{vm_name}/providers/microsoft.insights/metrics",
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "parametersQuery": {
          "values": [
            {
              "name": "api-version",
              "value": "2018-01-01",
              "valueProvider": "fieldValue"
            },
            {
              "name": "metricnames",
              "value": "Percentage CPU,Network In,Network Out,Disk Read Bytes,Disk Write Bytes",
              "valueProvider": "fieldValue"
            },
            {
              "name": "timespan",
              "value": "{from_time}/{to_time}&interval={interval}",
              "valueProvider": "fieldValue"
            },
            {
              "name": "aggregation",
              "value": "average,maximum",
              "valueProvider": "fieldValue"
            }
          ]
        },
        "toolDescription": "This tool returns performance metrics for a specific virtual machine (VM) in Azure. These metrics come from Azure Monitor and provide time-series data that helps you understand how the VM is performing over time. This includes key metrics like CPU usage (Percentage CPU), disk I/O, network in/out, and available memory, depending on what’s enabled for monitoring.\n\nYou can use query parameters (e.g., metricnames, timespan, interval, aggregation) to control which metrics are returned, over what time period, and at what granularity. The response includes metadata like the unit of measurement, timestamps, and aggregated values (e.g., average, minimum, maximum). This endpoint is commonly used for monitoring, alerting, and troubleshooting VM performance.",
        "nodeCredentialType": "microsoftAzureMonitorOAuth2Api",
        "placeholderDefinitions": {
          "values": [
            {
              "name": "azure_resource_group_name",
              "type": "string"
            },
            {
              "name": "vm_name",
              "type": "string"
            },
            {
              "name": "from_time",
              "type": "string",
              "description": "2025-05-18T20:01:52Z"
            },
            {
              "name": "to_time",
              "type": "string"
            },
            {
              "name": "interval",
              "description": " ISO 8601 duration format Options: PT1M (1min), PT5M (5min), PT15M (15min), PT30M (30min), PT1H (1hr), PT6H (6hr), PT12H (12hr), P1D (1day)"
            }
          ]
        }
      },
      "credentials": {
        "microsoftAzureMonitorOAuth2Api": {
          "id": "jUzjMChitb3DNqcr",
          "name": "Microsoft Azure Monitor"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "58093475-6b4a-44b7-8a94-783de4c662f4",
      "name": "Cuando se recibe un mensaje de chat",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        500,
        -780
      ],
      "webhookId": "def18753-6744-4666-8062-9cc37938ff3c",
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "006eb130-f4e6-4f6b-af5a-0f045eef9426",
      "name": "Modelo de chat Google Gemini",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        600,
        -520
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.5-pro-preview-05-06"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "MeEjlKe69mU8qQ3w",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "838e66a3-0b0e-441d-aa02-d9dda32e3ce7",
      "name": "Memoria simple",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        820,
        -460
      ],
      "parameters": {
        "sessionKey": "={{ $('When chat message received').item.json.sessionId }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "30acbfb9-6938-475c-a97c-c8e9f93d8034",
      "name": "Obtener grupos de recursos Azure",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        1280,
        -520
      ],
      "parameters": {
        "url": "=https://management.azure.com/subscriptions/{{ $json.azure_subscription_id }}/resourcegroups?api-version=2021-04-01",
        "fields": "name, type",
        "dataField": "value",
        "authentication": "predefinedCredentialType",
        "fieldsToInclude": "selected",
        "toolDescription": "This tool returns a list of resource groups within the specified Azure subscription. A resource group is a container that holds related Azure resources like virtual machines, storage accounts, and databases. This API is useful for inventory, organization, and automation tasks.\n\nEach resource group object in the response includes basic metadata such as the name, location (region), id, and properties.provisioningState. It may also contain tags if they are defined. This endpoint is typically used to get an overview of how resources are grouped and managed across a subscription, and it’s often the first step in workflows that involve resource discovery or filtering by location or naming convention.",
        "optimizeResponse": true,
        "nodeCredentialType": "microsoftAzureMonitorOAuth2Api"
      },
      "credentials": {
        "microsoftAzureMonitorOAuth2Api": {
          "id": "jUzjMChitb3DNqcr",
          "name": "Microsoft Azure Monitor"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "b5cd2f51-dde8-410f-a622-78d87bca9883",
      "name": "Obtener información de VM",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        1680,
        -680
      ],
      "parameters": {
        "url": "=https://management.azure.com/subscriptions/{{ $json.azure_subscription_id}}/resourceGroups/{azure_resource_group_name}/providers/Microsoft.Compute/virtualMachines",
        "fields": "name,location,tags,properties.hardwareProfile.vmSize",
        "dataField": "value",
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "fieldsToInclude": "selected",
        "parametersQuery": {
          "values": [
            {
              "name": "api-version",
              "value": "2023-03-01",
              "valueProvider": "fieldValue"
            }
          ]
        },
        "toolDescription": "This tool returns a list of all virtual machines (VMs) within a specific resource group under a given subscription. The response is a JSON object that includes metadata for each VM, such as the VM name, location (Azure region), provisioning state, VM size (e.g., Standard_D2s_v3), OS type, and associated resources like network interfaces and storage profiles. Each VM entry may also include tags, availability zone info, and reference links to related resources like disks, NICs, or the OS image used.\n\nThis endpoint does not include live runtime data like power state or metrics (e.g., CPU usage). To get those, you’d need to call separate endpoints such as instance view (/virtualMachines/{vmName}/instanceView). The primary use case for this endpoint is inventory management—enumerating and describing all VMs in a group for configuration or auditing purposes.",
        "optimizeResponse": true,
        "nodeCredentialType": "microsoftAzureMonitorOAuth2Api",
        "placeholderDefinitions": {
          "values": [
            {
              "name": "azure_resource_group_name",
              "type": "string"
            }
          ]
        }
      },
      "credentials": {
        "microsoftAzureMonitorOAuth2Api": {
          "id": "jUzjMChitb3DNqcr",
          "name": "Microsoft Azure Monitor"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "0159f464-6fb5-4ddf-8536-5dc7798bc484",
      "name": "Obtener eventos de VM",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        1980,
        -940
      ],
      "parameters": {
        "url": "=https://management.azure.com/subscriptions/{{ $json.azure_subscription_id }}/providers/microsoft.insights/eventtypes/management/values",
        "fields": "category.localizedValue, level, resourceGroupName, operationName.localizedValue, properties.title, properties.details, properties.type, properties.cause,eventTimestamp",
        "dataField": "value",
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "fieldsToInclude": "selected",
        "parametersQuery": {
          "values": [
            {
              "name": "api-version",
              "value": "2015-04-01",
              "valueProvider": "fieldValue"
            },
            {
              "name": "$filter",
              "value": "=eventTimestamp ge '{{ $if('{start_timestamp}', '{start_timestamp}', DateTime.utc().minus({ days: 90 }).startOf('second').toISO()) }}'\n    {{ $if({vm_name}, ` and resourceId eq '/SUBSCRIPTIONS/${$json.azure_subscription_id}/RESOURCEGROUPS/{resource_group_name}/PROVIDERS/MICROSOFT.COMPUTE/VIRTUALMACHINES/{vm_name}`, ` and resourceGroupName eq '{resource_group_name}'`) }}'\n}",
              "valueProvider": "fieldValue"
            }
          ]
        },
        "toolDescription": "This tool returns a list of Azure Activity Log events related to management operations within a specific subscription. These events capture control-plane actions performed on Azure resources, such as creating, updating, or deleting virtual machines, storage accounts, resource groups, role assignments, and more. The log includes data on who initiated the action, when it occurred, what the operation was, its result (e.g. Succeeded, Failed), and which resource was affected.\n\nEach event in the response contains detailed fields such as eventTimestamp, operationName, status, caller, resourceId, and correlationId. This data is commonly used for auditing, compliance, and security monitoring. You can apply filters using query parameters like time range ($filter) to retrieve logs from a specific period. These logs do not contain data-plane information (like reading from a VM or querying a database)—only control-plane actions that change Azure resource state or configuration.",
        "optimizeResponse": true,
        "nodeCredentialType": "microsoftAzureMonitorOAuth2Api",
        "placeholderDefinitions": {
          "values": [
            {
              "name": "resource_group_name",
              "type": "string",
              "description": "Required"
            },
            {
              "name": "vm_name",
              "type": "string",
              "description": "Not required"
            },
            {
              "name": "start_timestamp",
              "type": "string",
              "description": "Not required. Value requires timestamp in ISO 8601 format. Convert for the user if another format is provided."
            }
          ]
        }
      },
      "credentials": {
        "microsoftAzureMonitorOAuth2Api": {
          "id": "jUzjMChitb3DNqcr",
          "name": "Microsoft Azure Monitor"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "560c6ffe-e248-4b26-8752-db8be5e4056d",
      "name": "Obtener fecha actual",
      "type": "@n8n/n8n-nodes-langchain.toolCode",
      "position": [
        1840,
        -780
      ],
      "parameters": {
        "name": "get_current_date",
        "jsCode": "const curDate = new Date().toISOString()\nreturn curDate",
        "description": "Call this tool to get the current date"
      },
      "typeVersion": 1.1
    },
    {
      "id": "3adb5a18-38fe-4b94-9f5f-6937d51fe90f",
      "name": "Obtener vista de instancia de VM",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        1500,
        -560
      ],
      "parameters": {
        "url": "=https://management.azure.com/subscriptions/{{ $json.azure_subscription_id }}/resourceGroups/{azure_resource_group_name}/providers/Microsoft.Compute/virtualMachines/{vm_name}/instanceView",
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "parametersQuery": {
          "values": [
            {
              "name": "api-version",
              "value": "2023-09-01",
              "valueProvider": "fieldValue"
            }
          ]
        },
        "toolDescription": "This tool returns the instance view of a specific virtual machine. This provides runtime details that aren’t available through the standard VM configuration API. It includes information such as the VM’s power state (e.g., PowerState/running, stopped), provisioning status, and boot diagnostics.\n\nThe response also contains detailed status codes for each component of the VM, such as the OS disk, data disks, and VM agent. These status entries help diagnose health or startup issues. Unlike the general VM list, this endpoint is focused on the current operational state of the VM and is commonly used in monitoring dashboards or automation scripts that need to respond to VM lifecycle events.",
        "nodeCredentialType": "microsoftAzureMonitorOAuth2Api",
        "placeholderDefinitions": {
          "values": [
            {
              "name": "azure_resource_group_name",
              "type": "string"
            },
            {
              "name": "vm_name",
              "type": "string"
            }
          ]
        }
      },
      "credentials": {
        "microsoftAzureMonitorOAuth2Api": {
          "id": "jUzjMChitb3DNqcr",
          "name": "Microsoft Azure Monitor"
        }
      },
      "typeVersion": 1.1
    }
  ],
  "pinData": {},
  "connections": {
    "214c1831-bd0d-431a-b811-bc29122f5bf1": {
      "main": [
        []
      ]
    },
    "0159f464-6fb5-4ddf-8536-5dc7798bc484": {
      "ai_tool": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "838e66a3-0b0e-441d-aa02-d9dda32e3ce7": {
      "ai_memory": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "560c6ffe-e248-4b26-8752-db8be5e4056d": {
      "ai_tool": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "b5cd2f51-dde8-410f-a622-78d87bca9883": {
      "ai_tool": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "3adb5a18-38fe-4b94-9f5f-6937d51fe90f": {
      "ai_tool": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "1c5bee5e-bbd8-4a0c-bcdf-817540cf5b0f": {
      "main": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f2bc18f2-aa40-43b5-8738-0faa64aa5beb": {
      "ai_tool": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "006eb130-f4e6-4f6b-af5a-0f045eef9426": {
      "ai_languageModel": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "30acbfb9-6938-475c-a97c-c8e9f93d8034": {
      "ai_tool": [
        [
          {
            "node": "214c1831-bd0d-431a-b811-bc29122f5bf1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "58093475-6b4a-44b7-8a94-783de4c662f4": {
      "main": [
        [
          {
            "node": "1c5bee5e-bbd8-4a0c-bcdf-817540cf5b0f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - DevOps, Inteligencia Artificial

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos11
Categoría2
Tipos de nodos7
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34