【Logstash02】企業級日志分析系統ELK之Logstash 輸入 Input 插件

Logstash 使用

Logstash 命令

官方文檔

https://www.elastic.co/guide/en/logstash/current/first-event.html
#各種插件
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
https://www.elastic.co/guide/en/logstash/current/output-plugins.html
https://www.elastic.co/guide/en/logstash/7.6/input-plugins.html
https://www.elastic.co/guide/en/logstash/7.6/filter-plugins.html
https://www.elastic.co/guide/en/logstash/7.6/output-plugins.html

范例: 查看幫助

[root@logstash ~]#/usr/share/logstash/bin/logstash --help
#常用選項
-e 指定配置內容
-f 指定配置文件,支持絕對路徑,如果用相對路徑,是相對于/usr/share/logstash/的路徑
-t 語法檢查
-r 修改配置文件后自動加載生效,注意:有時候修改配置還需要重新啟動生效#服務方式啟動,由于默認沒有配置文件,所以7.X無法啟動,8.X可以啟動
[root@logstash ~]#systemctl start logstash

各種插件幫助

Logstash Reference [8.17] | Elastic?

范例: 列出所有插件

[root@logstash ~]#/usr/share/logstash/bin/logstash-plugin list?

Github logstash插件鏈接

https://github.com/logstash-pluginsicon-default.png?t=O83Ahttps://github.com/logstash-plugins

Logstash 輸入 Input 插件

官方鏈接

Input plugins | Logstash Reference [7.6] | Elastic

標準輸入

codec 用于輸入數據的編解碼器,默認值為plain表示單行字符串,若設置為json,表示按照json方式解 析

范例: 交互式實現標準輸入

#標準輸入和輸出,codec => rubydebug指輸出格式,是默認值,可以省略,也支持設為json,以json格式輸出
/usr/share/logstash/bin/logstash  -e 'input { stdin{} } output { stdout{ codec => rubydebug }}'
#后續還可繼續輸入其它信息,按ctrl+c退出#指定輸入信息為Json格式
[root@logstash ~]#/usr/share/logstash/bin/logstash -e 'input { stdin{ codec => json } } output { stdout{ codec => rubydebug }}'
{"name":"wang","age": "18","gender":"male"}  #輸入Json格式信息#自動解析
{"name" => "wang","event" => {"original" => "{\"name\":\"wang\",\"age\": \"18\",\"gender\":\"male\"} \n"},"@timestamp" => 2025-01-03T05:00:30.673936999Z,"age" => "18","host" => {"hostname" => "logstash"},"gender" => "male","@version" => "1"
}
#輸入非Json格式信息,告警提示無法自動解析,存放message字段
hello,world[WARN ] 2025-01-03 05:01:04.357 [[main]<stdin] jsonlines - JSON parse error, original data now in message field {:message=>"Unrecognized token 'hello': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n at [Source: (String)\"hello,world\"; line: 1, column: 6]", :exception=>LogStash::Json::ParserError, :data=>"hello,world"}
{"event" => {"original" => "hello,world\n"},"message" => "hello,world","@timestamp" => 2025-01-03T05:01:04.359617946Z,"host" => {"hostname" => "logstash"},"tags" => [[0] "_jsonparsefailure"],"@version" => "1"
}

范例: 以配置文件實現標準輸入

