小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

收藏:Logstash 最常見面試題及答案整理(1-10)

 銘毅天下 2025-01-03 發(fā)布于廣東

前言

如果你正在準備 ELK(Elasticsearch、Logstash、Kibana) 相關(guān)的面試,或是想更好地掌握 Logstash 的配置與實踐,那么這篇整理能夠幫助你快速梳理核心概念與常見問答。

本文結(jié)合實際工作中常用的配置、案例及常見“坑”,力求讓讀者在閱讀后對 Logstash 的工作原理、插件配置、調(diào)試方法和性能調(diào)優(yōu)都有一個更系統(tǒng)、更清晰的認識。


目錄

  1. Logstash 在 ELK Stack 中的角色與架構(gòu)

  2. 常見 Input 插件及配置示例

  3. 常見 Filter 插件及用法

  4. DATA 與 GREEDYDATA 的區(qū)別(Grok)

  5. Mutate 中的 gsub 用法及其他常見操作

  6. 如何解析 JSON、XML 等結(jié)構(gòu)化數(shù)據(jù)

  7. CSV、KV 等格式的解析思路

  8. Grok 的作用及如何解析非結(jié)構(gòu)化日志

  9. Date Filter 的用處

  10. 如何避免重復(fù)文檔


1. Logstash 在 ELK Stack 中的角色與架構(gòu)

問題簡述

  • Logstash 是做什么的?

  • 為什么它是 ELK(或 Elastic Stack)中不可或缺的一環(huán)?

  • Pipeline(管線)有哪些主要階段?

簡要回答
Logstash 主要負責 數(shù)據(jù)的收集、過濾和轉(zhuǎn)換,是 ELK Stack 中至關(guān)重要的“數(shù)據(jù)管道”組件。它可以從各種來源(例如文件、數(shù)據(jù)庫、云存儲等)采集數(shù)據(jù),然后結(jié)合各種 Filter 插件做解析或富化,最后把處理好的結(jié)果發(fā)送到 Elasticsearch(最常見)或其他系統(tǒng)。

一個 Logstash Pipeline 通常包括以下三大階段:

  1. Input:決定從哪里采集數(shù)據(jù);

  2. Filter:對數(shù)據(jù)進行過濾、解析、轉(zhuǎn)換,提取有價值的字段;

  3. Output:將處理完畢的數(shù)據(jù)發(fā)送到目標,如 Elasticsearch、文件、HTTP 等。


官方地址

https://www./guide/en/logstash/current/index.html


2. 常見 Input 插件及配置示例

問題簡述

  • 常見的 Input 插件有哪些?

  • 如何進行簡單配置?

簡要回答
常見的 Input 插件包括:

  • File:從本地或掛載文件系統(tǒng)讀取日志文件;

  • Beats:接收來自 Filebeat、Metricbeat 等 Beats 的數(shù)據(jù);

  • S3:周期性掃描并讀取 Amazon S3 存儲桶中的日志文件;

  • JDBC:連接關(guān)系型數(shù)據(jù)庫(MySQL、PostgreSQL 等),定時執(zhí)行 SQL 查詢拉取數(shù)據(jù);

  • http_poller:定時輪詢 HTTP API,獲取數(shù)據(jù);

  • Elastic Agent:統(tǒng)一的 Agent,用于收集多種日志、指標并發(fā)送到 Elastic Stack。

示例(以 File Input 為例)

input {
file {
path => "/var/log/application/*.log"
start_position => "beginning"
sincedb_path => "/dev/null"
type => "application_logs"
}}

如需從數(shù)據(jù)庫獲取數(shù)據(jù),可使用 jdbc 插件;如需拉取 HTTP 接口數(shù)據(jù),可使用 http_poller 插件。


官方文檔

https://www./guide/en/logstash/current/input-plugins.html


3. 常見 Filter 插件及用法

問題簡述

  • Filter 是如何在 Logstash 中發(fā)揮作用的?

  • 常見的 Filter 插件有哪些?

簡要回答
Filter 插件用于“加工”數(shù)據(jù),提取或轉(zhuǎn)換字段,包括:

  1. Grok:基于預(yù)定義的正則模式解析日志;

  2. Mutate:對字段進行增、刪、改、類型轉(zhuǎn)換等操作;

  3. Date:解析時間字符串并轉(zhuǎn)換為日志的時間戳;

  4. CSV:解析 CSV 數(shù)據(jù);

  5. JSON:解析 JSON 數(shù)據(jù);

  6. XML:解析 XML 數(shù)據(jù);

  7. Split:把含有數(shù)組/多行的字段拆分為多個事件;

  8. Kv(Key-Value):把 key=value 形式的字符串分解為字段;

  9. Translate:通過外部字典(yml/json)實現(xiàn)字段翻譯或映射。


官方地址

https://www./guide/en/logstash/current/filter-plugins.html


4. DATA 與 GREEDYDATA 的區(qū)別(Grok)

問題簡述

  • Grok 模式中的 %{DATA}%{GREEDYDATA} 有何區(qū)別?

簡要回答

  • DATA:匹配任意字符,直到第一個空格或分隔符出現(xiàn)。

  • GREEDYDATA:會一直匹配到行尾,包括空格、特殊字符等。

實際使用時,需要根據(jù)日志結(jié)構(gòu)來決定是只捕獲到一個分隔符處,還是要把剩余所有內(nèi)容全部捕獲下來。


