win10 docker-compose搭建ELK日志收集

elk的威名大家都知道,以前前司有专门的人维护,现在换了环境,实在不想上服务器看,所以就摸索下自己搭建,由于现场服务器是需要类似向日葵那样连接,我还是把日志弄回来,自己本地filebeat上传到es中

配置文件

没啥好说的,就是volume 需要根据自己的环境调整。这里的 ". "相当于你的docker-compose.yml文件所在的目录层级!

  • docker-compose
version: '3.2'services:elasticsearch:image: elasticsearch:7.17.4volumes:- ./es/plugins:/usr/share/elasticsearch/plugins #插件文件挂载- ./es/data:/usr/share/elasticsearch/data #数据文件挂载ports:- '9200:9200'- '9300:9300'container_name: elasticsearchrestart: alwaysenvironment:- 'cluster.name=elasticsearch' #设置集群名称为elasticsearch- 'discovery.type=single-node' #以单一节点模式启动- 'ES_JAVA_OPTS=-Xms1024m -Xmx1024m' #设置使用jvm内存大小networks:- elklogstash:image: logstash:7.17.4container_name: logstashrestart: alwaysvolumes:- ./logstash/my-logstash.conf:/usr/share/logstash/config/my-logstash.conf- ./logstash/logs:/var/logs/demoports:- '5044:5044/tcp'- '50000:50000/tcp'- '50000:50000/udp'- '9600:9600'environment:LS_JAVA_OPTS: -Xms1024m -Xmx1024mTZ: Asia/ShanghaiMONITORING_ENABLED: falseentrypoint:- logstash- -f- /usr/share/logstash/config/my-logstash.conf  links:- elasticsearch:es #可以用es这个域名访问elasticsearch服务networks:- elkdepends_on:- elasticsearchkibana:image: kibana:7.17.4container_name: kibanarestart: alwaysvolumes:- ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.ymlports:- '5601:5601'links:- elasticsearch:es #可以用es这个域名访问elasticsearch服务environment:- ELASTICSEARCH_URL=http://elasticsearch:9200 #设置访问elasticsearch的地址- 'elasticsearch.hosts=http://es:9200' #设置访问elasticsearch的地址- I18N_LOCALE=zh-CNnetworks:- elkdepends_on:- elasticsearchfilebeat:user: rootimage: elastic/filebeat:7.17.4container_name: filebeatrestart: alwaysvolumes:# 将宿主机目录挂载到容器中,这个目录就是我真正放 从服务器上下载spring-boot日志的地方- ./filebeat/logs/elk:/var/logs# 指定配置文件- ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml- ./filebeat/logs:/usr/share/filebeat/logs- ./filebeat/data:/usr/share/filebeat/datalinks:- logstash:logstashcommand: ["--strict.perms=false"]networks:- elk  depends_on:- logstash          
networks:elk:name: elkdriver:bridge
  • logstash 配置
# beats传入的端口,默认5044
input {beats {port => 5044}
}
filter {grok {pattern_definitions => { "MyTimestamp" => "(\d\d){1,2}-(?:0?[1-9]|1[0-2])-(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])\s+(2[0123]|[01]?[0-9])(:[0-5][0-9])((:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)\.\d{3}" }match => { "message" => "(?m)%{MyTimestamp:log_create_time}\s+\[%{GREEDYDATA:thread_name}\]\s+%{LOGLEVEL:log-level}\s+%{JAVACLASS:java-class}\s+-%{JAVALOGMESSAGE:message}" }overwrite => ["message"]}  date {match => [ "log_create_time","yyyy-MM-dd HH:mm:ss.SSS"]target => "@timestamp"}if "_grokparsefailure" in [tags] {drop { }}
}
# 输出日志的方式
output { 
# 按照日志标签对日志进行分类处理,日志标签后续会在filebeat中定义elasticsearch {hosts => ["http://es:9200"]index => "demo"}# 这部分主要是用于本地调试的,prd可以注释掉
#	stdout{#       codec=> rubydebug#  }
}
  • filebeat配置文静
