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;以便企业选择最适合的解决方案。固信电脑监控软件 可免费…

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等函数最简单的方法是驱动…

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

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

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…

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

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

Vulnhub靶场 | DC系列 - DC1

https://www.vulnhub.com/series/dc,199/ 环境搭建 靶机镜像下载地址&#xff1a;https://www.vulnhub.com/entry/dc-1,292/&#xff1b;需要将靶机和 kali 攻击机放在同一个局域网里&#xff1b;本实验kali 的 IP 地址&#xff1a;192.168.10.146。 渗透测试 1. 信息收集 …

CH16-DOM元素增删改

CH16-DOM元素增删改 本章目标 掌握如何使用DOM获取节点时使用的属性熟练使用DOM节点进行创建、添加、删除、替换 一、使用DOM获取节点时使用的属性 1.1 首尾子节点 firstChild&#xff1a;获取当前节点的首个子节点&#xff0c;注意&#xff1a;换行符、空格等也是节点。 …

【逆向】-异或-分组异或2

IDA查看源代码 src长度32&#xff0c;encrypt函数加密&#xff0c;工4个参数&#xff0c;_FFFC双击&#xff0c;可以看到是个长度为7的固定值FnTest! 加密函数将4个参数又重新命名&#xff0c;混淆视听&#xff0c;但是还是可以看到是嵌套循环&#xff0c;动态调试直接看结果可…

C++11中重要的新特性之 lambda表达式 Part two

序言 在上一篇文章中&#xff0c;我们主要介绍了 C11 中的新增的关键词&#xff0c;以及 范围for循环 这类语法糖的使用和背后的逻辑。在这篇文章中我们会继续介绍一个特别重要的新特性分别是 lambda表达式 。 1. lambda表达式 1.1 lambda的定义 C11 中的 lambda表达式 是一种…

Java基础之集合

集合和数组的类比 数组: 长度固定可以存基本数据类型和引用数据类型 集合: 长度可变只能存引用数据类型存储基本数据类型要把他转化为对应的包装类 ArrayList集合 ArrayList成员方法 添加元素 删除元素 索引删除 查询 遍历数组

Linux: Mysql环境安装

Mysql环境安装&#xff08;Centos&#xff09; 前言一、卸载多余环境1.1 卸载mariadb1.2 查看并卸载系统mysql和mariadb安装包 二、换取mysql官方yum源三、安装并启动mysql服务3.1 yum源加载3.2 安装yum源3.3 安装mysql服务3.3.1 安装指令3.3.2 GPG密钥问题解决方法3.3.3 查看是…

循环结构(一)——for语句【互三互三】

文章目录 &#x1f341; 引言 &#x1f341; 一、语句格式 &#x1f341; 二、语句执行过程 &#x1f341; 三、语句格式举例 &#x1f341;四、例题 &#x1f449;【例1】 &#x1f680;示例代码: &#x1f449;【例2】 【方法1】 &#x1f680;示例代码: 【方法2】…