LogAgen的工作流程

LogAgen的工作流程:

一.读日志 --tailf 第三方库

新建tail_test/main.go

package main

import (
    "fmt"
    "github.com/hpcloud/tail"
    "time"
)

func main() {
    fileName := "./my.log"
    //fileName := "/tmp/kafka-logs/web_log-0/00000000000000000000.log"
    config := tail.Config{
        ReOpen:    true,                                 //重新打开
        Follow:    true,                                 //是否跟随
        Location:  &tail.SeekInfo{Offset: 0, Whence: 2}, //从文件的哪个地方开始读
        MustExist: false,                                //文件不存在不报错
        Poll:      true,
    }
    tails, err := tail.TailFile(fileName, config)
    if err != nil {
        fmt.Println("tail file failed,err:", err)
        return
    }
    var (
        line *tail.Line
        ok  bool
    )
    for {
        line,ok = <-tails.Lines
        if !ok {
            fmt.Printf("tail file close reopen,filename:%s\n",tails,fileName)
            time.Sleep(time.Second)
            continue
        }
        fmt.Println("line:",line.Text)
    }
}

执行下面的命令:

export GO111MODULE=on
export GOPROXY=https://goproxy.cn
go mod init
go mod tidy
go build client.go
./client

二. 往kafka写日志--sarama

window安装方法参考;

https://docs.qq.com/doc/DTmdldEJJVGtTRkFi

Ubuntu18.04 安装Jdk1.8

环境信息: OS:Ubuntu18.04 JDK:8

第一步:安装JDK

https://blog.csdn.net/hunt_er/article/details/82850509

1.输入命令:sudo apt install openjdk-8-jre-headless,回车

2.java -version   //查看版本

第二步:安装zookeeper

1.下载:kafka_2.12-2.4.0.tgz

打开下面的网址下载:

http://kafka.apache.org/downloads

wget http://mirror.bit.edu.cn/apache/kafka/2.4.0/kafka_2.12-2.4.0.tgz
tar -zxvf kafka_2.12-2.4.0.tgz
配置
  1. 打开config\zookeeper.properties文件
  2. 修改dataDir=E:\zookeeper3.5.5\data (windows下配置)
启动

cd /usr/local/kafka_2.12-2.4.0/bin

./zookeeper-server-start.sh ../config/zookeeper.properties

第三步:安装kafka

配置
  1. 打开config目录下的server.properties文件
  2. 修改log.dirs=E:\kafkalogs  (windows下配置)
启动
cd /usr/local/kafka_2.12-2.4.0/bin
./kafka-server-start.sh ../config/server.properties

三.编辑代码

新建client.go文件

package main

import (
    "fmt"

    "github.com/Shopify/sarama"
)

// 基于sarama第三方库开发的kafka client

func main() {
    config := sarama.NewConfig()
    config.Producer.RequiredAcks = sarama.WaitForAll          // 发送完数据需要leader和follow都确认
    config.Producer.Partitioner = sarama.NewRandomPartitioner // 新选出一个partition
    config.Producer.Return.Successes = true                   // 成功交付的消息将在success channel返回

    // 构造一个消息
    msg := &sarama.ProducerMessage{}
    msg.Topic = "web_log"
    msg.Value = sarama.StringEncoder("this is a test log11")
    // 连接kafka
    client, err := sarama.NewSyncProducer([]string{"127.0.0.1:9092"}, config)
    if err != nil {
        fmt.Println("producer closed, err:", err)
        return
    }
    fmt.Println("连接成功.")
    defer client.Close()
    // 发送消息
    pid, offset, err := client.SendMessage(msg)
    if err != nil {
        fmt.Println("send msg failed, err:", err)
        return
    }
    fmt.Printf("pid:%v offset:%v\n", pid, offset)
}

执行下面的命令:

export GO111MODULE=on
export GOPROXY=https://goproxy.cn
go mod init
go mod tidy
go build client.go
./client

查看kafka-logs/web_log-0日志文件夹里会在如下四个文件:

[email protected]:/tmp/kafka-logs/web_log-0$ ls
00000000000000000000.index  00000000000000000000.timeindex
00000000000000000000.log    leader-epoch-checkpoint