#配置文件
[root@logstash ~]#cat /etc/logstash/conf.d/stdin_to_stdout.conf
input {stdin {type => "stdin_type"  #自定義事件類型,可用于后續判斷    tags => "stdin_tag"   #自定義事件tag,可用于后續判斷     codec => "json"       #指定Json 格式    }
}output {stdout {codec => "rubydebug" #輸出格式,此為默認值,可省略}
}
#語法檢查
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/stdin_to_stdout.conf -t
........
Configuration OK
[INFO ] 2025-01-03 05:07:47.505 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash#執行logstash,選項-r表示動態加載配
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/stdin_to_stdout.conf -r
從文件輸入

Logstash 會記錄每個文件的讀取位置,下次自動從此位置繼續向后讀取

每個文件的讀取位置記錄在 /var/lib/logstash/plugins/inputs/file/.sincedb_xxxx 或者 /usr/share/logstash/data/plugins/inputs/file/ 對應的文件中

此文件包括文件的 inode號, 大小等信息

修改 Logstash 配置文件
[root@logstash ~]#cat /etc/logstash/conf.d/file_to_stdout.conf
input {file {path => "/tmp/wang.*"type => "wanglog"     #添加自定義的type字段,可以用于條件判斷,和filebeat中tag功能相似exclude => "*.txt"    #排除不采集數據的文件,使用通配符glob匹配語法 start_position => "beginning" #第一次從頭開始讀取文件,可以取值為:beginning和endstat_interval => "3"        #定時檢查文件是否更新,默認1s   codec => json                #如果文件是Json格式,需要指定此項才能解析,如果不是Json格式而添加此行也不會影響結果}file {path => "/var/log/syslog"type => "syslog"start_position => "beginning"stat_interval => "3"}
}
output {stdout {codec => rubydebug}
}

?

?

驗證日志數據
#語法檢查
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/file_to_stdout.conf -t
[root@logstash ~]#echo line1 >> /tmp/wang.log
#執行
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/file_to_stdout.conf

logstash利用 sincedb 文件記錄了logstash收集的記錄文件的信息,比如位置,以方便下次接著從此位 置繼續收集日志

[root@logstash logstash]#cat  /usr/share/logstash/data/plugins/inputs/file/.*
2232798 0 2052 15 1735885320.283595 /var/log/test.log  #記錄了收集文件的inode和大小等信息[root@logstash logstash]#ll -li /var/log/test.log
2232798 -rw-r--r-- 1 root root 15 Jan  3 14:12 /var/log/test.log
從 Http 請求采取數據
[root@logstash ~]# cat /etc/logstash/conf.d/http_to_stdout.conf
input {http {port =>6666codec => json}
}
output {stdout {codec => rubydebug}
}
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/http_to_stdout.conf -r#執行下面訪問可以看到上面信息
[root@ubuntu2004 ~]#curl http://logstash.wang.org:6666
ok
[root@ubuntu2004 ~]#curl  -XPOST -d'test log message' http://logstash.wang.org:6666#提交Json格式數據,可以自動解析
[root@ubuntu2004 ~]#curl  -XPOST -d'{ "name":"wang","age": "18","gender":"male"}' http://logstash.wang.org:6666

?

從 Filebeat 讀取數據
filebeat配置
filebeat.inputs:
- type: logenabled: true             #開啟日志           paths:- /var/log/nginx/access_json.log    #指定收集的日志文件  json.keys_under_root: true #默認false,只識別為普通文本,會將全部日志數據存儲至message字段,改為true則會以Json格式存儲json.overwrite_keys: true  #設為true,使用json格式日志中自定義的key替代默認的message字段,此項可選tags: ["nginx-access"]
output.logstash:hosts: ["10.0.0.104:5044"]  #指定Logstash服務器的地址和端口  
Logstash配置
[root@logstash ~]#cat /etc/logstash/conf.d/filebeat_to_stdout.conf
input {beats {port => 5044}
}
output {stdout {codec => rubydebug}
}

?

訪問filebeat生成日志
[root@logstash conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/filebeat_to_stdout.conf -r{"upstreamtime" => "-","agent" => {"ephemeral_id" => "b5311807-a0a9-428f-a076-a3c8c5b9db02","id" => "a3acb99e-b483-4367-a2df-535d8a39a0fa","name" => "kibana","version" => "8.8.2","type" => "filebeat"},"ecs" => {"version" => "8.0.0"},"tcp_xff" => "-","referer" => "-","domain" => "10.0.0.186","tags" => [[0] "nginx-access",[1] "beats_input_raw_event"],"http_host" => "10.0.0.186","upstreamhost" => "-","xff" => "-","host" => {"name" => "kibana"},"log" => {"offset" => 2576,"file" => {"path" => "/var/log/nginx/access_json.log"}},"clientip" => "10.0.0.181","http_user_agent" => "curl/7.81.0","responsetime" => 0,"status" => "404","input" => {"type" => "log"},"size" => 162,"@version" => "1","@timestamp" => 2025-01-03T07:13:49.000Z,"uri" => "/adada"
}

?

從 Redis 中讀取數據

支持由多個 Logstash 從 Redis 讀取日志,提高性能

Logstash 從 Redis 收集完數據后,將刪除對應的列表Key

官方鏈接:

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-redis.html
https://www.elastic.co/guide/en/logstash/7.6/plugins-inputs-redis.html
?

?范例:

[root@logstash ~]#cat /etc/logstash/conf.d/redis_to_stdout.conf
input {redis {host => 'Redis_IP'port => "6379"password => "123456"db => "0"data_type => 'list'key => "nginx-accesslog"}
}
output {stdout {codec => rubydebug}
}
[root@logstash ~]#/usr/share/logstash/bin/logstash -f  /etc/logstash/conf.d/redis_to_stdout.conf -r
從 Kafka 中讀取數據

官方鏈接:

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html
https://www.elastic.co/guide/en/logstash/7.6/plugins-inputs-kafka.html

范例:

[root@logstash ~]#cat /etc/logstash/conf.d/kakfa_to_stdout.conf
input {kafka {bootstrap_servers => "10.0.0.201:9092,10.0.0.202:9092,10.0.0.203:9092"#group_id => "logstash"topics => ["nginx-accesslog","nginx-errorlog"]#topics => "nginx-log"codec => "json"consumer_threads => 8}
}
output {stdout {codec => rubydebug}
}
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/kakfa_to_stdout.conf -r

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

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

相關文章

1.4 java反射機制 簡單的java反射機制實踐

這是一個項目用于學習反射 第一個demo是利用反射構建一個對象轉換為JSON 第二個demo是用于利用類的名字以及方法名就可以直接執行的實例 package com.zy.reflectiondemo.utils;import com.zy.reflectiondemo.annotation.JsonField;import java.lang.reflect.Field; import jav…

C#設計模式(行為型模式):觀察者模式

C#設計模式&#xff1a;觀察者模式&#xff0c;讓對象間通信更優雅 在軟件開發中&#xff0c;我們經常會遇到一個對象的狀態發生改變&#xff0c;其他對象需要自動更新或做出相應反應的場景。例如&#xff1a; GUI事件處理&#xff1a; 當用戶點擊按鈕時&#xff0c;按鈕需要…

【Vue】:解決動態更新 <video> 標簽 src 屬性后視頻未刷新的問題

問題描述 在 Vue.js 項目&#xff0c;當嘗試動態更新 <video> 標簽的 <source> 元素 src 屬性來切換視頻時&#xff0c;遇到了一個問題&#xff1a;即使 src 屬性已更改&#xff0c;瀏覽器仍顯示舊視頻。具體表現為用戶選擇新視頻后&#xff0c;視頻區域繼續顯示之…

BerOS 文件系統路徑歸一化問題及其 Python 實現

題目背景 本文將討論一道與操作系統路徑歸一化有關的問題&#xff0c;該問題來自 BerOS 文件系統 的設計。BerOS 是一個新型操作系統&#xff0c;其文件路徑系統允許路徑中的分隔符 / 重復出現。例如&#xff0c;以下路徑被視為等價的&#xff1a; /usr//local//nginx/sbin//…

Halcon 顯示異常

//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋轉 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …

window11 wsl mysql8 錯誤分析:1698 - Access denied for user ‘root‘@‘kong.mshome.net‘

&#x1f6a8; 錯誤分析&#xff1a;1698 - Access denied for user rootkong.mshome.net 這個錯誤是因為 MySQL 的 root 用戶 使用 auth_socket 插件進行身份驗證&#xff0c;而不是使用密碼。因此&#xff0c;當你嘗試從 遠程主機 連接時&#xff0c;MySQL 會拒絕訪問。 ? …

CentOS 7安裝Docker詳細教程

本文以 CentOS7.8 為例安裝 Docker 26.1.4 、Docker Compose、以及 Docker 鏡像倉庫。 安裝方式1&#xff1a;自動安裝(使用官方腳本) 使用官網一鍵安裝命令&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 或 使用國內 daocloud 一鍵安…

Java:緩存:LinkedHashMap實現Lru

文章目錄 Lru源碼分析 ??????????????LinkedHashMap維護一個LinkedHashMapEntry<K,V>的雙向鏈表對LinkedHashMap的增刪查操作,也會對鏈表進行相同的操作并改變鏈表的鏈接順序小結使用方法??????????????應用總結Lru Least Recently Used,…

通過代理用戶功能可以實現生產用戶的應用滾動修改密碼

Oracle通過代理用戶功能可以實現生產用戶的應用滾動修改密碼。 測試例子&#xff1a; 生產用戶為jyc密碼為jyc 現在要求修改jyc的密碼為abc&#xff0c;意味著所有應用都得停止同時修改。 此時可以考慮新建代理用戶proxy_jyc&#xff0c;密碼為jyc1&#xff08;實際修改建議…

Git 倉庫與文件管理筆記

Git 的三種倉庫概念 本地倉庫 (Local Repository) 位于本地 .git 文件夾中通過 git init 或 git clone 創建存儲完整的項目歷史和分支信息 遠程倉庫 (Remote Repository) 位于 GitHub、GitLab 等平臺服務器使用 git remote -v 查看所有遠程倉庫默認遠程倉庫名通常為 origin 工…

【人工智能數據科學與數據處理】——深入詳解人工智能數據科學與數據處理之數據可視化與數據庫技術

深入詳解人工智能數據科學與數據處理 在人工智能&#xff08;AI&#xff09;的數據科學與數據處理中&#xff0c;數據可視化與數據庫技術是兩項至關重要的技能。本文將深入探討數據可視化中的可視化技巧及其應用&#xff0c;以及關系型數據庫&#xff08;如MySQL、PostgreSQL&…

DES密碼的安全性分析(簡化版本)

DES仍是世界上使用最廣的&#xff08;DES發行后20年&#xff0c;互聯網的興起&#xff0c;人們開始覺得DES不安全了&#xff0c;但DES的實現成本也越來越低&#xff09; 宏觀分析&#xff1a; 密鑰空間方面&#xff1a; 密鑰長度&#xff1a;DES 算法使用 56 位的密鑰對數據…

Elasticsearch 文檔批處理 混合處理 批量操作

介紹 在 Elasticsearch 中&#xff0c;批量操作&#xff08;Bulk API&#xff09;允許你一次執行多個文檔操作&#xff08;如索引、更新、刪除&#xff09;以提高效率。批量操作對于大規模數據的插入、更新或刪除尤其有用&#xff0c;可以顯著提高處理速度。 批量操作通常是通…

計算機網絡原理(謝希仁第八版)第4章課后習題答案

第四章 網絡層 詳細計算機網絡&#xff08;謝希仁-第八版&#xff09;第四章習題全解_計算機網絡第八版謝希仁課后答案-CSDN博客 1.網絡層向上提供的服務有哪兩種&#xff1f;是比較其優缺點。網絡層向運輸層提供 “面向連接”虛電路&#xff08;Virtual Circuit&#xff09;服…

實現單例模式的五種方式

如何實現一個單例 1、構造器需要私有化 2、提供一個私有的靜態變量 3、暴露一個公共的獲取單例對象的接口 需要考慮的兩個問題 1、是否支持懶加載 2、是否線程安全 1、餓漢式 public class EagerSingleton {private static final EagerSingleton INSTANCE new EagerSi…

永磁同步電機控制算法--最大轉矩電流比控制((升級版)公式法、曲線擬合法、查表法)

一、原理介紹 id0控制方法在電機輸出相同的電磁轉矩下電機的定子電流并不是最小的,因此,采用最大轉矩電流比控制方法,使得電機在輸出相同的電磁轉矩下電機定子電流最少,實現該系統的原理框圖如圖所示。 最大轉矩電流比控制也稱單位電流輸出最大轉矩的控制,即控制id以追求最大轉…

數據挖掘——決策樹分類

數據挖掘——決策樹分類 決策樹分類Hunt算法信息增益增益比率基尼指數連續數據總結 決策樹分類 樹狀結構&#xff0c;可以很好的對數據進行分類&#xff1b; 決策樹的根節點到葉節點的每一條路徑構建一條規則&#xff1b;具有互斥且完備的特點&#xff0c;即每一個樣本均被且…

自動化文件監控與分類壓縮:實現高效文件管理

自動化文件監控與分類壓縮&#xff1a;實現高效文件管理 引言 在現代數據處理和文件管理中&#xff0c;如何高效地管理和歸檔大量文件是一個常見的挑戰。特別是在需要根據文件類型進行分類并定期歸檔的場景下&#xff0c;手動操作不僅耗時且容易出錯。為此&#xff0c;我們開…

小紅書怎么看ip所屬地?小紅書ip屬地為什么可以變

小紅書&#xff0c;作為當下熱門的社交電商平臺&#xff0c;不僅為用戶提供了豐富的購物與分享體驗&#xff0c;還通過展示用戶IP屬地信息&#xff0c;增強了網絡社交的透明度和真實性。然而&#xff0c;不少用戶發現&#xff0c;小紅書上的IP屬地并非一成不變&#xff0c;這引…

springboot使用hutool captcha +vue實現圖形驗證碼

一、效果 使用hutool captcha實現簡單的圖形驗證碼&#xff0c;可以參考官網概述 | Hutool 二、實現步驟 1、導入依賴 <!--hutool包--> <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.…