将Flink日志数据使用LogStash 导入 Doris

Doris快速搭建

快速体验 Apache Doris - Apache Doris

从 Logstash 导入 Doris

腾讯云数据仓库 TCHouse-D 从 Logstash 导入 Doris-开发指南-文档中心-腾讯云

Logstash 导入 Doris的配置文件

# 将日志数据 “2024-05-08 18:35:56,094 INFO  org.apache.flink.runtime.taskexecutor.TaskManagerRunner      [] - --------------------------------------------------------------------------------”

通过grok使用正则表达式,将文本数据转换成结构化数据,再使用jdbc将数据存入到doris表中

input{
    file {
            # path => "/home/cloud/logstash-8.13.3/test.log" #随便找一个文本路径,也可以使用“*”进行模糊匹配
            path => "/app/tmn/middleware/flink/log/flink-tmn-taskexecutor-3-fccenter-2.log" #随便找一个文本路径,也可以使用“*”进行模糊匹配
            type => "log" #收集日志类型
            start_position => "beginning" #从文本起始位置开始收集
    }
}

filter{
	grok {
        match => { 
            "message" => "^(?<log_date>(%{YEAR}-%{MONTHNUM}-%{MONTHDAY}) (%{TIME})) (?<log_level>\w+)\s+(?<class_name>[^\s]+)\s+\[\] - (?<log_message>.+)$"
		}
    }
}
output {
    stdout {
        codec => rubydebug
    }
    jdbc {
        driver_jar_path => "/home/cloud/logstash-8.13.3/config/mysql-connector-java-8.0.28.jar"
        # Doris JDBC 连接字符串
        connection_string => "jdbc:mysql://127.0.0.1:9030/demo?user=admin&password=123456"
        # 目标表名
        statement => ["INSERT INTO log_data (log_date, log_level, class_name, log_message) VALUES (?, ?, ?, ?)", "%{log_date}", "%{log_level}", "%{class_name}", "%{log_message}"]
    }
}

补充

问题1:logstash 配置文件中start_position => "beginning" 是怎么做到只读一次全部文件数据,后续只读追加数据的?

        在Logstash的配置文件中,start_position => "beginning" 表示Logstash会从文件的起始位置开始读取数据。这意味着它会读取整个文件的内容,而不是仅仅从当前位置开始读取。

        一旦Logstash读取了整个文件的内容,后续的处理将会从文件的末尾开始。这样就实现了你所描述的只读取一次全部文件数据,然后只读取追加的数据。

问题2:start_position => "beginning"是怎么实现的,如果我想重新读取整个文件的内容怎么办?

        Logstash 使用了一个称为"sincedb"的机制来跟踪每个文件的读取位置。sincedb 是一个记录了每个文件读取状态的文件,它包含了文件路径、文件的inode号以及最后一次读取的位置等信息。这个机制允许 Logstash 在重新启动后恢复到正确的读取位置,并且避免重复读取已经处理过的数据。

        如果想重新读取整个文件的内容,可以通过删除 sincedb 文件的方式来实现。sincedb 文件通常位于 Logstash 的 data 目录下,默认是在 Logstash 安装目录下的 data 目录中。删除 sincedb 文件后,Logstash 将重新读取所有文件的起始位置,从而重新处理文件中的所有数据。(先关闭Logstash 再删除 sincedb 文件!)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值