番茄日志发布1.0.3版本-增加Kafka支持

2022-10-17,,,,

番茄日志(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

好了,这下我真的没啥家底了,都抖露给你们看完了。

《番茄日志发布1.0.3版本-增加Kafka支持.doc》

下载本文的Word格式文档,以方便收藏与打印。