发布网站的两种方法,20个排版漂亮的网页设计,珠海网站免费制作,用php做的网站目录 一、Elastic Stack#xff0c;之前被称为ELK Stack
完成ELK与Filebeat对接
步骤一#xff1a;安装nginx做测试 步骤二#xff1a;完成filebeat二进制部署
步骤三#xff1a;准备logstash的测试文件filebeat.conf
步骤四#xff1a;完成实验测试
二、logstash拥有…目录 一、Elastic Stack之前被称为ELK Stack
完成ELK与Filebeat对接
步骤一安装nginx做测试 步骤二完成filebeat二进制部署
步骤三准备logstash的测试文件filebeat.conf
步骤四完成实验测试
二、logstash拥有强大的过滤功能常用四种插件
1、grok 步骤一现在logstash的conf文件中进行filter模块的修改添加grok插件
步骤二完成语法测试先测试完成
步骤三filebeat与logstash对接 logstash与ES进行对接
编辑
2、multiline
步骤一准备测试日志文件 步骤二准备logstash的conf文件在filter模块中配置multiline插件
步骤三语法测试并启动logstash与ES对接
步骤五查看kibana 进行验证
3、date
步骤一先完成logstash的conf文件编写完成语法检测以及启动
编辑
步骤二kibana前端界面验证
4、mutate数据修改插件
步骤一准备测试文件filebeat.conf
步骤二完成语法检测和启动对接
编辑步骤三 刷新nginx访问页面 在kibana页面验证效果 一、Elastic Stack之前被称为ELK Stack
完成ELK与Filebeat对接
步骤一安装nginx做测试 步骤二完成filebeat二进制部署 步骤三准备logstash的测试文件filebeat.conf input{beats {port 5044}
}#filter{}output{elasticsearch{hosts [192.168.20.10:9200,192.168.20.8:9200,192.168.20.18:9200]index %{[fields][server_name]}-%{[fields][log_type]}-%{[fields][from]}-%{yyyy.MM.dd}}stdout { ##表示测试的时候如果屏幕输出内容了那么表示logstash与ES对接成功如果没有输出内容那么可能filebeat与logstash对接失败codec rubydebug}
}[rootnginx-test conf.d]#logstash -f filebeat.conf -t
##语法检测 步骤四完成实验测试
[rootfilebeat-test /usr/local/filebeat]#./filebeat -e -c filebeat.yml
##完成filebeat与logstash对接 注意命令的位置 [rootnginx-test conf.d]#logstash -f filebeat.conf
##完成logstash与ES集群对接 实验完成 二、logstash拥有强大的过滤功能常用四种插件
1、grok
grok可以将大文本字段分片成若干的小字段如刚刚的日志文件一行的信息太多需要将message这个大文本字段给分片成若干的小字段如访问ip、请求方法、URL、状态码等
grok有两种格式并且支持混用
内置正则匹配格式%{内置正则表达式:自定义的小字段名称}自定义正则匹配格式(?自定义的小字段名称自定义的正则表达式)
同时可以先在kibana的开发工具上做测试
192.168.20.1 - - [19/Jan/2024:17:08:24 0800] GET /123.html HTTP/1.1 304 0 - Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0 -%{IP:client_addr}.*\[(?quest_time.*)\] %{WORD:quest_method} %{URIPATHPARAM:url_method} .* (?response_code\d) .* (?referer_url.*) (?agent.*).*##实际就是用正则表达式表达这一整行的内容 完成logstash测试 步骤一现在logstash的conf文件中进行filter模块的修改添加grok插件
[rootnginx-test conf.d]#cat filebeat.conf
input{beats {port 5044}
}filter{grok{match { message %{IP:client_addr}.*\[(?quest_time.*)\] \%{WORD:quest_method} %{URIPATHPARAM:url_method} .*\ (?response_code\d) .* \(?referer_url.*)\ \(?agent.*)\.* }}
}output{elasticsearch{hosts [192.168.20.10:9200,192.168.20.8:9200,192.168.20.18:9200]index %{[fields][server_name]}-%{[fields][log_type]}-%{[fields][from]}-%{yyyy.MM.dd}}
}步骤二完成语法测试先测试完成
[rootnginx-test conf.d]#logstash -f filebeat.conf -t步骤三filebeat与logstash对接 logstash与ES进行对接 2、multiline
通常来讲日志中一条信息以一行记录但是有的java应用的日志会分为多行记录
那么multiline作用是将多行日志内容合并成一整行
pattern用来匹配文本的表达式也可以是grok表达式negate是否对pattern的结果取反。false不取反是默认值。true取反。将多行事件扫描过程中的行匹配逻辑取反如果pattern匹配失败则认为当前行是多行事件的组成部分what如果pattern匹配成功的话那么匹配行是归属于上一个事件还是归属于下一个事件。previous: 归属于上一个事件向上合并。next: 归属于下一个事件向下合并
举例实操
现在有java日志在/opt/java.log中如图
步骤一准备测试日志文件 步骤二准备logstash的conf文件在filter模块中配置multiline插件
[rootnginx-test conf.d]#cat java.conf
input{file {path /opt/java.logstart_position beginningsincedb_path /etc/logstash/sincedb_path/log_progress}
}filter {multiline {pattern ^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}negate truewhat previous}
}
output{elasticsearch {hosts [192.168.20.10:9200,192.168.20.8:9200,192.168.20.18:9200]index java-%{yyyy.MM.dd}}
}步骤三语法测试并启动logstash与ES对接 步骤五查看kibana 进行验证 3、date
用于分析字段中的日期然后使用该日期或时间戳作为事件的logstash时间戳。
痛点
毕竟我这个url是静态的 相对动态请求比较快 而且字节数比较小。就这样的情况下 logstash接收时间与日志时间也是会有延迟的那么对于 生产中的 比如除 查询 当然是想统一一个标准 以日志时间为时间戳那么就需要用到date插件 比如还是刚刚的filebeat采集的nginx日志现在想要实现访问的日志时间与logstash的时间一致
步骤一先完成logstash的conf文件编写完成语法检测以及启动 [rootnginx-test conf.d]#cat filebeat.conf
input{beats {port 5044}
}filter{grok{match { message .*\[(?quest_time.*)\].* }}date{match [quest_time, dd/MMM/YYYY:HH:mm:ss Z]target timestamptimezone Asia/Shanghai}
}output{elasticsearch{hosts [192.168.20.10:9200,192.168.20.8:9200,192.168.20.18:9200]index %{[fields][server_name]}-%{[fields][log_type]}-%{[fields][from]}-%{yyyy.MM.dd}}
} 步骤二kibana前端界面验证 4、mutate数据修改插件
它提供了丰富的基础类型数据处理能力。可以重命名删除替换和修改事件中的字段。
//Mutate 过滤器常用的配置选项
add_field 向事件添加新字段也可以添加多个字段remove_field 从事件中删除任意字段只能删掉logstash添加的字段 如果是filebeat设置的则不能删除add_tag 向事件添加任意标签在tag字段中添加一段自定义的内容当tag字段中超过一个内容的时候会变成数组 remove_tag 从事件中删除标签如果存在convert 将字段值转换为另一种数据类型id 向现场事件添加唯一的IDlowercase 将字符串字段转换为其小写形式replace 用新值替换字段strip 删除开头和结尾的空格uppercase 将字符串字段转换为等效的大写字母update 用新值更新现有字段rename 重命名事件中的字段gsub 通过正则表达式替换字段中匹配到的值merge 合并数组或hash事件split通过指定的分隔符分割字段中的字符串为数组rename 重命名事件中的字段gsub 通过正则表达式替换字段中匹配到的值merge 合并数组或 hash 事件split 通过指定的分隔符分割字段中的字符串为数组
步骤一准备测试文件filebeat.conf
[rootnginx-test conf.d]#cat filebeat.conf
input{beats {port 5044}
}filter{grok{match { message %{IP:client_addr}.*\[(?quest_time.*)\] \%{WORD:quest_method} %{URIPATHPARAM:url_method} .*\ (?response_code\d) .* \(?referer_url.*)\ \(?agent.*)\.* }}mutate{remove_field [message,version,beat.name]add_field {f1 onef2 two}rename {source log_path}replace { agent computer }gsub [response_code, , 状态码 ]}date{match [quest_time, dd/MMM/YYYY:HH:mm:ss Z]target timestamptimezone Asia/Shanghai}
}output{elasticsearch{hosts [192.168.20.10:9200,192.168.20.8:9200,192.168.20.18:9200]index %{[fields][server_name]}-%{[fields][log_type]}-%{[fields][from]}-%{yyyy.MM.dd}}
}步骤二完成语法检测和启动对接 步骤三 刷新nginx访问页面 在kibana页面验证效果 拓展