EFK在linux下的安装和使用

什么是EFK?

Elasticsearch:一个分布式、高扩展、高实时的搜索与数据分析引擎。
Filebeat:轻量型日志采集器。
Kibana:是一款开源的数据分析和可视化平台,可以当做是Elasticsearch的可视化操作界面。
EFK可以替代ELK来使用,logstash跑在jvm上,资源消耗比较大,filebeat更轻量,占用资源更少。

下载安装

  • 下载地址如下:
    Elasticsearch:https://www.elastic.co/downloads/elasticsearch
    Filebeat:https://www.elastic.co/downloads/beats/filebeat
    Kibana:https://www.elastic.co/downloads/kibana
  • 安装(解压即安装)
tar -zxvf elasticsearch-6.7.0.tar.gz
tar -zxvf filebeat-6.7.0-linux-x86_64.tar.gz
tar -xzvf kibana-6.7.0-linux-x86_64.tar.gz

使用

1.项目配置
  • 在resources下的application.yml添加配置:
logging:
  config: classpath:logback.xml
  file: ad-sponsor.log
  • 在resources中添加 logback.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- appender 定义了写日志的组件, 有两个必须的属性: name 指定 appender 的名称 和 class 指定 appender 的类型, 即实现的功能 -->
  <!-- RollingFileAppender 的作用是滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时再将日志记录到其他文件 -->
  <appender name="system" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>./logs/qixingcxy-core.log</file>
    <!-- rollingPolicy 的作用是当发生滚动时, 定义 RollingFileAppender 的行为 -->
    <!-- TimeBasedRollingPolicy 是最常用的滚动策略, 它根据时间指定滚动策略, 既负责滚动也负责触发滚动 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>./logs/qixingcxy-core.%d{yyyy-MM-dd}.log</fileNamePattern>     <!-- 必要节点 -->
      <maxHistory>5</maxHistory>      <!-- 可选节点 -->
    </rollingPolicy>
    <!-- encoder 负责两件事情: 把日志信息转换为字节数组; 把字节数组写到输出流 -->
    <encoder>
      <pattern>[%d{yyyy-MM-dd HH:mm:ss:SSS}] %thread %level %logger{36} %L - %msg%n</pattern>
      <charset>UTF-8</charset>
    </encoder>
  </appender>

  <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>[%d{yyyy-MM-dd HH:mm:ss:SSS}] %thread %level %logger{36} %L - %msg%n</pattern>
      <charset>UTF-8</charset>
    </encoder>
  </appender>

  <!-- logger 是用来设置某一个包或者具体某一个类的日志打印级别, 以及指定的 appender -->
  <logger name="com.qixingcxy.core" level="info" additivity="false">
    <appender-ref ref="stdout"/>
    <appender-ref ref="system"/>
  </logger>

  <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="info"
          additivity="false">
    <appender-ref ref="stdout"/>
  </logger>

  <logger name="org.springframework.orm.jpa.JpaTransactionManager" level="debug"
          additivity="false">
    <appender-ref ref="stdout"/>
  </logger>

  <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="trace"
          additivity="false">
    <appender-ref ref="stdout"/>
  </logger>

  <root level="warn">
    <appender-ref ref="stdout"/>
  </root>
</configuration>
2.Filebeat配置
  • 打开filebeat文件夹下的filebeat.yml,配置Filebeat inputs
filebeat.inputs:
- type: log

  #true代表启用当前配置
  enabled: true

  # filebeat监听的日志文件,path是数组,可以配置多个目录下的文件,名字和logback.xml中要对应
  paths:
    - C:\studyspace\qixingcxy\logs\qixingcxy-core.log

  # 多行日志的配置,也就是将多行日志合并为一条日志的规则配置
  # 这个需要与logback.xml中定义的日志规则匹配 (^\[ 的意思为不以 [ 为开头的将合并为多行)
  multiline.pattern: ^\[

  # negate和match 的配置将 [ 后面的多行与最近的一个以 [ 开头的日志进行合并成为一行
  multiline.negate: false
  multiline.match: after
  
  # 不从头读取文件,而是从尾部读取,意思是读取filebeat启动之后的日志,启动之前的都被抛弃掉
  tail_files: true
  • 打开filebeat文件夹下的filebeat.yml,配置Elasticsearch template
# setup.template区域指定索引的模板,用来设置在ES中的映射
#模板的名称
setup.template.name: qixingcxy-core
#模板的模式
setup.template.pattern: qixingcxy-core-*
#Kibana索引的配置
setup.dashboards.index: qixingcxy-core-*
#描述字段的YAML文件路径(发送到 ES 的字段定义),使用Filebeat自带的
setup.template.fields: fields.yml

setup.template.settings:
  # 索引分区个数的定义
  index.number_of_shards: 3
  • 打开filebeat文件夹下的filebeat.yml,配置Elasticsearch output
output.elasticsearch:
  # ES 主机的地址,即使是集群也可以配置一个,建议全部配置
  hosts: ["localhost:9200"]
  # ES 数据索引的定义,也就是说将数据发送到哪个索引中去
  index: "qixing-core-%{+yyyy.MM.dd}"
  pipeline: "qixing-core-log"

启动

  • 启动 elasticsearch
cd elasticsearch-6.7.0
bin/elasticsearch
  • 启动 kibana
cd kibana-6.7.0-linux-x86_64
bin/kibana
  • 启动 filebeat
cd filebeat-6.7.0-linux-x86_64
#-c filebeat.yml 表示以filebeat.yml的配置来启动
./filebeat -e -c filebeat.yml

配置截取条件 配置

可以使用postman来配置
在这里插入图片描述

提交路径(提交方式为put):

127.0.0.1:9200/_ingest/pipeline/qixing-core-log

body内容

{
  "description" : "qixing-core-log",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": ["\\[%{TIMESTAMP_ISO8601:log_time}\\] %{NOTSPACE:thread} %{NOTSPACE:log_level} %{NOTSPACE:java_class} %{NOTSPACE:code_line} - %{GREEDYDATA:content}"]
      }
    },
    {
        "date": {
            "field": "log_time",
            "formats": ["yyyy-MM-dd HH:mm:ss:SSS"],
            "timezone": "Asia/Shanghai",
            "target_field": "@timestamp"
        }
    }
  ]
}

Filebeat.yml 配置 Elasticsearch output

output.elasticsearch:
  # 需要和_ingest/pipeline/qixing-core-log相对应
  pipeline: "qixing-core-log"
发布了74 篇原创文章 · 获赞 53 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/m0_37679452/article/details/103803844
今日推荐