0

IIS 7.0 及更高版本。此设置中不涉及负载均衡器。被请求的文件是一个小的间隔图像,可以使用 JQuery 同步或异步加载。该文件并不重要,它只是让最终用户访问此 IIS 服务器进行分析的一种方式。

我需要从 IIS 日志中捕获访问者的机器名称。当前日志中已包含客户端 IP 地址。问题是 IP 在我们的环境中是短暂的,如果我不尽快将其解析为机器名称,它就没有用。所以我们需要实时确定访问IP的机器名。

什么是解决这个问题的好方法。这些是我找到的选项...

1) 在 IIS 中启用反向 DNS 查找 -> http://www.expta.com/2010/01/how-to-enable-reverse-dns-lookup-in-iis.html。这会影响服务器性能,我担心这会最终导致用户请求停止,并导致他的页面加载缓慢,因为反向查找操作的费用增加

2) 编写一个 IIS 日志模块,该模块通过对 IP 进行严格查找并在日志中写入机器名称来增强日志记录。>> 恐怕这会减慢最终用户的请求周转时间并由于反向 DNS 查找而影响服务器性能。几乎我想这是我在做上面的第 1 点,而不是依赖微软的内置功能。最后,实时反向 DNS 查找会影响性能。

3) 与上面的第 1 点或第 2 点相同,但我将更改用户点击的页面的 HTML,以使用异步 javascript 调用(而不是内联调用)加载 IIS 托管图像文件。这样,最终用户不必等待此 IIS 请求完成,并且可以加载剩余的页面(对他们重要的内容),而无需依赖间隔图像请求来完成。但是浏览器仍然会专门为异步图像加载一个线程,这仍然是最终用户的性能损失。

4) 只需使用默认的 IIS 日志记录即可实时登录。让一个单独的 C# 应用程序每 5 分钟左右读取一次文件,检测添加的新行,解析它们并获取 IP,进行反向查找并找到机器名称,并根据要求将其记录到数据库或平面文件中。另一方面,现在我几乎需要实时登录,因为如果我不立即记录,那么在我的应用程序读取日志、找到它并进行反向查找时,IP 可能已经分配给了另一台机器在上面。此外,我还必须处理读取日志文件的复杂性,以便在上次读取后仅读取新插入的日志条目等。

5) http://www.iis.net/learn/extensions/advanced-logging-module/advanced-logging-for-iis-real-time-logging -> 我想这与上面的第 2 点相同,只是它是用 VC++ 代替 C# 编写。所以我猜这种方法也有同样的缺点

因此,每种方法似乎都有缺点。您认为解决问题的好方法是什么?

4

1 回答 1

0

由于路由的工作方式,不可能将 IP 反转为机器名称 - 许多机器可以通过同一个 IP 来。

如果您找到了一种将 IP 映射到您可以接受的机器名称的方法,那么一种方法可能是简单地让站点提供图像并在正常请求处理程序中进行所有必要的发现。通过这种方式,您还可以获得有关用户的更多信息(cookie、身份验证标头,...)。这种方法可能比配置 IIS 日志记录更灵活。

于 2012-12-03T16:35:35.887 回答