filebeat日志的复习

前言

许久之前,折腾了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找到日志记录。

推荐阅读更多精彩内容