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.pswp.cn/web/44742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44742.shtml
英文地址,請注明出處:http://en.pswp.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…