系统日志的数据库采集
【目的】
1. 能够成功配置Filebeat
2. 能够成功配置Logstash
3. 能够成功存储数据至MySQL数据库
主要步骤:
- 启动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
- 编写日志配置文件(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.查看数据库