日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Logstash语法常用案例解析(一)

發布時間:2023/12/1 综合教程 23 生活家
生活随笔 收集整理的這篇文章主要介紹了 Logstash语法常用案例解析(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建站服務器

摘要

簡述logstash的常用插件,以及簡單的使用案例

一:基礎運行

建議使用supervisor來管理ELK中的各個組件,方便同一管理

安裝 https://www.aolens.cn/?p=809 有講解

提供一個常用的配置:

[program:logstash]
command=/opt/logstash/bin/logstash-f/opt/logstash/conf/index.conf
numprocs=1;開幾個進程
dirrectory=/opt/logstash
user=root;用戶
stdout_logfile=/opt/logstash/logs/logstash.log
stdout_logfile_maxbytes=1MB;每個日志大小
stdout_logfile_backups=10;保留10個日志文件
stderr_logfile=/opt/logstash/logs/logstash_err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10

運行參數:

啟動logstash服務(常用supervisor守護進程)

./bin/logstash-f/etc/logstash/conf.d/* -t #檢查配置文件是否ok

./bin/logstash -f conf.d/nginx.conf -w 5 -l /var/log/logstash/

二:配置語法

1,區域:(section)

Logstash用{}來定義區域。可以在區域中定義多個插件區域,插件區域內可以定義鍵值對

eg:

input{#輸入數據
file{
path=[/var/log/messages,/var/log/*.log]
type=system
start_position=beginning
}
}
filter{#數據過濾處理
if[type]==system{
grok{
match=[message,%{COMBINEDAPACHELOG}]
}
}
}
output{#數據處理輸出
stdout{
codec=rubydebug
}
}

2,數據類型:

string——普通字符串

name=>Helloworld

name=>\'It\\\'sabeautifulday\'

array——數組可以是單個或者多個字符串值。

path=>[/var/log/messages,/var/log/*.log]

path=>/data/mysql/Mysql.log

hash——鍵值對,注意多個鍵值對用空格分隔,而不是逗號。

match=>{

field1=>value1

field2=>value2

...}

Codec——用來表示數據編碼。用于input和output段。便于數據的處理。

codec=>json

number——必須是有效的數值,浮點數或者整數。

port=>33

boolean——布爾值必須是TRUE或者false。

ssl_enable=>true

bytes——指定字節單位。默認是byte。

my_bytes=>1113#1113bytes

my_bytes=>10MiB#10485760bytes

my_bytes=>100kib#102400bytesBinary(Ki,Mi,Gi,Ti,Pi,Ei,Zi,Yi)單位1024

my_bytes=>180mb#180000000bytesSI(k,M,G,T,P,E,Z,Y)單位基于1000

password——一個單獨的字符串。

my_password=>password

path——代表有效的操作系統路徑。

my_path=>/tmp/logstash

3:字段引用

Logstash配置中要使用字段的值,只需要把字段的名字寫在中括號[]里。只要是input輸入的值,都可以引用

eg:

[geoip][location][-1]

4,條件判斷

表達式支持的操作符

==(等于),!=(不等),<(小于),>(大于),<=(小等),>=(大等)

=~(匹配正則),!~(不匹配正則)

in(包含),not in(不包含)

and(與),or(或),nand(與非),xor(非或)

()(復合表達式),!()(取反復合表達式結果)

三:常用插件

1,插件管理

./bin/plugin -h

install

uninstall

update

list

eg:

bin/plugininstalllogstash-output-webhdfs

bin/pluginupdatelogstash-input-tcp

2,常用插件 input,output,filter,codec

2.1 Input插件

stdin:標準輸入,常用于測試,

input{
stdin{
type=string
tags=[add]
codec=plain
}
}

file:從文件系統中讀取文件,類似linux下的tail -f。 最常用

input{
file{
path=[/var/log/*.log,/var/log/message]#logstash只支持文件的絕對路徑
type=system#type記錄文件類型,定義的變量為全局變量,其他插件都可以調用
start_position=beginning
}
}

Redis:從redis服務器讀取,同時使用redis channel和redis list。

input{
redis{
data_type=list
key=logstash-nginx
host=192.168.1.250
port=6379
db=1
threads=5
}}將源數據寫入redis
output{
redis{
host=192.168.1.250
port=6379
db=1
data_type=list
key=logstash-nginx
}}

TCP/UDP: 輸入

#nc127.0.0.18888/var/log/nginx/access.json#可以是json文件直接傳值

#echo\'{name:liuziping,age:18}\'|nc127.0.0.18888

input{
tcp{
port=8888#定義tcp監聽端口
codec=json#規定傳入的數據為json格式,k/v結構方便分析
mode=server
}
}

syslog:監聽在514端口的系統日志信息,并解析成RFC3164格式。

input{
syslog{
port=514
}
}

beats: 通過Filebeat發送事件。

2.2:Output 插件

stdout:標準輸出

output{
stdout{
codec=rubydebug
workers=2
}
}

file :保存成文件

output{
file{
path=/path/to/%{+yyyy/MM/dd/HH}/%{host}.log.gz
message_format=%{message}
gzip=true
}
}

elasticsearch:保存進elasticsearch ,也是最為重要的

output{
elasticsearch{
hosts=>[192.168.0.2:9200]#或者cluster=>“ClusterName“
index=>logstash-%{type}-%{+YYYY.MM.dd}#索引名,統一格式,方便kibana導入,會講統一類型的日志,全部導入這里的type=input中的type值
document_type=>nginx
workers=>1#啟動一個進程
flush_size=>20000#攢夠20000條數據一次性發給ES,默認500條
idle_flush_time=>10#如果10s內沒攢夠20000條也發一次給ES,默認1s
template_overwrite=>true
}
}

redis:保存到redis中在input插件中已講解

TCP:輸出TCP

output{
tcp{
host=192.168.0.2
port=8888
codec=json_lines
}
}

Email:發送郵件

exec:調用命令執行

總結

以上是生活随笔為你收集整理的Logstash语法常用案例解析(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。