At my day job we have load balanced web servers which talk to load balanced app servers via web services (and lately WCF). At any given time, we have 4-6 different teams that have the ability to add new web sites or services or consume existing services. We probably have about 20-30 different web applications and corresponding services.
在我的日常工作中,我们有负载均衡的Web服务器,通过Web服务(以及最近的WCF)与负载均衡的应用服务器通信。在任何时候,我们有4-6个不同的团队,能够添加新的网站或服务或使用现有的服务。我们可能有大约20-30种不同的Web应用程序和相应的服务。
Unfortunately, given that we have no centralized control over this due to competing priorities, org structures, project timelines, financial buckets, etc., it is quite a mess. We have a variety of services that are reused, but a bunch that are specific to a front-end.
不幸的是,由于竞争优先级,组织结构,项目时间表,财务桶等,我们没有集中控制这一点,这是一个混乱。我们有各种各样的服务可以重复使用,但是一堆特定于前端的服务。
Ideally we would have better control over this situation, and we are trying to get control over it, but that is taking a while. One thing we would like to do is find out more about what all of the inter-relationships between web sites and the app servers.
理想情况下,我们可以更好地控制这种情况,我们正试图控制它,但这需要一段时间。我们想要做的一件事是了解更多关于网站和应用服务器之间的所有相互关系的信息。
I have used Reflector to find dependencies among assemblies, but would like to be able to see the traffic patterns between services.
我使用Reflector查找程序集之间的依赖关系,但希望能够看到服务之间的流量模式。
What are the options for trying to map out web service relationships? For the most part, we are mainly talking about internal services (web to app, app to app, batch to app, etc.). Off the top of my head, I can think of two ways to approach it:
尝试映射Web服务关系有哪些选择?在大多数情况下,我们主要讨论内部服务(网络到应用程序,应用程序到应用程序,批量到应用程序等)。在我的头脑中,我可以想到两种方法:
- Analyze assemblies for any web references. The drawback here is that not everything is a web reference and I'm not sure how WCF connections are listed. However, this would at least be a start for finding 80% of the connections. Does anyone know of any tools that can do that analysis? Like I said, I've used Reflector for assembly references but can't find anything for web references.
- Possibly tap into IIS and passively monitor the traffic coming in and out and somehow figure out what is being called and where from. We are looking at enterprise tools that could help but it would be a while before they are implemented (and cost a lot). But is there anything out there that could help out quickly and cheaply? One tool in particular (AmberPoint) can tap into IIS on the servers and monitor inbound and outbound traffic, adds a little special sauce and begin to build a map of the traffic. Very nice, but costs a bundle.
分析任何Web引用的程序集。这里的缺点是并非所有内容都是Web引用,我不确定如何列出WCF连接。但是,这至少是找到80%连接的开始。有谁知道任何可以进行分析的工具?就像我说的,我已经使用Reflector进行程序集引用,但找不到任何Web引用。
可能会进入IIS并被动地监控进出的流量,并以某种方式找出所调用的内容以及来自哪里。我们正在寻找可以提供帮助的企业工具,但它们在实施之前还需要一段时间(而且成本很高)。但那里有什么可以快速而便宜地帮助吗?特别是一个工具(AmberPoint)可以在服务器*问IIS并监控入站和出站流量,添加一些特殊的酱汁并开始构建流量图。非常好,但需要花费一大笔钱。
I know, I know, how the heck did you get into this mess in the first place? Beats me, just trying to help us get control of it and get out of it.
我知道,我知道,你到底是怎么进入这个烂摊子的?打败我,试图帮助我们控制它并摆脱它。
Thanks, Matt
2 个解决方案
#1
0
You need a service registry (UDDI??)... If you had a means to catalog these services and their consumers, it would make this job of dependency discovery a lot easier. That is not an easy solution, though. It takes time and documentation to get a catalog in place.
您需要一个服务注册表(UDDI ??)...如果您有方法对这些服务及其使用者进行编目,那么这将使依赖项发现的工作变得更加容易。但这不是一个简单的解决方案。获取目录需要时间和文档。
I think the quickest solution would be to query your IIS logs and find source URLs which originate from your own servers. You would at least be able to track down which servers your consumers are coming from.
我认为最快的解决方案是查询IIS日志并查找源自您自己的服务器的源URL。您至少可以找到您的消费者来自哪些服务器。
Also, if you already have some kind of authentication mechanism in place, you could trace who is using a particular service based on login.
此外,如果您已经拥有某种身份验证机制,则可以根据登录情况跟踪谁正在使用特定服务。
You are right about AmberPoint. There are other tools that catalog the service traffic and provide reports showing what is happening to your services. Systinet, SOA Software and Actional also has a products similar to Amberpoint but Amberpoint has a free-ware version, I believe.
你对AmberPoint是正确的。还有其他工具可以对服务流量进行编目,并提供显示服务发生情况的报告。 Systinet,SOA Software和Actional也有类似于Amberpoint的产品,但我相信Amberpoint有一个免费软件版本。
#2
2
The easiest way is to look through the logs, but if that doesn't include the referrer than you may also want to monitor what is going out from your web to the app server. You can use tools like Wireshark or Microsoft Network Monitor to see this traffic.
最简单的方法是查看日志,但如果不包括引荐来源,那么您可能还希望监控从Web到应用服务器的内容。您可以使用Wireshark或Microsoft Network Monitor等工具查看此流量。
The other "solution" and I use this loosely is to bind a specific web server to app server and then run through a bundle and see what it is hitting on the app server. You could probably do this in a test environment to lesson the effects on the users of the site.
另一个“解决方案”,我松散地使用它是将特定的Web服务器绑定到应用服务器,然后运行一个捆绑包,看看它在应用服务器上的功能。您可以在测试环境中执行此操作,以了解对网站用户的影响。
#1
0
You need a service registry (UDDI??)... If you had a means to catalog these services and their consumers, it would make this job of dependency discovery a lot easier. That is not an easy solution, though. It takes time and documentation to get a catalog in place.
您需要一个服务注册表(UDDI ??)...如果您有方法对这些服务及其使用者进行编目,那么这将使依赖项发现的工作变得更加容易。但这不是一个简单的解决方案。获取目录需要时间和文档。
I think the quickest solution would be to query your IIS logs and find source URLs which originate from your own servers. You would at least be able to track down which servers your consumers are coming from.
我认为最快的解决方案是查询IIS日志并查找源自您自己的服务器的源URL。您至少可以找到您的消费者来自哪些服务器。
Also, if you already have some kind of authentication mechanism in place, you could trace who is using a particular service based on login.
此外,如果您已经拥有某种身份验证机制,则可以根据登录情况跟踪谁正在使用特定服务。
You are right about AmberPoint. There are other tools that catalog the service traffic and provide reports showing what is happening to your services. Systinet, SOA Software and Actional also has a products similar to Amberpoint but Amberpoint has a free-ware version, I believe.
你对AmberPoint是正确的。还有其他工具可以对服务流量进行编目,并提供显示服务发生情况的报告。 Systinet,SOA Software和Actional也有类似于Amberpoint的产品,但我相信Amberpoint有一个免费软件版本。
#2
2
The easiest way is to look through the logs, but if that doesn't include the referrer than you may also want to monitor what is going out from your web to the app server. You can use tools like Wireshark or Microsoft Network Monitor to see this traffic.
最简单的方法是查看日志,但如果不包括引荐来源,那么您可能还希望监控从Web到应用服务器的内容。您可以使用Wireshark或Microsoft Network Monitor等工具查看此流量。
The other "solution" and I use this loosely is to bind a specific web server to app server and then run through a bundle and see what it is hitting on the app server. You could probably do this in a test environment to lesson the effects on the users of the site.
另一个“解决方案”,我松散地使用它是将特定的Web服务器绑定到应用服务器,然后运行一个捆绑包,看看它在应用服务器上的功能。您可以在测试环境中执行此操作,以了解对网站用户的影响。