{"repo":"yepeng2002/Snake","free":true,"listed":false,"github":"https://github.com/yepeng2002/Snake","clone":"git clone https://github.com/yepeng2002/Snake.git","description":"distributed log","language":"JavaScript","stars":10,"topics":["log","csharp","rabbitmq","mongodb","webapi"],"license":"Apache-2.0","category":"data-pipelines","readme_excerpt":"Abstract 如何分析web api被调用的频率？ 如何分析web api接口方法耗时？ 如何分析分布式应用日志？ Snake是基于C#开发的日志中心，实现了应用程序日志采集平台和实时api监控平台，包括api压力监控和调用监控。 是基于RESTFul api风格开发的.net web api服务应用集群，实时的接口调用监控为系统开发者提供了有利的分析数据。 Snake是为此而生的安静而平顺监控系统，它通过Filter实现监控嵌入，异步发送监控日志消息，通过基于RabbitMQ 实现的消息总线平顺处理消息，最终将监控日志数据输入存储到Mongodb中。 序 Snake日志平台目前推出了V1.0，该版本实现了日志的采集，存储和分析，采集端可支持web api服务通过过滤器自动采集和应用主动发送应用日志请求， 存储端实现了日志存储和应用日志应用名和标签解析，分析端实现应用日志条件查询和日志消息合并，后续还需完善api监控日志的分析和服务接口调用路径树结构解析。 Requirements Windows 7 、Windows Server 2008以上操作系统 IIS 8.5 + .NET Framework 4.6 RabbitMQ 3.6.5 Mongodb 3.2.1 redis-2.4.5 Snake架构 Quick Started 1. Snake.Api项目是webapi项目，负责发送日志请求的响应和查询日志接口，作为生产者将日志发布到消息队列，作为查询接口从Mongodb提取日志数据，编译并发布Snake.Api到IIS站点，修改配置文件web.config，如下： RabbitMQ配置 Mongo配置 Redis配置 2. Snake.ApiTrackService项目是windows服务，是消息的消费者，并将消费的消息存入MongoDB，同时解析应用和标签存入缓存服务Redis供Snake.Api提取Applications和tags给Snake.App客户端选择，编译Snake.ApiTrackService项目 修改配置文件App.config配置项，如下： 执行start.bat批处理脚本，安装或更新windows服务 3. 安装RabbitMQ，根据上述1和2的配置设置用户密码和VirtualHost 4. 安装Mongodb，根据上述2的配置设置用户密码和数据库，执行script目录下的MongoScript.js脚本 5. 在需要监控的webapi项目（项目Snake.DemoApi中有使用示例代码）中引用Snake.Client.dll和Snake.Core.dll动态库，并增加配置： 在App Start下WebApiConfig.cs文件中增加一行代码如下： 在web.config配置文件中增加配置如下： 6. 安装Redis 7. Snake.App项目是日志分析应用的客户端程序，支持分页加载日志数据，支持日志合并 App.config配置文件中增加配置如下： 8. 应用日志发送，引用Snake.Client.dll和Snake.Core.dll动态库，并增加配置，如下： 示例项目Snake.DemoConsole配置文件中增加配置如下： 应用日志示例代码： Snake.App界面 Copyright and license Apache 许可证2.0版 AREAS FOR IMPROVEMENTS","default_branch":null,"files":null,"tree":[],"storefront":"/r/yepeng2002","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/yepeng2002/Snake/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}