如何调试 Azure EventHub?
How do I debug Azure EventHubs?
我正在尝试将数据发送到 azure 事件中心,供流分析和 PowerBI 使用。
在我测试事件中心时,我的 C# 应用程序正在发送一个简单的测试字符串(JSON 格式),但是当我想在事件中心处理数据时,它告诉我没有发送任何数据.
我不确定如何调试集线器以查看消息未显示的原因,我尝试 google 调试文档但在搜索调试 azure 事件集线器时发现 none
如何找到关于此的任何错误消息?
为了测试目的,我的 C# 代码被简化成这样
private async Task SendMessageToEventHub(string messageToSend)
{
var connectionStringBuilder = new EventHubsConnectionStringBuilder(EventHubConnectionString)
{
EntityPath = EventHubName
};
eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
try
{
await eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(messageToSend)));
} catch (Exception exception) {
_logger.LogInformation($"-PimLog- -ProductInfoController- {DateTime.Now}, > Exception: {exception.Message} ");
}
_logger.LogInformation($"-PimLog- -ProductInfoController- {DateTime.Now}, EventHub Message Sent Successfully ");
}
我确实看到了消息发送成功的日志消息,所以没有明显的错误。
当我尝试 运行 Azure 门户中的查询时,我收到以下消息
There is no data from input 'pimhub'. Please make sure the input source has data and then try again.
如何进一步调试?
若要调试您的消息是否确实在事件中心中 - 以及您期望的格式,Service Bus Explorer 工具非常有用:https://github.com/paolosalvatori/ServiceBusExplorer(与名称所暗示的不同,它也完全支持事件中心).
如果消息显示在那里但您仍然没有在 ASA 中收到它们,请仔细检查您在 ASA 中输入的连接设置,尤其是消费者组(您应该有一个专门的消费者组用于您的ASA 工作)。
根据我的经验,我一直使用 Azure 门户指标来调试事件中心和流式分析链。
首先,你应该去事件中心概述,检查输出请求与输入请求的数量是否相同,如下图所示
此外,检查用户错误和服务器错误指标以查看事件发送是否没有错误。
如果所有指标都正常,您应该检查 Stream Analytics。使用指标检查是否存在以下错误之一
- 数据转换错误 --> 流分析尝试保存到 te 输出时出错
- 输入反序列化错误 --> 大多数时候是查询错误
- 运行时错误 --> 必须调查
我还注意到,很多时候门户无法从 EH 捕获事件以测试 ASA 查询(如您所述)。老实说,我不知道为什么,但一个技巧可能是复制要在文件中发送的 json 对象,然后使用选项 "Upload Sample Data From File" 通过门户测试查询(ASA -->查询 --> 输入)。
希望对您有所帮助
要使用 Azure 流分析查询查看数据,您必须先部署查询。
完成此操作后,您需要打开查询并通过单击为要查询的样本数据设置时间范围:"Select time range"。
您现在应该可以使用查询工具查询您的数据了。
我正在尝试将数据发送到 azure 事件中心,供流分析和 PowerBI 使用。
在我测试事件中心时,我的 C# 应用程序正在发送一个简单的测试字符串(JSON 格式),但是当我想在事件中心处理数据时,它告诉我没有发送任何数据.
我不确定如何调试集线器以查看消息未显示的原因,我尝试 google 调试文档但在搜索调试 azure 事件集线器时发现 none
如何找到关于此的任何错误消息?
为了测试目的,我的 C# 代码被简化成这样
private async Task SendMessageToEventHub(string messageToSend)
{
var connectionStringBuilder = new EventHubsConnectionStringBuilder(EventHubConnectionString)
{
EntityPath = EventHubName
};
eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
try
{
await eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(messageToSend)));
} catch (Exception exception) {
_logger.LogInformation($"-PimLog- -ProductInfoController- {DateTime.Now}, > Exception: {exception.Message} ");
}
_logger.LogInformation($"-PimLog- -ProductInfoController- {DateTime.Now}, EventHub Message Sent Successfully ");
}
我确实看到了消息发送成功的日志消息,所以没有明显的错误。
当我尝试 运行 Azure 门户中的查询时,我收到以下消息
There is no data from input 'pimhub'. Please make sure the input source has data and then try again.
如何进一步调试?
若要调试您的消息是否确实在事件中心中 - 以及您期望的格式,Service Bus Explorer 工具非常有用:https://github.com/paolosalvatori/ServiceBusExplorer(与名称所暗示的不同,它也完全支持事件中心).
如果消息显示在那里但您仍然没有在 ASA 中收到它们,请仔细检查您在 ASA 中输入的连接设置,尤其是消费者组(您应该有一个专门的消费者组用于您的ASA 工作)。
根据我的经验,我一直使用 Azure 门户指标来调试事件中心和流式分析链。
首先,你应该去事件中心概述,检查输出请求与输入请求的数量是否相同,如下图所示
此外,检查用户错误和服务器错误指标以查看事件发送是否没有错误。 如果所有指标都正常,您应该检查 Stream Analytics。使用指标检查是否存在以下错误之一
- 数据转换错误 --> 流分析尝试保存到 te 输出时出错
- 输入反序列化错误 --> 大多数时候是查询错误
- 运行时错误 --> 必须调查
我还注意到,很多时候门户无法从 EH 捕获事件以测试 ASA 查询(如您所述)。老实说,我不知道为什么,但一个技巧可能是复制要在文件中发送的 json 对象,然后使用选项 "Upload Sample Data From File" 通过门户测试查询(ASA -->查询 --> 输入)。
希望对您有所帮助
要使用 Azure 流分析查询查看数据,您必须先部署查询。
完成此操作后,您需要打开查询并通过单击为要查询的样本数据设置时间范围:"Select time range"。
您现在应该可以使用查询工具查询您的数据了。