filebeat(8.9.0)采集日志到logstash,由logstash发送的es

news2024/11/18 6:02:38

filebeat采集日志到logstash,由logstash发送的es

  • 下载并配置filebeat
    • 下载
    • 配置
    • logback.xml
  • logstash配置

下载并配置filebeat

下载

参考
filebeat下载示例

配置

filebeat.inputs:
- type: filestream
  enabled: true
  paths:
  	# 日志文件目录
    - D:\modellog\elkdemo\*\*.log
  parsers:
  # 多行日志合并(例如java的异常堆栈信息)
  - multiline:
      type: pattern
      # 匹配以[开头的
      pattern: '^\['
      negate: true
      match: after

# 自定义日志格式
processors:
- dissect:
    tokenizer: '[%{timestamp}] -%{parentTraceId} -%{traceId} -%{host} -%{port} -%{appName} -%{pid} -[%{level}] -[%{thread}] -%{class} -%{line} - %{message}'
    field: "message"

# 输出到logstash
output.logstash:
  enabled: true
  hosts: ["192.168.0.100:21069"]  

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

    <define name="hostAddress" class="top.mingempty.commons.definer.IPLogDefiner"/>
    <springProperty scope="context" name="appName" source="spring.application.name"/>
    <springProperty scope="context" name="port" source="server.port"/>

    <!--彩色日志格式以及包名输出缩进对齐-->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint}  %clr([${LOG_LEVEL_PATTERN:-%5p}]) %clr(${PID:- }){magenta} %clr(-){faint} %clr([%t]){faint} %clr(%logger){cyan} %clr(:){magenta} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <property name="FILE_LOG_PATTERN"
              value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] -${hostAddress} -${port} -${appName} -${PID:-} -[%-5level] -[%thread] -%logger -%-3L - %msg%n"/>


    <contextName>fanxlxs</contextName>

    <!--文件夹在当前项目磁盘根目录-->
    <property name="LOG_PATH" value="/modellog"/>
    <!--设置系统日志目录-->
    <property name="APPDIR" value="/filebeat"/>

    <!--  日志记录器,日期滚动记录
            ERROR 级别
     -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名,日期必须加,如果单天需要生成多个日志,则需要添加%i-->
            <FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--            &lt;!&ndash;历史日志文件保留天数,不包含当日日志,且需结合cleanHistoryOnStart字段使用&ndash;&gt;
                        &lt;!&ndash;可以按“文件数量、小时、天、月、年”等策略实现文件保留 &ndash;&gt;
                        <MaxHistory>3</MaxHistory>
                        <cleanHistoryOnStart>true</cleanHistoryOnStart>-->
            <!-- 单天单个日志最大size -->
            <maxFileSize>10MB</maxFileSize>
            <!--     &lt;!&ndash;仅针对当天的日志进行总size控制,日志名中的“i”保留最后数值 &ndash;&gt;
                 <totalSizeCap>10MB</totalSizeCap>-->
        </rollingPolicy>
        <!-- 追加方式记录日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件记录error级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 日志记录器,日期滚动记录
            WARN  级别
     -->
    <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名,日期必须加,如果单天需要生成多个日志,则需要添加%i-->
            <FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--            &lt;!&ndash;历史日志文件保留天数,不包含当日日志,且需结合cleanHistoryOnStart字段使用&ndash;&gt;
                        &lt;!&ndash;可以按“文件数量、小时、天、月、年”等策略实现文件保留 &ndash;&gt;
                        <MaxHistory>3</MaxHistory>
                        <cleanHistoryOnStart>true</cleanHistoryOnStart>-->
            <!-- 单天单个日志最大size -->
            <maxFileSize>10MB</maxFileSize>
            <!--     &lt;!&ndash;仅针对当天的日志进行总size控制,日志名中的“i”保留最后数值 &ndash;&gt;
                 <totalSizeCap>10MB</totalSizeCap>-->
        </rollingPolicy>
        <!-- 追加方式记录日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只记录warn级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 日志记录器,日期滚动记录
            INFO  级别
    -->
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名,日期必须加,如果单天需要生成多个日志,则需要添加%i-->
            <FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--            &lt;!&ndash;历史日志文件保留天数,不包含当日日志,且需结合cleanHistoryOnStart字段使用&ndash;&gt;
                        &lt;!&ndash;可以按“文件数量、小时、天、月、年”等策略实现文件保留 &ndash;&gt;
                        <MaxHistory>3</MaxHistory>
                        <cleanHistoryOnStart>true</cleanHistoryOnStart>-->
            <!-- 单天单个日志最大size -->
            <maxFileSize>10MB</maxFileSize>
            <!--     &lt;!&ndash;仅针对当天的日志进行总size控制,日志名中的“i”保留最后数值 &ndash;&gt;
                 <totalSizeCap>10MB</totalSizeCap>-->
        </rollingPolicy>
        <!-- 追加方式记录日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只记录info级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 日志记录器,日期滚动记录
            DEBUG  级别
    -->
    <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名,日期必须加,如果单天需要生成多个日志,则需要添加%i-->
            <FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--            &lt;!&ndash;历史日志文件保留天数,不包含当日日志,且需结合cleanHistoryOnStart字段使用&ndash;&gt;
                        &lt;!&ndash;可以按“文件数量、小时、天、月、年”等策略实现文件保留 &ndash;&gt;
                        <MaxHistory>3</MaxHistory>
                        <cleanHistoryOnStart>true</cleanHistoryOnStart>-->
            <!-- 单天单个日志最大size -->
            <maxFileSize>10MB</maxFileSize>
            <!--     &lt;!&ndash;仅针对当天的日志进行总size控制,日志名中的“i”保留最后数值 &ndash;&gt;
                 <totalSizeCap>10MB</totalSizeCap>-->
        </rollingPolicy>
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- ConsoleAppender 控制台输出日志 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--encoder 默认配置为PatternLayoutEncoder-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
    </appender>
    
    <!-- FrameworkServlet日志-->
    <logger name="org.springframework" level="WARN"/>

    <!-- nacos日志-->
    <logger name="com.alibaba.nacos" level="WARN"/>
    
    <!-- 项目日志-->
    <logger name="top.mingempty.metadata" level="INFO"/>

    <!-- 生产环境下,将此级别配置为适合的级别,以免日志文件太多或影响程序性能 -->
    <root level="INFO">
        <appender-ref ref="ERROR"/>
        <appender-ref ref="WARN"/>
        <appender-ref ref="INFO"/>
        <appender-ref ref="DEBUG"/>
        <!-- 生产环境将请stdout去掉 -->
        <appender-ref ref="STDOUT"/>
    </root>


