首页 > 其他分享 >企业级logstash简单使用(ELK)

企业级logstash简单使用(ELK)

时间:2023-07-05 15:01:00浏览次数:41  
标签:ELK index type 企业级 日志 logback logstash es

企业级logstash简单使用(ELK)

要使用logstash收集到Elasticsearch的方式,需确保logstash版本与es版本一致。

由于我也是刚刚研究使用,所以本文暂不会出现原理性的东西。

Logstash

介绍

Logstash是具有实时流水线能力的开源的数据收集引擎。Logstash可以动态统一不同来源的数据,并将数据标准化到您选择的目标输出。它提供了大量插件,可帮助我们解析,丰富,转换和缓冲任何类型的数据。

inputs(输入阶段)

会生成事件。包括:file、kafka、beats等

filters(过滤器阶段)

可以将过滤器和条件语句结合使用对事件进行处理。包括:grok、mutate等

outputs(输出阶段)

将事件数据发送到特定的目的地,完成了所以输出处理,改事件就完成了执行。如:elasticsearch、file等

使用方式

下载地址 :https://www.elastic.co/fr/downloads/logstash

下载之后随便解压到某个目录,会得到以下这些目录和文件,我们需要注意的就三个目录,bin、config、logs,下面一个一个说。

先来看config文件夹,进入后会有这几个文件:

查看logstash-sample.conf配置文件

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  #输入插件beats,轻量化
  beats { 
    #监听端口
    port => 5044
  }
}

output {
  #es连接地址及索引配置
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

下来稍微修改一下,我们启动试试。

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
  #添加file插件
  file {
    #测试环境中我们一般是nohup后台启动jar包,默认日志追加到nohup文件中,这里我们用插件读取这个日志发送到es上试试
    path => "/home/mm/mmm/nohup.out"
    mode => "read"
  }
}

output {
  elasticsearch {
    #配置自己的es连接,这里是使用es默认模板
    hosts => ["http://localhost:9200"]
    index => "ceshi"
    #user => "elastic"
    #password => "changeme"
  }
}

退回到bin目录下,启动

./logstash -f /自己路径下的配置文件/logstash/config/logstash-sample.conf

这样子就是启动成功了。

下面就是我们收集到的日志,大家可以看看默认都有什么字段。

     {        
        "_index" : "console-analysis",
        "_type" : "_doc",
        "_id" : "_DDNH4kBVvgVIOGHRiop",
        "_score" : 1.0,
        "_source" : {
          "port" : 57910,
          "thread_name" : "main",
          "host" : "172.17.0.5",
          "logger_name" : "com.alibaba.nacos.client.naming",
          "@version" : "1",
          "level_value" : 20000,
          "message" : "[BEAT] adding beat: BeatInfo{port=17007, ip='192.168.1.59', weight=1.0, serviceName='DEFAULT_GROUP@@amcp-analysis', cluster='DEFAULT', metadata={preserved.register.source=SPRING_CLOUD}, scheduled=false, period=5000, stopped=false} to beat map.",
          "level" : "INFO",
          "logHost" : "192.168.1.59:5044",
          "appname" : "analysis"
        }

Springboot集成logstash+elasticsearch

加入依赖

        <!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder -->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>7.1.1</version>
        </dependency>

配置

在resources目录下创建一个logback-spring.xml的xml文件。

如果是使用nacos来获取配置的话,文件名字不能是logback-spring.xml,因为会导致logback-spring.xml文件被加载两次,这样在logback-spring.xml文件中如果想读取nacos上的配置的话是拿不到的。

在yml或者properties文件中添加配置

logging:
 config: classpath:logback-nacos.xml

logstash:
 host: localhost:5044
logback-spring.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
	<!-- 获取配置中的值 -->
    <springProperty scope="context" name="logHost" source="logstash.host"/>

    <!-- 添加logstash连接配置 -->
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>${logHost}</destination> <!-- Logstash的主机和端口,可以配置多个 -->
        <!-- 其他属性 -->
        <connectionTimeout>5000</connectionTimeout>
        <reconnectionDelay>5000</reconnectionDelay>
        <encoder charset="UTF-8"
                 class="net.logstash.logback.encoder.LogstashEncoder">
            <!-- 自定义字段,这里我是用来区分收集的是哪个程序的日志,后面logstash配置我们可以看下它的作用 -->
            <customFields>{"appname":"analysis"}</customFields>
        </encoder>

    </appender>

    <!-- 控制台输出配置,不添加的话日志不会在控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}  %-5level --- [%thread] %logger{36} : %msg%n</pattern>
        </encoder>
    </appender>
	
    <!-- level设置收集日志级别,可以配置多个appender,这个配置文件中也可以直接添加filter过滤标签,这个大家自己尝试一下 -->
    <root level="info">
        <appender-ref ref="console" /> <!-- 添加控制台appender -->
        <appender-ref ref="logstash" />
    </root>

