Ped*_*lva 12 logging json elasticsearch logstash kibana
所以,我有一个Web平台,每个请求打印一个JSON文件,其中包含有关该请求的一些日志数据.我可以配置几个关于何时记录内容的规则,仅限于某些级别等...
现在,我一直在玩Logstash + Elasticsearch + Kibana3堆栈,我很想找到一种在Kibana中查看这些日志的方法.我的问题是,有没有办法让Logstash导入这些类型的文件,还是我必须为它编写自定义输入插件?我一直在寻找和看到我所看到的,插件是用Ruby编写的,这是一种我没有经验的语言.
gri*_*ure 20
Logstash是处理动态文件的非常好的工具.
以下是使用logstash将json文件导入elasticsearch的方法:
配置文件:
input
{
file
{
path => ["/path/to/json/file"]
start_position => "beginning"
sincedb_path => "/dev/null"
exclude => "*.gz"
}
}
filter
{
mutate
{
replace => [ "message", "%{message}" ]
gsub => [ 'message','\n','']
}
if [message] =~ /^{.*}$/
{
json { source => message }
}
}
output
{
elasticsearch {
protocol => "http"
codec => json
host => "localhost"
index => "json"
embedded => true
}
stdout { codec => rubydebug }
}
Run Code Online (Sandbox Code Playgroud)
json文件的示例:
{"foo":"bar", "bar": "foo"}
{"hello":"world", "goodnight": "moon"}
Run Code Online (Sandbox Code Playgroud)
请注意,json需要在一行中.如果要解析多行json文件,请替换配置文件中的相关字段:
input
{
file
{
codec => multiline
{
pattern => '^\{'
negate => true
what => previous
}
path => ["/opt/mount/ELK/json/*.json"]
start_position => "beginning"
sincedb_path => "/dev/null"
exclude => "*.gz"
}
}
filter
{
mutate
{
replace => [ "message", "%{message}}" ]
gsub => [ 'message','\n','']
}
if [message] =~ /^{.*}$/
{
json { source => message }
}
}
Run Code Online (Sandbox Code Playgroud)
Fre*_*Dog 12
Logstash只是一种工具,用于将各种syslog文件转换为JSON并将它们加载到elasticsearch(或graphite,或......)中.
由于您的文件已经是JSON,因此您不需要logstash.您可以使用curl将它们直接上传到elasticsearch.
请参阅将JSON文件导入/索引到Elasticsearch中
但是,为了与Kibana良好配合,您的JSON文件需要最少.
Flat - Kibana不会嵌套嵌套的JSON结构.您需要一个简单的键/值对散列.
有一个可识别的时间戳.
我建议的是查看JSON文件的logstash输出,看看是否可以按摩你的JSON文件以匹配该结构.您可以使用任何支持JSON的语言执行此操作.该程序jq
非常便于将json从一种格式过滤到另一种格式.
Logstash格式 - https://gist.github.com/jordansissel/2996677
jq - http://stedolan.github.io/jq/
归档时间: |
|
查看次数: |
40095 次 |
最近记录: |