前言
许久之前,折腾了elk。但是今天再次处理时,居然不记得了。今天特自己再次处理。
elk我已经搭建过了,这里只是实现 docker 启动filebeat 增加项目日志。
过程
- 先确定日志文件路径。这里的项目是springboot项目,会输出2个日志文件
1个info.log 1个error.log
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="logs" />
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %msg %cyan(%logger{5}).%M\(%F:%L\)%n
</pattern>
</layout>
</appender>
<!--每天生成日志的类-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>
${LOG_HOME}/info.log
</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level> <!--过滤掉error的级别-->
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>30</MaxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<totalSizeCap>1GB</totalSizeCap>
<MaxFileSize>10MB</MaxFileSize>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>
${LOG_HOME}/error.log
</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level> <!--//打印error-->
</filter>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>30</MaxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<totalSizeCap>1GB</totalSizeCap>
<MaxFileSize>10MB</MaxFileSize>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>
-
确定索引的特征
给日志打上tags 标签。这样提交到logstash时可以针对性处理。 -
编写配置文件filebeat.yml
filebeat:
prospectors:
- input_type: log
paths: # 这里是容器内的path
- /logs/robot_iot_test/info.log
- /logs/robot_iot_test/error.log
tags: ["robot_iot_test"]
registry_file: /usr/share/filebeat/data/registry/registry # 这个文件记录日志读取的位置,如果容器重启,可以从记录的位置开始取日志
output:
logstash: # 我这里是输出到elasticsearch,也可以输出到logstash
hosts: ["xxxxxx:5044"]
- 启动filebeat的容器,需要引入配置文件和日志文件。
docker run -d --name=filebeat_robot_iot_test --user=root -e TZ="Asia/Shanghai" -v /home/wuwenfu/robot_iot_test/filebeat_config/filebeat.yml:/usr/share/filebeat/filebeat.yml -v /home/wuwenfu/robot_iot_test/logs:/logs/robot_iot_test docker.elastic.co/beats/filebeat:5.6.5 filebeat
- 修改log的格式和输出配置。增加该日志的处理。
if 'robot_iot_test' in [tags]{
elasticsearch {
hosts => ["http://172.16.176.26:9200"]
index => "robot_iot_test-%{+YYYY.MM.dd}"
}
}
- 最后在kibana中即可 以
robot_iot_test
找到日志记录。
网友评论