You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Azure逻辑应用,格式化Teams告警消息展示VM磁盘信息?

解决方案:提取Azure通用告警维度并发送整洁的Teams消息

一、使用Logic App内置Teams连接器解决维度提取问题

Azure通用告警Schema中,Computer、Disk、Val这些维度数据存储在triggerBody()?['alertContext']?['dimensions']数组里,直接拖拽该字段会自动生成foreach循环导致消息混乱,你可以通过XPath表达式精准提取指定维度值,或者将维度数组转换为整洁的键值对字符串。

1. 精准提取单个维度值

在Teams连接器的Message body中,使用以下表达式直接提取目标维度:

**VM低磁盘空间告警触发**
- 计算机名称: @{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Computer"]/value/text()')}
- 磁盘盘符: @{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Disk"]/value/text()')}
- 剩余空间占比: @{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Val"]/value/text()')}%
- 告警状态: @{triggerBody()?['status']}

表达式说明:

  • 将维度数组转换为XML结构,通过XPath匹配name字段对应的value
  • first()函数确保只取匹配到的第一个值(避免多维度重复)

2. 批量处理所有维度(避免遗漏)

如果需要展示所有维度,可先添加**"Initialize variable"动作,变量类型设为String,然后添加"For each"循环遍历triggerBody()?['alertContext']?['dimensions'],在循环内添加"Append to string variable"**动作,内容为:

- @{item().name}: @{item().value}

最后在Teams消息体中引用该变量,示例:

**VM低磁盘空间告警触发**
@{variables('维度信息')}
告警详情: @{triggerBody()?['alertContext']?['description']}

二、使用Teams Incoming Webhook实现更灵活的消息格式

如果内置连接器的格式限制较多,可改用Incoming Webhook发送自适应卡片或自定义文本:

1. 创建Teams Incoming Webhook

在目标Teams频道的「连接器」中添加「Incoming Webhook」,复制生成的Webhook URL。

2. 在Logic App中配置HTTP动作

  • 添加**"HTTP"**动作,方法选择POST
  • 「URI」填入复制的Webhook URL
  • 「Headers」添加键值对:Content-Type: application/json
  • 「Body」使用以下JSON构建消息(支持Markdown或自适应卡片):

方案A:简洁文本格式

{
  "text": "**VM低磁盘空间告警触发**\n- 计算机名称: @{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Computer"]/value/text()')}\n- 磁盘盘符: @{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Disk"]/value/text()')}\n- 剩余空间占比: @{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Val"]/value/text()')}%"
}

方案B:自适应卡片(更美观)

{
  "type": "message",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "content": {
        "type": "AdaptiveCard",
        "version": "1.0",
        "body": [
          {
            "type": "TextBlock",
            "size": "Large",
            "weight": "Bolder",
            "text": "⚠️ VM低磁盘空间告警"
          },
          {
            "type": "FactSet",
            "facts": [
              {
                "title": "计算机名称:",
                "value": "@{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Computer"]/value/text()')}"
              },
              {
                "title": "磁盘盘符:",
                "value": "@{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Disk"]/value/text()')}"
              },
              {
                "title": "剩余空间占比:",
                "value": "@{first(xpath(xml(json(concat('{"root":', triggerBody()?['alertContext']?['dimensions'], '}'))), '//root/Item[name="Val"]/value/text()')}%"
              },
              {
                "title": "告警时间:",
                "value": "@{triggerBody()?['context']?['timestamp']}"
              }
            ]
          }
        ]
      }
    }
  ]
}

3. 测试触发

保存Logic App后,触发低磁盘空间告警,即可在Teams频道收到格式整洁的消息。

内容的提问来源于stack exchange,提问作者I_am_Dawid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:41:06