博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kibana配置logstash,报表一体化
阅读量:7231 次
发布时间:2019-06-29

本文共 2134 字,大约阅读时间需要 7 分钟。

Logstash:接收,处理,转发日志

Elasticsearch:文档型数据库,实时的分布式搜索和分析引擎
Kibana:查询、生成报表的web GUI

在安装目录bin文件夹里新建一个logstash.conf

一般配置如下:

# 输入输入input { stdin {} }# 数据处理filter {    grok {        match => ["message",  "%{COMBINEDAPACHELOG}"]    }}# 数据输出output { stdout { codec => rubydebug } }

配置文件语法类似Ruby

input: 数据的来源,一般是通过服务器+日志路径的方式

filter:以何种规则从字符串中提取出结构化的信息,grok是logstash里的一款插件,可以使用正则表达式匹配日志,上文中的%{COMBINEDAPACHELOG}是内置的正则,用来匹配apache access日志
默认正则:

# Log formatsSYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}# Log LevelsLOGLEVEL ([A-a]lert|ALERT|[T|t]race|TRACE|[D|d]ebug|DEBUG|[N|n]otice|NOTICE|[I|i]nfo|INFO|[W|w]arn?(?:ing)?|WARN?(?:ING)?|[E|e]rr?(?:or)?|ERR?(?:OR)?|[C|c]rit?(?:ical)?|CRIT?(?:ICAL)?|[F|f]atal|FATAL|[S|s]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)

output:配置保存解析结果

其中,重点讲解filter中的配置,基本格式如下,plugin都是官方提供的,针对文本做处理,比如正则表达式啊(grok),按固定的格式做切分(kv)等等。选择正确的plugin可以更快速的帮助你解析日志

filter {    plugin {        XX => "YY"    }    if expression {        plugin {             XX => "YY"        }    } else if expression {        plugin {            XX => "YY"        }    } else {        plugin {            XX => "YY"        }    }    plugin {        XX => "YY"    }}

1、grok:正则表达式插件,功能强大,有许多内置的pattern

2、mutate:字段的CRUD操作,比如替换内容,截取等等

mutate {    split=>{"error_request_info"=>",fromuid"}    add_field=>{"error_uri"=>"%{error_request_info[0]}"}    remove_field=>["error_request_info"]}

3、kv:key-value插件,非常适合URL参数解析一类的具有固定分隔符的日志

#比如解析URL的querystring: a=1&b=2&c=3filter {    kv {        field_split => "&"    }}

4、json:将json字符串直接转换成对应的key-value

#比如日志为:xxxxxxxxx:xxxxxx&result={"data":"1"}:xxxxxxfilter {    json {        #假设数据通过grok预处理,将result内容捕获        source => "result"    }}
#通过json encode后{  "data": "1"}

5、drop:直接丢掉本行日志,过滤不符合要求的日志

if "/app/log/logfront" in [content] {           # 特定的处理        drop {}  }

转载地址:http://ducfm.baihongyu.com/

你可能感兴趣的文章
dubbo源码分析系列——dubbo的SPI机制源码分析
查看>>
表格单元格td设置宽度无效的解决办法
查看>>
防止视频资源被下载
查看>>
都是并发惹的祸
查看>>
eclipse实现JavaWeb项目 增量打包
查看>>
面试题系列一之 程序生命周期
查看>>
设计模式——观察者模式:气象监测应用
查看>>
NSUserDefaults简介及如何使用 NSUserDefaults 存储自定义对象
查看>>
IntelliJ IDEA搭建SpringBoot
查看>>
深入浅出iOS事件机制
查看>>
hadoop理解
查看>>
Oracle——18用户、角色和权限信息的视图总结
查看>>
WordPress 中的 Debug 模式(调试模式)
查看>>
node下使用express框架,ejs模板引擎
查看>>
搜索:文本的匹配算法
查看>>
Fedora 17 LibreOffice 办公套件的安装与汉化
查看>>
scrollview不充满屏幕的原因
查看>>
PHP单例模式
查看>>
解密敏捷自动化测试
查看>>
DelphiMVC拦截器介绍
查看>>