系统日志的数据库采集

系统日志的数据库采集

【目的】

1. 能够成功配置Filebeat

2. 能够成功配置Logstash

3. 能够成功存储数据至MySQL数据库

主要步骤:

  1. 启动bootspring项目并创建数据库test,建立表web_crawler_indata_tbl

create table web_crawler_indata_tbl

(

    id          int auto_increment

        primary key,

    name        text null,

    update_date text null

);

springboot项目包见文章顶部demo.zip

  1. 编写日志配置文件(resources>logback-spring.xml)并重启项目

代码:

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->

    <property name="LOG_HOME" value="D:/logs" />

    <!-- 控制台输出 -->

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->

            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>

        </encoder>

    </appender>

    <!-- 按照每天生成日志文件 -->

    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!--日志文件输出的文件名-->

            <FileNamePattern>${LOG_HOME}/myWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>

            <!--日志文件保留天数-->

            <MaxHistory>30</MaxHistory>

        </rollingPolicy>

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->

            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>

        </encoder>

        <!--日志文件最大的大小-->

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

            <MaxFileSize>20MB</MaxFileSize>

        </triggeringPolicy>

    </appender>


 

    <!--myibatis log configure-->

    <logger name="com.apache.ibatis" level="DEBUG"/>

    <logger name="java.sql.Connection" level="DEBUG"/>

    <logger name="java.sql.Statement" level="DEBUG"/>

    <logger name="java.sql.PreparedStatement" level="DEBUG"/>

    <!-- 日志输出级别 -->

    <root level="INFO">

        <appender-ref ref="STDOUT" />

        <appender-ref ref="FILE" />

    </root>

</configuration>

日志默认于D盘生成

3.

(1)下载并解压filebeat-7.6.2-windows-x86_64与logstash-7.6.2

(2)修改filebeat-7.6.2-windows-x86_64>filebeat.yml文件

制作启动快捷方式并启动filebeat

双击run.bat以启动filebeat

4.安装logstash-output-jdbc,进入logstash目录下打开终端执行以下命令

./bin/logstash-plugin install logstash-output-jdbc

配置logstash。

将数据库连接jar包复制到logstash-7.6.2>lib目录下

打开”\logstash-7.6.2\config”,创建文件logstash-test2.conf,内容如下

注意修改实际内容

input {

  file {

    path => "D:/logs/myWeb.log.2024-06-13.log"

    start_position => "beginning"

  }

}

filter {

  grok {

    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] %{NOTSPACE:level} %{GREEDYDATA:message}" }

  }

  date {

    match => [ "timestamp", "ISO8601" ]

    target => "update_date" # 将解析出的日期时间值保存到update_date字段中

  }

  mutate {

    gsub => [ "message", "\n", "" ] # 去除消息内容中的换行符

    add_field => { "name" => "%{level}: %{message}" } # 添加name字段,值为级别和消息内容的组合

  }

}

output {

stdout { codec => rubydebug }

jdbc {

driver_jar_path => "D:/ServerApps/logstash-7.6.2/lib/mysql-connector-java-8.0.25.jar"

driver_class => "com.mysql.cj.jdbc.Driver"

connection_string => "jdbc:mysql://localhost:3306/test?user=root&password=123456"

statement => [

"INSERT INTO web_crawler_indata_tbl (name,update_date) VALUES(?,?)",

"%{name}",

"%{update_date}"

]

}

}

5.在“\logstash-7.6.2\bin”目录下运行命令

.\logstash -f ..\config\logstash-test2.conf

6.查看数据库

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值