官方地址

https://www./guide/en/logstash/current/plugins-filters-date.html

https://discuss./t/what-is-greedydata/122078/2


5. Mutate 中的 gsub 用法及其他常見操作

問題簡述

  • gsub 在 Logstash 中如何使用?

  • Mutate Filter 還能做哪些操作?

  • 簡要回答

  • gsub:可對字符串內(nèi)的特定模式或字符進行全局替換。例如去除換行符、替換某些特殊字符等:

    filter {
    mutate {
    gsub => [
    "message", "\n", "",
    "message", "\r", ""
    ]
    }
    }

  • 其他常見操作包括:

    • rename:重命名字段

    • remove_field:刪除字段

    • convert:轉(zhuǎn)換字段類型

    • update:更新字段內(nèi)容


官方文檔

https://www./guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-gsub


6. 如何解析 JSON、XML 等結(jié)構(gòu)化數(shù)據(jù)

問題簡述

  • 當日志是 JSON 或 XML 格式時,如何在 Logstash 中進行解析?

  • 如果 JSON 包含嵌套結(jié)構(gòu),該如何處理?

簡要回答

  • JSON Filter:指定源字段即可解析 JSON 文本,并將其轉(zhuǎn)為相應(yīng)的字段。

  • XML Filter:可將 XML 轉(zhuǎn)為類似 JSON 的結(jié)構(gòu),后續(xù)再進行處理。

  • 對于嵌套 JSON,可多次使用 JSON Filter,或者結(jié)合 Ruby Filter/Mutate Filter 進行進一步“拆包”,把多層嵌套變成可直接索引的平鋪字段。


官方文檔

https://www./guide/en/logstash/current/plugins-filters-json.html


7. CSV、KV 等格式的解析思路

問題簡述

  • 如何解析 CSV 以及 key=value 形式的日志?

簡要回答

  • CSV Filter:可以指定 separator、columns 等配置,將 CSV 每列映射到指定字段名。

  • KV Filter:常見于 Nginx、系統(tǒng)日志等包含 key=value 格式的數(shù)據(jù),只要設(shè)置好 field_splitvalue_split,即可迅速解析為多個字段。


官方地址

https://www./guide/en/logstash/current/plugins-filters-csv.html


8. Grok 的作用及如何解析非結(jié)構(gòu)化日志

問題簡述

  • 當日志是非結(jié)構(gòu)化文本時,最常用的解析手段是什么?

簡要回答
Grok 是核心解決方案。它提供了大量的預(yù)定義正則模式(常見應(yīng)用日志、Web 服務(wù)器日志等),讓我們只需要寫少量的匹配規(guī)則即可提取具體字段。例如:

filter {
grok {
match => {
"message" => "User: %{USERNAME:user}, Action: %{WORD:action}, Status: %{WORD:status}"
}
}
}

這樣就能輕松將 message 字段拆分為 user, action, status 等字段。


官方地址

https://www./guide/en/logstash/current/plugins-filters-grok.html


9. Date Filter 的用處

問題簡述

  • Logstash 中的 Date Filter 有什么作用?

簡要回答
Date Filter 可以將字符串類型的日期時間解析為 Logstash 的時間戳,以便后續(xù)在 Elasticsearch 中基于時間做檢索和聚合。例如:

filter {
date {
match => ["timestamp", "yyyy-MM-dd HH:mm:ss"]
target => "@timestamp"
}
}

這樣就能保證索引后的數(shù)據(jù)與真實發(fā)生時間保持一致。


官方地址

https://www./guide/en/logstash/current/plugins-filters-date.html

10. 如何避免重復(fù)文檔

問題簡述

  • 同一條數(shù)據(jù)可能多次被讀取,如何避免 Elasticsearch 出現(xiàn)重復(fù)?

簡要回答

  1. Output 配置中使用 document_id 綁定唯一鍵,如:

    output {
    elasticsearch {
    index => "my_index"
    document_id => "%{unique_field}"
    }
    }

  2. 對于文件、JDBC 等,借助 sincedbtracking_column 等機制,只讀新增數(shù)據(jù)。

  3. 如果有增量更新或 upsert 需求,可以配置 action => "update" 并指定 doc_as_upsert => true。


官方文檔

https:///questions/42003462/how-to-set-document-id-in-elastic-using-logstash-config-file


結(jié)束語

以上內(nèi)容只是 Logstash 在日常使用以及面試中 最常見 的問題之一部分,后續(xù)還會就其余條目(如如何監(jiān)控 Logstash 性能、如何調(diào)試 Pipeline、如何使用 Persistent Queue 等)進行更加深入的探討。

未完待續(xù)……

  1. 如何對 Elasticsearch、Filebeat、Logstash、Kibana 深度巡檢?

  2. 日志解析神器——Logstash中的Grok過濾器使用詳解

  3. 怎么把Logstash 通過 Kibana 可視化監(jiān)控起來?

  4. 干貨 | Logstash自定義正則表達式ETL實戰(zhàn)

  5. 干貨 | Logstash Grok數(shù)據(jù)結(jié)構(gòu)化ETL實戰(zhàn)

  6. logstash_output_kafka:Mysql同步Kafka深入詳解

短時間快習得多干貨!

和全球2000+ Elastic 愛好者一起精進!

elastic6.cn——ElasticStack進階助手

搶先一步學習進階干貨!

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多