如何通过Azure Logic Apps每日定时运行查询并发送含完整结果的邮件
解决方案:通过Azure Logic Apps实现KQL查询结果每日邮件推送
一、创建定时触发的Logic Apps工作流
- 登录Azure门户,创建消耗型Logic Apps(适配定时任务场景)
- 选择「当定期触发器发生时」作为启动节点,配置频率为「天」、间隔为1,设置每日运行的具体时间(如凌晨2点)
二、添加KQL查询执行动作
- 在触发器后添加「Azure Monitor 日志 - 运行查询并列出结果」动作
- 关联目标Log Analytics工作区
- 在查询框中粘贴修正后的KQL语句(注意修正原语句的拼写错误:
logEntey改为logEntry):
ContainerLog | extend logEntry = parse_json(LogEntry) | where logEntry.application.name contains "Application_name" | where logEntry.hostname contains "application_name_service" | where logEntry.error.message contains "error" | project message= logEntry.error.message, timestamp=tostring(logEntry.timestamp) | order by timestamp desc
三、配置邮件推送(两种可选方式)
方式1:查询结果嵌入邮件正文
- 添加「Office 365 Outlook - 发送电子邮件」动作(或其他邮件连接器如Outlook.com)
- 在正文区域点击「表达式」按钮,输入以下表达式自动将JSON结果转为HTML表格:
createTable(body('运行查询并列出结果')?['value']) - 填写收件人、邮件主题等基础信息
方式2:查询结果作为附件发送
- 在KQL查询动作后添加「创建CSV表」动作,数据源选择「运行查询并列出结果」的输出值
- 在「发送电子邮件」动作的附件区域添加新项:
- 名称填写
ErrorLogs.csv,内容选择「创建CSV表」的输出,内容类型设为text/csv
- 名称填写
四、测试与验证
- 保存工作流后手动点击「运行」,确认邮件正常接收且包含完整查询结果
- 核对触发器调度配置,确保符合每日运行要求
关键注意事项
- 确保Logic Apps的服务主体拥有Log Analytics工作区的读取权限(在工作区IAM中添加「Log Analytics Reader」角色)
- 必须修正KQL语句中的拼写错误,否则查询会返回空结果
- 若结果行数超过1000,需在「运行查询并列出结果」动作的设置中调整「顶部计数」参数
内容的提问来源于stack exchange,提问作者Rizwan Khan A
相关产品推荐
相关产品推荐