# 从日志文件输入日志
filebeat.inputs:
- type: filestreamid: my-filestream-id enabled: trueprospector.scanner.check_interval : 15paths:- /var/logs/*.log# 定义日志标签,注意当order服务时将该标签改为order-logparsers:- multiline:type: patternpattern: '^(\d\d){1,2}'negate: truematch: after  setup.template.settings:
# 设置主分片数index.number_of_shards: 1
# 因为测试环境只有一个es节点,所以将副本分片设置为0,否则集群会报黄index.number_of_replicas: 0
# 输出到logstash
output.logstash:
# logstash所在服务器的ip和端口hosts: ["logstash:5044"]
# output.console:
#     pretty: true
#     enable: true  
# 默认配置,不做改动
processors:- add_host_metadata:when.not.contains.tags: forwarded- add_cloud_metadata: ~- add_docker_metadata: ~- add_kubernetes_metadata: ~

遇到的问题

启动filebeat 遇到的问题请添加图片描述

查了下 需要 command: [“–strict.perms=false”] 加上这段,貌似filebeat容器就不会有权限问题了

java异常的多行处理

这个搞了好长时间,文档上说如果你用了fileBeat 那么就在fileBeat 用 multiline插件处理,而不是在logstash处理

Logstash 中对于message 匹配处理

这个也花了不少时间,首先日志一开始还是GBK的导致日志灌入es 乱码,所以我这里是调整logback的输出格式 ,指定charset 为 UTF8

 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder>
<!--            <pattern>${FILE_LOG_PATTERN}</pattern>--><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n</pattern><charset>UTF-8</charset></encoder><file>${LOG_PATH}/spring-boot-plus.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/spring-boot-plus-%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxFileSize>${MAX_FILE_SIZE}</maxFileSize><maxHistory>${MAX_HISTORY}</maxHistory></rollingPolicy></appender>

注意你的logstash message处理的格式正是 这里指定的 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n 这个格式!!!

如果你有特殊的 格式要处理,可以参考 logstash 官方维护的pattern 仓库

这里是引用 logstash 官方维护的pattern 仓库

如果有自定义的格式,比如我这里的时间,折腾我好久,要去kibana debugger 来自己调试
在这里插入图片描述

  • 如何多次触发filebeat 将日志采集灌入,只需要手动删除filebeat下面的registry 目录即可
    在这里插入图片描述

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

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

相关文章

ESP32和ESP8266的WIFI的136个问题与答案

ESP32和ESP8266的WIFI的136个问题与答案 ESP32和ESP8266 WIFI相关问题与答案&#xff0c;具有一定的参考价值。ESP32-S3模块 1. ESP32 和 ESP8266 是否支持中文 SSID&#xff1f; ESP32 和 ESP8266 均支持中文 SSID&#xff0c;但需要使用相应的库和设置。需要注意的是&#…

自定义函数---随机数系列函数

大家有没有发现平常在写随机数的时候&#xff0c;需要引入很多的头文件&#xff0c;然后还需要用一些复杂的函数&#xff0c;大家可能不太习惯&#xff0c;于是我就制作了一个头文件 // random_number.h #ifndef RANDOM_NUMBER_H // 预处理指令&#xff0c;防止头文件被重复包含…

六款领先的电脑监控软件系统(哪些电脑软件可以监控电脑)

在当今信息时代&#xff0c;企业对数据安全和员工生产力的关注度越来越高。电脑监控软件系统成为企业管理的重要工具&#xff0c;帮助企业确保信息安全、提高工作效率。本文将介绍几款领先的电脑监控软件系统&#xff0c;以便企业选择最适合的解决方案。固信电脑监控软件 可免费…

如何在SQLServer中更改端口

在SQL Server中更改端口通常涉及SQL Server配置管理器的使用&#xff0c;以下是一个详细的步骤指南&#xff1a; 一、打开SQL Server配置管理器 通过开始菜单&#xff1a;点击“开始”菜单&#xff0c;搜索“SQL Server配置管理器”并打开它。通过运行窗口&#xff1a;按Win …

log4j2的日志框架(详细,springboot和异步日志的实现)

目录 log4j2的介绍 Log4j2的性能 SpringBoot中的使用Log4j2 log4j2的进阶--异步日志 AsyncAppender方式 AsyncLogger方式 log4j2的介绍 Apache Log4j 2是对Log4j的升级版&#xff0c;参考了logback的一些优秀的设计&#xff0c;并且修复了一些问题&#xff0c;因此带 来…

Go-知识测试-测试参数

Go-知识测试-测试参数 1. -args2. -json3. -o4. -bench5. -benchtime6. -cpu7. -count8. -failfast9. -list10. -parallel11. -run12. -timeout13. -v14 -benchmem 1. -args 指示go test 把-args 后面的参数带到测试中去。具体的测试函数会根据此参数来控制测试流程。 -args后…

主机安全-进程、命令攻击与检测

目录 概述反弹shell原理nc/dev/xxx反弹shell下载不落地反弹Shell各种语言反弹shell linux提权sudosuid提权mysql提权 Dnslog参考 概述 本文更新通过在主机&#xff08;不含容器&#xff09;上直接执行命令或启动进程来攻击的场景。检测方面以字节跳动的开源HIDS elkeid举例。每…

磁感应强度检测模块使用教程

目录 一、磁感应强度检测模块(AT 协议版本、Modbus 协议版本)1、参数2、报警引脚 二、AT版本1、接线说明2、AT 指令 三、Modbus 版本1、接线说明2、Modbus 指令格式3、Modbus 指令 一、磁感应强度检测模块(AT 协议版本、Modbus 协议版本) 图1 正面 图2 背面 AT 协议版本和 Modb…

Letter Exchange

这道题目看官方题解就好了&#xff0c;这个转换图论挺显然的 证明一下为什么最后一定是 显然练完贬值后图只能长成这个样子 在消掉长度为\(2\)的环后&#xff0c;如果说图没边了&#xff0c; 那么显然就不用交换了&#xff0c;否则的话我们任取一条边 那么对于\(2\)号点来说&am…

韦东山嵌入式linux系列-驱动进化之路:总线设备驱动模型

1 驱动编写的 3 种方法 以 LED 驱动为例 1.1 传统写法 使用哪个引脚&#xff0c;怎么操作引脚&#xff0c;都写死在代码中。 最简单&#xff0c;不考虑扩展性&#xff0c;可以快速实现功能。 修改引脚时&#xff0c;需要重新编译。 应用程序调用open等函数最简单的方法是驱动…

(深度估计学习)Depth Anything V2 复现

Depth Anything V2 复现 一、配置环境二、准备数据1. 权重文件2. 训练数据 三、Test四、Train 代码&#xff1a;https://github.com/DepthAnything/Depth-Anything-V2 一、配置环境 在本机电脑win跑之后依旧爆显存&#xff0c;放到服务器跑&#xff1a;Ubuntu22.04&#xff0c…

使用Zabbix进行服务监控:构建高效稳定的IT服务管理平台

使用Zabbix进行服务监控&#xff1a;构建高效稳定的IT服务管理平台 在当今的数字化时代&#xff0c;IT服务管理&#xff08;ITSM&#xff09;对于确保企业IT系统的稳定性和性能至关重要。服务监控是ITSM的重要组成部分&#xff0c;可以帮助企业实时了解IT系统的运行状况&#…

微调Qwen2大语言模型加入领域知识

目录 试用Qwen2做推理安装LLaMA-Factory使用自有数据集微调Qwen2验证微调效果 试用Qwen2做推理 参考&#xff1a;https://qwen.readthedocs.io/en/latest/getting_started/quickstart.html from transformers import AutoModelForCausalLM, AutoTokenizer device "cuda…

极速构建的艺术:Kylin中Cube的并行构建实践

极速构建的艺术&#xff1a;Kylin中Cube的并行构建实践 引言 Apache Kylin是一款开源的分布式分析引擎&#xff0c;专为处理大规模数据集的即时查询而设计。Kylin通过构建数据立方体&#xff08;Cube&#xff09;来优化查询性能。随着数据量的不断增长&#xff0c;Cube的构建…

9.6 栅格图层符号化唯一值着色渲染

文章目录 前言多波段彩色渲染唯一值着色QGis设置为唯一值着色二次开发代码实现唯一值着色 总结 前言 介绍栅格图层数据渲染之唯一值着色渲染说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 多波段彩色渲染唯一值着色 以“with_color_table.tif”数据为例…

硅谷甄选4(项目主体)

1.路由配置 1.1路由组件的雏形 src\views\home\index.vue&#xff08;以home组件为例&#xff09; 安装插件&#xff1a; 1.2路由配置 1.2.1路由index文件 src\router\index.ts //通过vue-router插件实现模板路由配置 import { createRouter, createWebHashHistory } fro…

B站学习Java路线

Java 基础 【零基础 快速学Java】韩顺平 零基础30天学会Java JVM 尚硅谷宋红康JVM全套教程&#xff08;详解java虚拟机&#xff09; Java 并发 JUC

react-router实现路由拦截,useLocation,useNavigate钩子

路由拦截 react-router中没有直接给出拦截路由的方法&#xff0c;需要手动的去监听路由的变化来拦截路由 路由拦截的要点&#xff1a; 能够识别出目标路由和原始路由&#xff08;区分跳转前和跳转后&#xff09;能够在跳转时&#xff08;跳转前或者跳转后&#xff09;执行一些…

Python redis获取的结果是字节不是字符串

Python redis获取的结果是字节不是字符串 pool redis.ConnectionPool(hostlocalhost,port6379, passwordREDIS_PWD, decode_responsesTrue)需要指明给结果解码decode_responsesTrue才能返回字符串

图论基础概念(详细讲解)

今天&#xff0c;我们讲解一下图论的概念&#xff0c;首先我们知道图是一个什么东西。 图你可以理解成一个网络系统&#xff0c;两个节点之间可能会有边&#xff0c;边链接两个节点&#xff0c;可能是有向&#xff08;就比如说a只能往b,或者b只能往c)&#xff0c;可能是无向&a…