是否可以阻止将来自某些 IP 地址的请求发送到 Application Insights?
Is it possible to prevent requests from certain IP addresses being sent to Application Insights?
我的客户正在使用 PenTest 工具来测试他在 Azure 中托管的 Web 应用程序。他不希望在 Application Insights 中看到由此生成的异常,因为它们使得查找实际应用程序错误变得非常困难。
是否可以过滤掉来自特定 IP 地址的请求,以便它们不会发送到 App Insights?也许使用像 TelemetryProcessor 这样的东西?我找到了检查请求响应代码等内容的示例,但我似乎无法找到如何为 IP 地址执行此操作。
谢谢
如果您知道 IP 地址,则可以使用 TelemetryProcessor
。
这是代码片段:
public class IPFilter : ITelemetryProcessor
{
private ITelemetryProcessor Next { get; set; }
// next will point to the next TelemetryProcessor in the chain.
public IPFilter(ITelemetryProcessor next)
{
this.Next = next;
}
public void Process(ITelemetry item)
{
// To filter out an item, return without calling the next processor.
if (!FilterIp(item)) { return; }
this.Next.Process(item);
}
// Example: replace with your own criteria.
private bool FilterIp(ITelemetry item)
{
RequestTelemetry requestTelemetry = item as RequestTelemetry;
if (requestTelemetry != null && requestTelemetry.Context != null && requestTelemetry.Context.Location != null && !String.IsNullOrEmpty(requestTelemetry.Context.Location.Ip))
{
//you can modify the condition as per your requirement
if (requestTelemetry.Context.Location.Ip == "XXX.XXX.XXX.XXX")
return false;
}
return true;
}
}
最后,不要忘记注册您的自定义 ITelemetryProcessor。这是official doc供您参考。
我的客户正在使用 PenTest 工具来测试他在 Azure 中托管的 Web 应用程序。他不希望在 Application Insights 中看到由此生成的异常,因为它们使得查找实际应用程序错误变得非常困难。
是否可以过滤掉来自特定 IP 地址的请求,以便它们不会发送到 App Insights?也许使用像 TelemetryProcessor 这样的东西?我找到了检查请求响应代码等内容的示例,但我似乎无法找到如何为 IP 地址执行此操作。
谢谢
如果您知道 IP 地址,则可以使用 TelemetryProcessor
。
这是代码片段:
public class IPFilter : ITelemetryProcessor
{
private ITelemetryProcessor Next { get; set; }
// next will point to the next TelemetryProcessor in the chain.
public IPFilter(ITelemetryProcessor next)
{
this.Next = next;
}
public void Process(ITelemetry item)
{
// To filter out an item, return without calling the next processor.
if (!FilterIp(item)) { return; }
this.Next.Process(item);
}
// Example: replace with your own criteria.
private bool FilterIp(ITelemetry item)
{
RequestTelemetry requestTelemetry = item as RequestTelemetry;
if (requestTelemetry != null && requestTelemetry.Context != null && requestTelemetry.Context.Location != null && !String.IsNullOrEmpty(requestTelemetry.Context.Location.Ip))
{
//you can modify the condition as per your requirement
if (requestTelemetry.Context.Location.Ip == "XXX.XXX.XXX.XXX")
return false;
}
return true;
}
}
最后,不要忘记注册您的自定义 ITelemetryProcessor。这是official doc供您参考。