原文地址:https://www.cnblogs.com/haima/p/12235416.html

时间: 2024-08-07 11:46:31

LogAgen的工作流程的相关文章

GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流(转载)

最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮助. GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Git仓库 :git init ; -- 提交改变到缓存 :git commit -m 'desc

Struts2工作流程

Struts2是一个非常优秀的MVC框架,它主要通过StrutsPrepareAndExecuteFilter过滤器将Struts2集成到Web应用中的. 基本工作流程: 1.客户端提交一个HttpServletRequest请求(action或JSP页面): 2.请求经过一系列的过滤器(如ActionContextCleanUp,SiteMesh等): 3.Struts2的核心过滤器StrutsPrepareAndExecuteFilter被调用,并询问ActionMapper来决定这个请求是

Laravel 5系列教程二:路由,视图,控制器工作流程

免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel的神奇世界了,主要是讲解Laravel的Router,Views,Controllers的工作流程,目的也就是让大家明白Laravel在处理一个get请求的时候是如何工作的. 在开始之前,我们首先得将我们的服务器启动起来,如果你使用Laravel的artisan,你可以直接: php artisan

RT-thread finsh工作流程

finsh是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试.查看系统信息.在大部分嵌入式系统中,一般开发调试都使用硬件调试器和printf日志打印,在有些情况下,这两种方式并不是那么好用.比如对于RT-Thread这个多线程系统,我们想知道某个时刻系统中的线程运行状态.手动控制系统状态.如果有一个shell,就可以输入命令,直接相应的函数执行获得需要的信息,或者控制程序的行为.这无疑会十分方便. finsh支持两种模式: 1. C语言解释器模式, 为

[Servlet]Servlet的工作流程及注意事项

Servlet工作流程 利用Servlet完成的Web应用的实际工作流程是通过Tomcat服务器发布服务,客户端与服务器端之间的交互遵循Http协议完成的.具体工作流程如下: 客户端浏览器向服务器端发送请求. 服务器端由Tomcat服务器提供的Servlet容器解析接收到的请求. 通过Web应用程序的配置文件web.xml,解析到对应执行的Servlet. Servlet完成客户端发送的请求逻辑,并完成向客户端发送的响应内容. 由Tomcat服务器提供的Servlet容器向客户端浏览器进行响应.

Ajax的工作流程简述

提到Ajax相信我们都不会陌生,不管你是前端开发还是后台数据处理的程序员,ajax的作用就像现在生活中的手机一样,无论是作用还是流程都差不多,这里我们要进行ajax操作后台数据并显示在页面上的话,首先我们这里才用原生态的ajax去实现,第一步要做的就是首先我们得有一个ajax才行,紧接着还得清楚他的工作流程才行啊,下面我就简单谈谈ajax的工作流程.     v作为一个刚接触ajax的信任来说肯定会觉得很神奇,不知道一个小小的ajax竟然有这种强大的功效实现这样复杂的任务,其实不然,当我们除去包

图解EJB工作流程

学习EJB需要对JNDI和RMI方面知识有一定的了解. JNDI为EJB提供命名和目录服务,实现不同目录位置的Bean的唯一标识. RMI为EJB提供远程访问能力,实现Bean的远程调用功能 在介绍Bean的工作流程之前,先熟悉一下RMI的工作流程 RMI设计的目标:实现运行在不同JVM中Java对象的调用 客户端通过JNDI服务获取Bean对象的接口,称为桩(stub) 一般情况下Bean对象并不希望被直接操控,比如针对不同客户端暴露不同接口,所以在JVM2上也提供一个对外接口,称为骨架(sk

Struts2的工作流程

Struts2的工作流程 1.客户端浏览器初始化时发出HTTP请求 2.根据web.xml配置,上述请求被FilterDispatcher接收 3.根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton 4.Action调用业务逻辑组件处理业务逻辑 5.Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面 6.返回HTTP响应到客户端浏览器

1、SpringMVC的工作流程

1.简单的谈一下SpringMVC的工作流程? 流程 1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3.处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet. 4.DispatcherServlet调用HandlerAdapter处理器适配器 5.HandlerAdapter经过适配调用具体的处理器(Controller