检索Azure诊断日志

时间:2012-08-02 17:46:25

标签: azure azure-diagnostics

我们在Azure中运行的5个部署中有大约10个实例,并记录到Azure诊断(WADLogsTable)。 我需要在几分钟内检索一次这些日志,以便在第三方工具本地进行分析。我已经有了从表中读取日志的简单版本,保存了最后一个分区和行键,下次运行查询PartitionKey> = SavedPartitionKey。问题是以这种方式检索不是所有日志: WAD使用日志缓冲,并在5分钟内(每个实例)将数据存储在表中。 记录事件的RowKey以部署ID(为guid)开始。

  1. 时间00:05:30 InstanceA,DeploymentId = 999 ...将最近5分钟的日志记录下来 PK RK消息 00:01:00 999 msg1 00:01:00 999 msg2 00:02:00 999 msg3 00:02:00 999 msg4 00:05:00 999 msg5
  2. 时间00:06:00转移脚本启动,获取所有日志,保存LastPK = 00:05:00
  3. 时间00:06:30 InstanceB with DeploymentId = 111 ...将其日志记录最后5分钟 00:02:00 111 msg6 00:03:00 111 msg7 00:05:00 111 msg8 00:06:00 111 msg9
  4. 在时间00:07:00传输脚本启动,获取PK> = LastPK = 00:05:00的日志,实际上只检索msg8和msg9(msg6和msg7丢失)。
  5. 我想到的解决方案是每次TransferScript检索最后6分钟的所有日志(wad同步为5分钟,缓冲区为1分钟),但这可以大大增加传输的数据量(如5次)+需要以某种方式过滤掉已经检索到的日志,这可能会有问题。另外我考虑添加Timestamp> LastSeenTimestamp但是我不确定它是否解决了数据量和重复的问题以及是否以这种方式我不会丢失消息。有任何想法吗? 感谢

2 个答案:

答案 0 :(得分:1)

转移到第三方工具是否需要实时或“尽快”?您是否只能传输5分钟或更长时间的数据而不能传输小于5分钟的数据?这样做确保您只传输已完成的分区。

答案 1 :(得分:1)

另一种可能性是在您的查询中包含“DeploymentId”以及“PartitionKey”,以获取最近“n”分钟的诊断数据(如果您有此信息可用)。