logstash(自动拉取,过滤,推送日记的应用,也是elk架构中的l)

[复制链接]
发表于 2025-10-29 19:11:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
elk是指elasticsearch,logstash,kibana三款软件搭配构成的架构
logstash是一个数据收罗加工处置处罚以及传输的工具 
logstash类似于流水线,有三个模块,分辨是input > filter > output,input模块负责网络数据,filter负责处置处罚数据,output负责输出数据
logstash必要先包管web集群和ela集群运行正常才气搭建,运行logstash必要先制作logstash的软链接才气测试
ln -s /etc/logstash   /usr/share/logstash/config  制作logstash主设置文件的软链接到/usr/share/
以下是一个根本的logstash主设置文件的模板
input { 
  stdin {}
               }
filter{ 
}
output{ 
  stdout{}
}
这是最简单的logstach设置文件,意味着logstach会按照input,filter,output三个部分来处置处罚文件,input吸取数据,并使用stdin模块处置处罚(界说了输入源为标准输入,如在终端手动输入内容),filter处置处罚数据,但没有界说使用什么模块举行处置处罚,output输出数据,使用stdout(界说了输出目标地为标准输出,也就是颠末了前面输入和filter阶段的数据会直接输出表现到logstash的终端上)处置处罚数据
json的数据布局:键值对可以嵌套数组,数组可以嵌套键值对
如 {"key":"value"}(键值对) ["aa","bb","cc"](数组)
     {"key":{"key:"v1"} 键值对嵌套键值对
可以使用echo '{"key":[]}'  | python3 -m json.tool   转化成易读格式

如果未在主设置文件中参加任何的操纵拉取到的语句会是如许
设置文件里在input{stdin{codec=>“json”}}时 
新增了 codec => "json" 这个设置。codec 即编解码器(编码器息争码器的统称),在此处设置为 json,表现 Logstash 盼望从标准输入吸取的数据格式是 JSON 格式。当输入的数据按照 JSON 格式举行输入时(好比在终端输入符合 JSON 规范的字符串,像 {"name": "John", "age": 30} 如许的内容),Logstash 会自动将其解码为内部可处置处罚的数据布局,方便后续的过滤及输出等流程操纵。如果输入的数据不符合 JSON 格式要求,大概会导致剖析错误等情况发生。

再在设置文件里参加output{ stdout{ codec => "rubydebug" } }后的结果
设置了 codec => "rubydebug",它选用了 rubydebug 这种编解码器格式用于输出数据。使用 rubydebug 编解码器的利益是,输出的数据会以一种更易读、格式更清楚且带有具体调试信息的情势出现出来,方便检察数据颠末 Logstash 处置处罚后的具体状态。比方,输出的数据会带有缩进、字段展示清楚等特点,对于调试 Logstash 设置以及检察数据流转后的实际样子很有资助。

在设置文件中修改input模块:nput { file { path=> ["/tmp/a.log", "/tmp/b.log"]}}
filter和output不做修改
这时,logstash会读取/tmp/a.log,和/tmp/b.log的文件内容,当这两个文件内容有新增,修改的时间就会在屏幕上输入,对应的更改内容
如:
  


  start_position => "beginning"    (会指定logstash从书签位置开始读取本文件,如果没有书签的话则会重新开始读取)
  sincedb_path => "/ var/lib/logstash/sincedb"  (可以指定书签的存放位置,如果该位置没有该文件的话则会自动创建该书签,如果该位置为/dev/null的话则会把书签不停扬弃,如许就会每次都会重新开始读取文件)
上面为用自己写的正则表达式匹配ip地点,下面为调用宏来匹配ip地点

宏:logstash作者写好的正则表达式,放在logstash的某个文件中,可以直接使用宏的名字来使用宏所代表的正则表达式
如  IP:client IP    此中IP为宏名称,是写好的宏的名字,背面是表现出来的名字,好比这个的意思就是使用宏名称为IP的宏匹配数据,匹配出来的数据放在client IP背面
出来的结果就是 client IP : XXXX.XXXX.XXXX(匹配出来的ip地点)
宏调用格式:%{宏名称:名字}
正则表达式分组匹配格式:(?<名字>正则表达式)
josn字符串:一样寻常日记里的表达格式都是josn字符串


match => { "message" =>  "%{HTTPD_COMBINEDLOG}" } 这里使用了名称为HTTPD_COMBINEDLOG的宏,该宏是一整组正则表达式,可以将读取到的htppd日记举行json键值对分组,将一整行长日记信息,分类规制为一组组键值对,可以大概更加清楚的表现出来
remove_field => [ "message" ]
这里将原message原输出,也就是本来应该输出出来的那一整行长日记信息给删除了,由于已经将本来整行的长语句给分类规整刨析出来了,以是才将本来的输出给清楚,不让其表现
使用HTTPD_COMBINEDLOG后输出为如许


使用前输出为如许(也是remove删除的那一句输出)

elk : web,nfs,logstash,elasticsearch,kibana : elk架构,使用nfs共享html页面给web前端服务器们,同时也可以共享一个日记目次供前端服务器读写日记,同时将该目次共享给logstash,让logstash可以读取剖析输出前端服务器的日记,然后再由logstash推送给后端的elasticsearch数据库集群,由数据库集群举行记录,末了使用kibana服务器连通elasticsearch集群得到内里的数据信息,以简单明白的web页面直观的展示收罗到的日记信息。
elk集群一样寻常实用于十台以内的集群,他使用的端口分辨为web服务的80端口,elasticsearch用来吸取数据的9200端口,尚有head插件的8080端口(一样寻常在/es-head/),尚有kibana的用来展示界面的5601端口
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表