distributed log
如何分析web api被调用的频率?
如何分析web api接口方法耗时?
如何分析分布式应用日志?
Snake是基于C#开发的日志中心,实现了应用程序日志采集平台和实时api监控平台,包括api压力监控和调用监控。
是基于RESTFul api风格开发的.net web api服务应用集群,实时的接口调用监控为系统开发者提供了有利的分析数据。
Snake是为此而生的安静而平顺监控系统,它通过Filter实现监控嵌入,异步发送监控日志消息,通过基于RabbitMQ
实现的消息总线平顺处理消息,最终将监控日志数据输入存储到Mongodb中。
Snake日志平台目前推出了V1.0,该版本实现了日志的采集,存储和分析,采集端可支持web api服务通过过滤器自动采集和应用主动发送应用日志请求,
存储端实现了日志存储和应用日志应用名和标签解析,分析端实现应用日志条件查询和日志消息合并,后续还需完善api监控日志的分析和服务接口调用路径树结构解析。
<!--************************* RabbitMQ Connection Settings ****************** -->
<RabbitMQ.Connection>
<add key="RabbitMQ.HostName" value="localhost" ></add>
<add key="RabbitMQ.Port" value="5672" ></add>
<add key="RabbitMQ.UserName" value="snake" ></add>
<add key="RabbitMQ.Password" value="snake" ></add>
<add key="RabbitMQ.VirtualHost" value="snakeTest" ></add>
<add key="RabbitMQ.QueueName" value="q_snake_apitrack" ></add>
<!--重试次数-->
<add key="RabbitMQ.UseRetryNum" value="3" ></add>
</RabbitMQ.Connection>
<add key="MongoConnectionString" value="mongodb://snake:snake@localhost:27017/SnakeDbTest/?MaximumPoolSize=500;socketTimeoutMS=2000;MinimumPoolSize=1;waitQueueTimeoutMS=300;waitQueueMultiple=10;ConnectionLifetime=30000;ConnectTimeout=30000;Pooled=true" ></add>
<!--Redis配置参数,格式:password@IP:port-->
<RedisConfig WriteServerList="123456@127.0.0.1:6379" ReadServerList="123456@127.0.0.1:6379" MaxWritePoolSize="60" MaxReadPoolSize="60" AutoStart="true" DefaultDb="3" LocalCacheTime="180" RecordeLog="false">
</RedisConfig>
<appSettings>
<add key="MongoConnectionString" value="mongodb://snake:snake@localhost:27017/SnakeDbTest/?MaximumPoolSize=500;socketTimeoutMS=2000;MinimumPoolSize=1;waitQueueTimeoutMS=300;waitQueueMultiple=10;ConnectionLifetime=30000;ConnectTimeout=30000;Pooled=true" ></add>
</appSettings>
<!--************************** snake.Service Settings ********************** -->
<snake.service>
<add key="snake.serviceName" value="SnakeConsumer" ></add>
<add key="snake.serviceDisplayName" value="Snake Consumer Server" ></add>
<add key="snake.serviceDescription" value="Snake Consumer Server" ></add>
</snake.service>
<!--************************* RabbitMQ Connection Settings ****************** -->
<RabbitMQ.Connection>
<add key="RabbitMQ.HostName" value="localhost" ></add>
<add key="RabbitMQ.Port" value="5672" ></add>
<add key="RabbitMQ.UserName" value="snake" ></add>
<add key="RabbitMQ.Password" value="snake" ></add>
<add key="RabbitMQ.VirtualHost" value="snakeTest" ></add>
<add key="RabbitMQ.QueueName" value="q_snake_apitrack" ></add>
<!--`消费者个数-->
<add key="RabbitMQ.ConsumerNum" value="4" ></add>
<!--重试次数-->
<add key="RabbitMQ.UseRetryNum" value="3" ></add>
</RabbitMQ.Connection>
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
string filterEnabled = ConfigurationManager.AppSettings["TrackLogFilterEnabled"];
if (!string.IsNullOrEmpty(filterEnabled) && filterEnabled.ToLower() == "true")
config.Filters.Add(new TrackLogActionFilterAttribute()); //api执行事件跟踪日志
<appSettings>
<!--TrackLog过滤器开关-->
<add key="TrackLogFilterEnabled" value="true" ></add>
<!--SnakeApi服务 验签-->
<add key="SnakeApi" value="SNAKE_API" ></add>
<add key="SnakeApiSecret" value="1!2@3#4$5" ></add>
<!--Snake.Api服务 接口地址-->
<add key="SnakeServerApi" value="http://localhost:50424" ></add>
</appSettings>
<appSettings>
<!--SnakeApi服务 验签-->
<add key="SnakeApi" value="SNAKE_API" ></add>
<add key="SnakeApiSecret" value="1!2@3#4$5" ></add>
<!--Snake.Api服务 接口地址-->
<add key="SnakeServerApi" value="http://localhost:50424" ></add>
</appSettings>
<appSettings>
<!--SnakeApi服务 验签-->
<add key="SnakeApi" value="SNAKE_API" ></add>
<add key="SnakeApiSecret" value="1!2@3#4$5" ></add>
<!--Snake.Api服务 接口地址-->
<add key="SnakeServerApi" value="http://localhost:50424" ></add>
</appSettings>
LogProxy.Error("Exception : ", "Snake.DemoConsole", 4, new List<string>() { "Block", "Red" });
LogProxy.Debug("Debug : ", "Snake.DemoConsole", tags: new List<string>() { "Blue", "Red" });
QQ: 46313060
Email: yepeng2002@sina.com