番茄日志发布1.0.3版本-增加Kafka支持
番茄日志(tomatolog)能做什么
可能你是第一次听说tomatolog,没关系,我可以从头告诉你,通过了解番茄日志,希望能帮助有需要的朋友,番茄日志处理将大大降低你采集、分析、处理日志的过程。
介绍
tomatolog 是一个基于 .netcore 平台的日志处理组件,包含客户端、服务端,非常容易使用和部署。
多客户端实现
tomatolog 的客户端和服务端目前都是基于 .netcore 版本,客户端提供了三种日志流传输方式,目前实现了 redis/rabbitmq/kafka流。如果希望使用非 .netcore 平台的客户端,你可以自己开放其它第三方语言的客户端,通过实现 tomatolog 传输协议,将数据传送到管道(redis/rabbitmq/kafka)中即可。
强大的日志存储方式
tomatolog 服务端还提供了三种存储日志的方式,分别是 file、mongodb、elasticsearch,存储方式可以通过配置文件指定。在 tomatolog 服务端,我们还提供了一个web 控制台,通过该控制台,可以对日志进行查询、搜索,对服务过滤器进行配置,警报配置、通知发送等等
灵活多样的日志报警配置
其中,可使用的警报通知方式有:sms 和 email 两种方式,但是,sms 其本质是一个 http 请求,通过 sms 的配置,可以实现向所有提供了 http 接口的网关发送通知。
我好累丫
为了开发支持kafka,还得学习kafka/zookeeper,为了使用kafka-manager控制台,还学习scala/sbt编译雅虎这个破项目,控制台我就起了四个,不说了,看图。
tomatolog-1.0.3 版本
tomatologserver 服务器版本 1.0.3 ,主要增加了对kafka的支持,服务端做了一些优化,在配置上,几乎没有改动,只需要在原来的基础上增加kafka配置即可
"kafka": { "group": "tomatologserver", "bootstrapservers": "127.0.0.1:9092", "topic": "tomatolog" }
同时也增加了kafka客户端的支持,当前版本为:1.0.3
install-package tomatolog.client.kafka
使用方式和其它redis/rabbitmq客户端是没有任何区别的,主要看下面的 writelogasync() 方法,只要做好了 tomatologclientkafka 的配置,剩下的,就是调用 exception 的扩展方法 ex.addtomatologasync()
public class tomatologclientkafkatest { [fact] public async task writelogasync() { int i = 0; for (; i < 10; i++) { try { throw new exception("kafka throw exception"); } catch (exception ex) { ex.data["connection"] = "127.0.0.1"; await ex.addtomatologasync(1320); } } assert.equal(10, i); } itomatologclient client; public tomatologclientkafkatest() { var options = new eventkafkaoptions { logger = null, loglevel = microsoft.extensions.logging.loglevel.information, projectlabel = "20272", projectname = "tomatolog", sysoptions = new eventsysoptions { eventid = true, ip = true, iplist = true, machinename = true, processid = true, processname = true, threadid = true, timestamp = true, username = true }, tags = null, version = "1.0.1", bootstrapservers = "127.0.0.1:9092", topic = "tomatolog" }; client = new tomatologclientkafka(options); } }
番茄日志服务端控制台长什么样
首页看日志列表
日志详情、弹出查看详情、日志搜索、支持es/mongodb/file搜索
全局日志处理、警报配置
针对单个项目的详细日志处理、警报配置
极简风格
不管是从项目结构还是解决方案,我都强调简单就是最美的根本要求,解决方案的内容虽然看起来很多,但是你也只需要按需引用其中一个客户端就可以了,服务端更是如此,全站都打包在一个 .netcore 的应用程序中,程序的警报配置都是存储在配置文件中的,无需数据库支持。
看到这里,其实完全就可以点赞了。谢谢大家!
别走,我还有几个开源工具
优秀的微服务网关kong的.netcore中唯一客户端
https://github.com/lianggx/kong.net
基于.netcore+postgresql的快速开发脚手架
asp.netcore轻松学系列的开源实例代码
https://github.com/lianggx/easyaspnetcoredemo
好了,这下我真的没啥家底了,都抖露给你们看完了。
上一篇: TYAttributedLabel的使用