</configuration>

logstash配置

logstash-sample.conf配置文件
input {
  #配置监听端口,也就是destination
  tcp {
    mode => "server"
    host => "localhost"
    port => 5044
    codec => json_lines
  }
}

filter {
  #判断appname,在配置中声明一个变量,不同的appname赋予不同的值,这里其实就是根据我自定义的字段来给不同的es索引名称
  if [appname] == "analysis"{
    mutate {
      add_field => {
        "[@metadata][index]" => "console-analysis"
      }
    }
  }

  #判断日志级别,收集到的日志默认字段level会记录日志级别,这个时候我们可以根据需要对日志进行操作。下面这个操作是将日志级别,日志记录到自定义字段,以及将记录的时间进行转换记录到time字段,默认记录的时间是带时区的
  if [level] =~ /DEBUG/ {
    mutate {
      add_field => {
        "type" => "DEBUG"
        "details" => "%{message}"
      }
    }
    ruby {
      code => "
        event.set('time', event.timestamp.time.localtime.strftime('%Y-%m-%d %H:%M:%S'))
      "
    }
    mutate {
     remove_field => ["[@timestamp]"]
    }
  }
}

output {
 #这里判断message字段中如果不包含HiddenHorzOCR就记录,只是演示一下这里面也可以进行逻辑判断
 if !([message] =~ /HiddenHorzOCR/) {
   if [@metadata][index] {
     elasticsearch {
       hosts => ["http://192.168.1.59:9200"]
       #这个索引就是我们在filter中判断appname时赋的值
       index => "%{[@metadata][index]}"
       #指定es要使用的模板,也可以使用默认的
       template => "/home/collect.json"
       #模板名称
       template_name => "collect"
       #加载模板是否覆盖之前的模板
       template_overwrite => true
     }
   }
 }
}
es模板
{
  "index_patterns": ["console*"],
  "settings": {
    "number_of_shards": 5,
    "max_result_window": "500000000"
  },
  "mappings": {
    //自定义几个字段
    "properties": {
      "type": { "type": "keyword" },
      "details": { "type": "text" },
      "time": { 
                "type": "keyword" 
      }
    }
  }
}

所有配置添加完成之后,启动logstash和自己的应用程序,这个时候就可以上es或者kibana上查看创建出的索引以及收集到的日志。

这是指定模板后收集到的日志。

      {
        "_index" : "console-analysis",
        "_type" : "_doc",
        "_id" : "_jDNH4kBVvgVIOGHRiop",
        "_score" : 1.0,
        "_source" : {
          "port" : 57910,
          "details" : "Scanning for api listing references",
          "type" : "INFO",
          "time" : "2023-07-04 15:28:13",
          "thread_name" : "main",
          "host" : "172.17.0.5",
          "logger_name" : "springfox.documentation.spring.web.scanners.ApiListingReferenceScanner",
          "@version" : "1",
          "level_value" : 20000,
          "message" : "Scanning for api listing references",
          "level" : "INFO",
          "logHost" : "192.168.1.59:5044",
          "appname" : "analysis"
        }
      }