</configuration>

logstash配置

input {
  beats  {
    port => 5044
  }
}

filter {
  grok {
    ## 指定日志输出格式(和logback对应上)
    match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] -%{IP:host} -%{NUMBER:port} -%{DATA:appName} -%{NUMBER:pid} -\[%{DATA:level}\] -\[%{DATA:thread}\] -%{DATA:class} -%{NUMBER:line} - %{GREEDYDATA:message}" }
  }
  
  mutate {
    remove_field => [ "[@timestamp]"]
    rename => {
        "[dissect][parentTraceId]" => "parentTraceId"
        "[dissect][traceId]" => "traceId"
        "[dissect][host]" => "host"
        "[dissect][port]" => "port"
        "[dissect][appName]" => "appName"
        "[dissect][pid]" => "pid"
        "[dissect][level]" => "level"
        "[dissect][thread]" => "thread"
        "[dissect][class]" => "class"
        "[dissect][line]" => "line"
        "[dissect][message]" => "message"
        "[dissect][timestamp]" => "timestamp"
        "[log][file][path]" => "path"
      }
  }

  date {
    match => [ "timestamp", "yyyy-MM-dd HH:mm:ss.SSS" ] # 这里指定日志中时间戳的格式
    target => "@timestamp" # 将解析后的时间戳存储到  字段
    timezone => "Asia/Shanghai" # 指定时区为中国标准时间
  }
  
  mutate {
    remove_field => [ "timestamp","event", "agent", "ecs", "input", "tags", "flags", "log", "dissect" ,"@version"]
  }
}


