ubuntu 22.04 安裝部署logstash 7.10.0詳細教程

安裝部署logstash 7.10.0詳細教程

  • 一、下載并安裝
  • 二、新建配置文件
  • 三、賦權文件權限
  • 四、檢測文件grok語法是否異常
  • 五、啟動服務
  • 六、安裝啟動常見問題

【背景】

  1. 整個elk安裝是基于ubuntu 22.04和jdk 11環境。
  2. logstash采用 *.deb方式安裝,需要服務器能聯網。
  3. ubuntu 22.04 安裝部署elk(elasticsearch/logstash/kibana) 7.10.0詳細教程

一、下載并安裝

# 下載安裝包命令
sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0-amd64.deb
sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0-amd64.deb.sha512
# 開始安裝
shasum -a 512 -c logstash-7.10.0-amd64.deb.sha512
# 校驗成功出現 logstash-7.10.0-amd64.deb: OK
sudo dpkg -i logstash-7.10.0-amd64.deb

二、新建配置文件

命令:sudo vim /etc/logstash/conf.d/java_service_logs.conf

# java_service_logs.conf 內容詳情如下
input {file {# 要監控的日志文件路徑(支持通配符,匹配兩個目錄下的所有.log文件)path => ["/data/logs/java-admin/*.log","/data/logs/java-api/*.log"]# 日志讀取起始位置:# - beginning:從文件開頭開始讀取(適合首次采集)# - end:從文件末尾開始讀取(默認值,只采集新增內容)start_position => "beginning"# 自定義 sincedb 文件路徑(記錄文件讀取進度,避免重復采集)# 默認路徑在用戶家目錄,這里顯式指定到 Logstash 數據目錄sincedb_path => "/usr/share/logstash/data/java_service_logs_sincedb"# 忽略 15 天前修改的文件(自動清理舊日志文件)ignore_older => "15d"  # ===== 多行日志合并配置 =====codec => multiline {# 正則匹配行首的時間戳格式(示例:[2023-10-01T12:34:56,789])pattern => "^\[%{TIMESTAMP_ISO8601}\]"# 匹配邏輯取反:當行不匹配時間戳模式時觸發合并negate => true# 合并方向:將不匹配的行合并到前一行(適合 Java 異常堆棧等場景)what => "previous"# 最大合并行數限制(防止單條日志過大)max_lines => 500     # 自動刷新間隔(秒):超過該時間未匹配到新行則強制提交當前合并結果auto_flush_interval => 3     }# ===== 以下為可選調試參數(當前被注釋) =====# sincedb_path => "/dev/null"  # 測試時禁用 sincedb(每次重新讀取全部內容)# ignore_older => 0            # 不忽略舊文件(需配合 start_position 使用)# stat_interval => 10          # 文件狀態檢查間隔(秒,默認1s)# discover_interval => 60      # 新文件發現間隔(秒,默認15s)}
}filter {# ===== 日志結構化解析 =====grok {match => {# 定義兩種匹配模式(支持含/不含堆棧跟蹤的日志)"message" => [# 模式1:包含堆棧跟蹤的日志(如異常日志)"\[%{TIMESTAMP_ISO8601:log_timestamp}\]\s+\[%{DATA:log_thread}\]\s+\[%{LOGLEVEL:log_level}\]\s+%{DATA:log_class}\s+-\s+%{GREEDYDATA:log_message}\n%{GREEDYDATA:stack_trace}",# 模式2:普通日志(無堆棧跟蹤)"\[%{TIMESTAMP_ISO8601:log_timestamp}\]\s+\[%{DATA:log_thread}\]\s+\[%{LOGLEVEL:log_level}\]\s+%{DATA:log_class}\s+-\s+%{GREEDYDATA:log_message}"]}# 用解析后的結構化字段覆蓋原始 message 字段overwrite => ["message"]}# ===== 時間戳處理 =====date {# 將 log_timestamp 字段轉換為 Logstash 時間戳(@timestamp)match => ["log_timestamp", "yyyy-MM-dd HH:mm:ss.SSS"]# 指定轉換后的目標字段(默認會覆蓋 @timestamp)target => "@timestamp"# 時區配置:將原始時間轉換為印度時區(GMT+05:30)# 示例:原始時間 2025-06-01 18:30:00 → 轉換后 @timestamp 為 2025-06-01 13:00:00(UTC時間)timezone => "Asia/Kolkata" }# ===== 堆棧跟蹤處理 =====# 僅當存在 stack_trace 字段時執行if [stack_trace] {mutate {# 將堆棧跟蹤中的換行符 \n 替換為轉義字符 \\n# 避免 Elasticsearch 存儲時丟失換行格式gsub => ["stack_trace", "\n", "\\n"]}}
}output {# ===== Elasticsearch 輸出 =====elasticsearch {# ES 服務器地址(HTTP 協議)hosts => ["http://localhost:9200"]# 索引命名規則:按日期滾動(java_service_logs-2025.04.26)index => "java_service_logs-%{+YYYY.MM.dd}"# 認證信息(Basic Auth)user => "elastic"password => "密碼"}# ===== 調試輸出(注釋狀態)=====# stdout { codec => rubydebug }  # 以 Ruby 格式輸出到控制臺(開發調試用)
}

三、賦權文件權限

# 因新建文件權限可能是root賬號的,所以需要授權
sudo chown -R logstash:logstash /etc/logstash/conf.d/*.conf

四、檢測文件grok語法是否異常

# 啟動前檢查下文件中是否有語法錯誤,能更快排錯
sudo /usr/share/logstash/bin/logstash -t -f /elc/logstash/conf.d/java_service_logs.conf

在這里插入圖片描述

五、啟動服務

sudo systemctl daemon-reload
sudo systemctl start logstash
sudo systemctl stop logstash
sudo systemctl restart logstash
sudo systemctl status logstash

在這里插入圖片描述

六、安裝啟動常見問題

(1) 查看日志 sudo tail -100f /var/log/logstash/logstash-plain.log
(2) 對/etc/logstash/conf.d中文件沒有授權,如上授權
sudo chown -R logstash:logstash /etc/logstash
(3) java_service_logs.conf的語法很容易錯誤,其次就是某些配置項與其版本不匹配,可以啟動前測試下:
sudo /usr/share/logstash/bin/logstash -t -f java_service_logs.conf
(4) 對于logstash排錯,可以先將logstash.yml 日志級別設置為 debug,便于排錯
(5) 對于logstash不能收集日志到es,可以通過 stdout { codec => rubydebug } 將輸出結果先打印出來,不要直接輸入到es中。
還有對于input模塊,ignore_older => 0 該參數慎用,可能讀取不到。可以修改為 ignore_older => “15d”, 表示從當前15天到當前內容。
(6) 還可以利用打印到控制臺去測試grok匹配的數據
sudo /usr/share/logstash/bin/logstash -e ‘input { stdin { } } filter { grok { match => { “message” => “[%{TIMESTAMP_ISO8601:log_timestamp}] [%{DATA:log_thread}] [%{LOGLEVEL:log_level}] %{DATA:log_class} - %{GREEDYDATA:log_message}” } } } output { stdout { codec => rubydebug } }’

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87623.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM對象創建與內存分配機制深度剖析

對象創建的主要流程 類加載檢查 在創建對象之前,JVM 首先會檢查該類是否已經加載、解析并初始化: 如果沒有,則會通過類加載機制加載類元信息(Class Metadata)到方法區。 這個過程包括:加載(load…

Navicat 技術指引 | TiDB 的 AI 查詢交互功能

目前,Navicat 兩款工具支持對 TiDB 數據庫的管理開發功能:一款是旗艦款 Navicat Premium,另一款是其輕量化功能的 Navicat Premium Lite(官方輕量級免費版)。Navicat 自版本 17.1 開始支持 TiDB 7。它支持的系統有 Win…

以list為輸入條件,查詢數據庫表,java中的mapper層和mybatis層應該怎么寫?

根據一個 List 中的兩個字段 rangeCode 和 unitcd,查詢數據庫表 model_engineering_spatial_unit。這個需求在 Java MyBatis 項目中非常常見,下面我將為你詳細寫出 Mapper 接口(Java) 和 MyBatis XML 映射文件 的寫法。 ? 前提…

pyspark 創建DataFrame

from pyspark.sql import SparkSession from pyspark.sql import StructType, StructField, IntegerType,StringType spark SparkSession.builder.appName(test).getOrCreate() 1、 從列表中創建DataFrame data [(1,"alice"),(2,Blob),(3,Charlie)] columns [&qu…

Vim:從入門到進階的高效文本編輯器之旅

目錄 一、Vim簡介 二、Vim的基礎操作 2.1 進入和退出Vim 2.2 Vim的三種模式 2.3 基礎移動 三、Vim的高效編輯技巧 3.1 文本編輯 3.2 文本刪除與修改 3.3 復制與粘貼 四、Vim的進階使用 4.1 搜索與替換 4.2 寄存器與宏 4.3 插件與配置 五、結語 在編程界&#xff0…

Docker基礎理論與阿里云Linux服務器安裝指南

文章目錄 一、Docker核心概念二、阿里云環境準備三、Docker安裝與配置四、核心容器部署示例五、開發環境容器化六、運維管理技巧七、安全加固措施 一、Docker核心概念 容器化本質: 輕量級虛擬化技術,共享主機內核進程級隔離(cgroups/namespac…

c#使用筆記之try catch和throw

一、try catch 一種報錯的捕捉機制,try塊里運行的代碼出現錯誤的時候就會去執行catch塊所以一般catch塊里都是把錯誤打印出來或者保存到log日志里; 1.1、具體使用 catch可以用()來選擇捕捉什么類型的錯誤,一般用Exc…

(新手友好)MySQL學習筆記(9):索引(常見索引類型,查找結構的發展(二分查找法,二叉搜索樹,平衡二叉樹,B樹,B+樹))

目錄 索引 常見索引類型 B樹 二分查找法 二叉搜索樹和平衡二叉樹 B樹和B樹 索引 index,是存儲引擎用于快速找到數據的一種數據結構。 MySQL默認使用InnoDB存儲引擎,該存儲引擎是最重要,使用最廣泛的,除非有非常特別的原因需要使用…

進程間通信1(匿名管道)Linux

1 進程間通信的必要性 首先要明確進程間是相互獨立的(獨享一份虛擬地址空間,頁表,資源),那怎么樣才能使得兩個進程間實現資源的發送?所以,兩個進程一定需要看到同一份資源,并且?個…

CAN2.0、DoIP、CAN-FD汽車協議詳解與應用

一、CAN2.0 協議詳解與應用示例 1. 技術原理與特性 協議架構:基于 ISO 11898 標準,采用載波監聽多路訪問 / 沖突檢測(CSMA/CD)機制,支持 11 位(CAN2.0A)或 29 位(CAN2.0B&#xff…

使用nvm管理npm和pnpm

1.使用nvm管理npm // 查看nvm版本 nvm -v // 查看可安裝的 node 版本 nvm ls-remote // 安裝指定 node 版本 nvm install 24.0.0 // 查看當前已安裝的 node 版本及當前使用的版本 nvm list // 使用某個版本 node nvm use 24.0.0 // 卸載指定 node 版本 nvm uninstall 16.20.1…

YOLO11+QT6+Opencv+C++訓練加載模型全過程講解

實現效果: Yolov11環境搭建(搭建好的可以直接跳過) 最好使用Anconda進行包管理,安裝可參考【文章】。下面簡單過一下如何快速部署環境。如果搭建過或可以參考其他文章可以跳過Yolo11環境搭建這一章節。總體來說Yolov11環境搭建越…

Python 腳本,用于將 PDF 文件高質量地轉換為 PNG 圖像

import os import fitz # PyMuPDF from PIL import Image import argparse import logging from tqdm import tqdm# 配置日志 logging.basicConfig(levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s) logger logging.getLogger(PDF2PNG)def convert_pdf_…

【CUDA GPU 支持安裝全攻略】PyTorch 深度學習開發者指南

PyTorch 的 CUDA GPU 支持 安裝五條鐵律(最新版 2025 修訂)(適用于所有用戶)-CSDN博客 是否需要預先安裝 CUDA Toolkit?——按使用場景分級推薦及進階說明-CSDN博客 “100% 成功的 PyTorch CUDA GPU 支持” 安裝攻略…

Cyberith 運動模擬器Virtualizer2:提升虛擬現實沉浸體驗

奧地利Cyberith公司是一家專注于虛擬現實(VR)互動解決方案的創新型科技企業,以其研發的Virtualizer虛擬現實步態模擬設備而聞名。該公司的核心技術體現在其設計和制造的全方位跑步機式VR交互平臺上,使得用戶能夠在虛擬環境中實現自…

常見的數據處理方法有哪些?ETL中的數據處理怎么完成

在數字化轉型縱深推進的背景下,數據作為新型生產要素已成為驅動企業戰略決策、科研創新及智能化運營的核心戰略資產。數據治理價值鏈中的處理環節作為關鍵價值節點,其本質是通過系統化處理流程將原始觀測數據轉化為結構化知識產物,以支撐預測…

WHAT - 為甲方做一個官網(二)- 快速版

文章目錄 一、明確需求優先級(快速決策)二、推薦零代碼/低代碼工具(附對比)方案1:低代碼建站平臺(適合無技術用戶,拖拽式操作)方案2:CMS系統(適合內容更新頻繁…

音視頻之H.264視頻編碼傳輸及其在移動通信中的應用

系列文章: 1、音視頻之視頻壓縮技術及數字視頻綜述 2、音視頻之視頻壓縮編碼的基本原理 3、音視頻之H.264/AVC編碼器原理 4、音視頻之H.264的句法和語義 5、音視頻之H.264/AVC解碼器的原理和實現 6、音視頻之H.264視頻編碼傳輸及其在移動通信中的應用 7、音視…

C#語言入門-task2 :C# 語言的基本語法結構

下面從四個方面對C#的基本語法進行簡單介紹: 1. 數據類型 C#的類型可分為值類型和引用類型。值類型變量直接存儲數據,引用類型變量則存儲對象的引用。 值類型:涵蓋整數類型(像int、long)、浮點類型(例如…

c#筆記之類的常量、字段和屬性

學習內容: 一、字段 字段是為了對象或者類型存儲數據的,可以表達一個對象或者類型的狀態;也叫做成員變量;注意字段是在類里面聲明的;在方法里聲明的是局部變量; 1.1實例字段 用來表示每個實例的狀態;比如一個students類;要了解一個學生一般看名字和成績;所以名字和…