标签:ELK,index,type,企业级,日志,logback,logstash,es
From: https://www.cnblogs.com/ComfortableM/p/17528518.html

相关文章

  • 神器来袭!一个多类型数据源的企业级数据分析工具
    什么是JVS-BIJVS-BI是企业级的数据分析工具,主要用于各种类型数据接入、便捷性数据加工、数据可视化分析、报表统计结果生成、与各种分析结果应用等方面。JVS-BI可以轻松的接入各种数据来源,屏蔽各种数据源之间的使用的差异性,可轻松的完成数据清洗、加工、分析、展现,根据自己的需要,可......
  • 前端工程化实战-开发企业级CLI
    1.前言脚手架大家一定都不陌生,比如我们经常使用的vue-cli、create-react-app,它可以帮助我们快速的初始化一个项目,无需从零配置,极大的方便我们的开发。到这里你可能会疑惑,既然市面上有成熟的脚手架,为什么需要写一个属于自己的脚手架呢。因为公......
  • 中国大模型时间发展机会在企业级市场
    《构建“安全可信可控易用”的企业级AI大模型》尊敬的各位领导、各位嘉宾,大家下午好!由于时间有限,下面我分享一些对人工智能大模型的应用前景。前几个月大家都在讨论OpenAI和中国什么时候能够做出自己的大模型,这几个月大模型层出不穷,我看到很多投资人开始急了。前两天朱啸虎和付......
  • 企业级GitLab搭建
    企业级GitLab搭建一、简介1.GitLab概述是一个利用RubyonRails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。RubyonRails是一个可以使你开发、部署、维护web应用程序变得简单的框架。GitLab拥有与Github类似的功能,能够浏......
  • 部署Docker版本ELK
    部署Docker版本ELK目录部署Docker版本ELK1下载docker镜像2创建部署ELK的配置文件1下载docker镜像dokcerpullsebp/elk#修改系统的vm.max_map_countvi/etc/sysctl.conf#增加以下属性vm.max_map_count=262144#查看修改结果sysctl-p2创建部署ELK的配置文件......
  • Docker-Logstash安装
     下载Logstash7.17.3的docker镜像:dockerpulllogstash:7.17.3  修改Logstash的配置文件logstash.conf中output节点下的Elasticsearch连接地址为es:9200,配置文件地址:https://github.com/macrozheng/mall/blob/master/document/elk/logstash.confoutput{......
  • ELK 8.0.0 数据增删改查
    ELK8.0.0数据增删改查目录ELK8.0.0数据增删改查1创建文档数据2查找所创建的文档3更新文档中的数据4删除索引5match5.1match_all5.2match5.3match_phrase1创建文档数据PUTfcarey/_doc/1{"name":"fcarey","age":18,"city":"sz","tag&quo......
  • ELK8.8部署安装并配置xpark认证
    ELK8.8部署安装并配置xpark认证介绍  主要记录下filebeat+logstash+elasticsearch+kibana抽取过滤存储展示应用日志文件的方式;版本基于8.8,并开启xpack安全认证。由于从7.X开始就自带JDK,故这里也不展示环境配置等步骤。下载服务elasticsearch:https://artifacts.elastic.......
  • elk 入门 - 分析nginx日志 + json格式 + 有调试的意识 + elk7.2.0
    1.本次采用的一台主机,将所有的软件安装一台上进行测试工作。2.安装部署:https://blog.51cto.com/hwg1227/22999953.简单调试输出rubydebuginput{file{path=>"/usr/local/log_test/*/*/*.log"start_position=>"beginning"}}output{e......
  • linux-logstash
    logstash一、部署1.基于rpm方式安装logstash#下载软件包[[email protected]~]#ll-rw-r--r--1rootroot34965920Apr611:19filebeat-7.17.5-x86_64.rpm#安装logstash[[email protected]~]#rpm-ivhlogstash-7.17.5-x86_64.rpm#验证logstash版本[[email protected]......