output {
  elasticsearch {
    hosts => ["https://172.27.0.2:9200"]
    index => "beats3-mingempty-top-%{+YYYY.MM.dd}"
    #这里开启了es的x-pack
    user => "帐号"
    password => "密码"
    ssl_enabled => true
    ssl_certificate_authorities => ["/usr/share/logstash/config/logstash.pem"]
  }
}

docker-compose部署elk(8.9.0)并开启ssl认证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1121059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消息队列 RocketMQ 消息重复消费问题(原因及解决)

目录 1.出现重复消费的原因 2.解决 2.1 数据库插入法 2.2 使用布隆过滤器 2.2.1 添加hutool的依赖 2.2.2 测试生产者 2.2.2 测试消费者 1.出现重复消费的原因 BROADCASTING(广播) 模式下&#xff0c;所有注册的消费者都会消费&#xff0c;而这些消费者通常是集群部署的…

hdlbits系列verilog解答(内部wire)-09

文章目录 wire线网类型介绍一、问题描述二、verilog源码三、仿真结果wire线网类型介绍 wire线网类型是verilog的一种数据类型,它是一种单向的物理连线。它可以是输入也可以是输出,它与reg寄存器数据类型不同,它不能存储数据,只能用于组合逻辑建模。常用于assign连续赋值语…

测试饱和了? 大数据测试就业薪资和前景究竟怎么样?

随着不断有转行人员及毕业的大学生进入IT行业&#xff0c;在很多外界人眼里&#xff0c;这个行业的“缺口”已满&#xff0c;人员趋于饱和&#xff0c;但事实真的这样吗&#xff1f;还真没有。只是最基础的岗位需求在慢慢变少了&#xff0c;但行业中比较深的细分岗位&#xff0…

一、软件工程概述+练习题

文章目录 软件工程复习一、 概述1.常见考点1.1 什么是软件&#xff1f;软件的特点 1.2 什么是软件危机&#xff1f;它的具体表现是什么&#xff1f;软件危机的概念软件危机的内容具体表现软件危机的原因消除软件危机的途径 2.软件工程的三要素软件工程的定义 3. 软件生存周期4.…

在软件测试行业这种情况下,凭什么他能拿25k?我却约面试都难?

在当今竞争激烈的软件测试行业中&#xff0c;近期的招聘市场确实面临一些挑战。大量的求职者争相涌入岗位&#xff0c;许多热衷于功能测试的人士甚至难以找到理想的工作机会。更不幸的是&#xff0c;连自动化测试和性能测试这些专业领域也受到了测试开发人员的竞争压力。然而&a…

HashMap遍历之EntrySet————小练习

public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("jack",650);hashMap.put("tom",1200);hashMap.put("smith",2900);System.out.println(hashMap);//将jack的工资更改为2600hashMap.put("jack",…

基于ElasticSearch+Vue实现简易搜索

基于ElasticSearchVue实现简易搜索 一、模拟数据 产品名称描述价格库存数量品牌名称智能手表智能手表&#xff0c;具有健康跟踪和通知功能。199.991000TechWatch4K智能电视4K分辨率智能电视&#xff0c;提供出色的画质。699.99500VisionTech无线耳机降噪无线耳机&#xff0c;…

《低代码指南》——维格云和Airtable的比较

Airtable​ 什么是Airtable​ Airtable 是一个任务管理应用程序,它合并了电子表格、数据存储和模板,以帮助组织构建他们的工作流程。 适用于哪些企业/组织/人群​ 根据 Airtable 网站,该工具被超过 200,000 个组织的团队使用。 维格表与Airtable相比如何​ Airtable作为…

【C语言】善于利用指针(三)

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C语言初步学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读&#xff1a;1. 函数指针1.1 什么使函数指针1.2 用函数指针变量调用函数 2. 返回指针值的函数3. 函数指针数组3.1 实…

asp.net社区医疗辅助诊断网站系统VS开发sqlserver数据库web结构c#编程

一、源码特点 asp.net社区医疗辅助诊断网站系统 是一套完善的web设计管理系统&#xff0c;系统采用mvc模式&#xff08;BLLDALENTITY&#xff09;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver200…

音乐制作软件 Ableton Live 11 Suite mac中文版功能介绍

Ableton Live 11 Suite mac是一款专业级别的音乐制作软件&#xff0c;它提供了多种音乐制作和编辑功能&#xff0c;可以帮助用户创建各种音乐作品。界面简单直观&#xff0c;可以方便地进行各种音乐制作操作。它提供了丰富的音乐制作工具和功能&#xff0c;如录音、采样、编曲、…

C语言实现模拟 strcmp 字符串比较函数,实现字符串大小的比较

完整代码&#xff1a; // 模拟 strcmp 字符串比较函数&#xff0c;实现字符串大小的比较 #include<stdio.h> //strcmp函数是两个字符串自左向右逐个字符相比&#xff08;按 ASCII 值大小相比较&#xff09;&#xff0c;直到出现不同的字符或遇 \0 为止&#xff0c;如果字…

常用Web安全扫描工具合集

漏洞扫描是一种安全检测行为,更是一类重要的网络安全技术,它能够有效提高网络的安全性,而且漏洞扫描属于主动的防范措施,可以很好地避免黑客攻击行为,做到防患于未然。那么好用的漏洞扫描工具有哪些? 1、AWVS Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名…

网站、小程序常见布局样式记录

文章目录 &#x1f380;前言&#xff1a;&#x1f415;网页样式展示小程序&#xff1a;《携程网》&#x1f380;持续更新... &#x1f380;前言&#xff1a; 本篇博客会收藏一些作者见到的网页、小程序页面&#xff0c;目的是用来寻找制作项目网页页面的灵感&#xff0c;有需要…

Java高级编程---Java多线程

Java多线程 线程概述进程线程比较 线程的创建继承Thread类创建多线程实现Runnable接口创建多线程两种实现多线程方式的对比 线程的生命周期及状态转换线程的调度线程的优先级线程休眠线程让步线程插队多线程同步死锁问题 线程概述 计算机能够同时完成多项任务&#xff0c;例如…

[MIT 6.1810]Lab7-networking

Lab7 networking https://pdos.csail.mit.edu/6.828/2023/labs/net.html 目录 Lab7 networking背景驱动程序E1000手册接收描述符发送描述符寄存器约定环形队列 代码实现发送接收坑 背景 为E1000实现驱动&#xff0c;补全kernel/e1000.c中的两个空函数。 为了达成目的&#xff…

【RuoYi移动端】HbuilderX实现底部弹窗示例

一、单选样式弹窗选择 1、View页面代码 <uni-popup ref"textBox" type"bottom"><view class"select_box"><view class"select_row" v-for"(item,index) in status" click"selectClick(item.id)"&g…

FPGA时序分析与约束(6)——综合的基础知识

在使用时序约束的设计过程中&#xff0c;综合&#xff08;synthesis&#xff09;是第一步。 一、综合的解释 在电子设计中&#xff0c;综合是指完成特定功能的门级网表的实现。除了特定功能&#xff0c;综合的过程可能还要满足某种其他要求&#xff0c;如功率、操作频率等。 有…

Fiber Golang:Golang中的强大Web框架

揭示Fiber在Go Web开发中的特点和优势 在不断发展的Web开发领域中&#xff0c;选择正确的框架可以极大地影响项目的效率和成功。介绍一下Fiber&#xff0c;这是一款令人印象深刻的Golang&#xff08;Go语言&#xff09;Web框架。以其飞快的性能和强大的特性而闻名&#xff0c;…

2023-mac brew安装python最新版本,遇见的问题和处理方式

#### 创建Python3.11.6符号链接我现在遇见这个问题了&#xff1a;python --version -bash: python: command not found 192:bin wangyang$ python3 --version Python 3.9.6 192:bin wangyang$ /usr/local/bin/python3 --version Python 3.11.6我要怎么做&#xff0c;我才可以直…