Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 日志存储标记层次结构_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash - Fatal编程技术网 elasticsearch 日志存储标记层次结构,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 日志存储标记层次结构,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 日志存储标记层次结构

elasticsearch 日志存储标记层次结构,elasticsearch,logstash,elasticsearch,Logstash,我正在安装Logstash、ElasticSearch和Kibana,并试图实现一个可以呈现为树的日志层次结构 e、 g.采用如下层次结构:web->site1->access,web->site1->error,mail->list1->bounces等 然后有一个web界面,可以将其列为树: web | - site1 | - access | - error mail | -- list1 | -- bounces 因此,用户可

我正在安装Logstash、ElasticSearch和Kibana,并试图实现一个可以呈现为树的日志层次结构

e、 g.采用如下层次结构:
web->site1->access
web->site1->error
mail->list1->bounces

然后有一个web界面,可以将其列为树:

web 
  | - site1
        | - access
        | - error
mail
  | -- list1
         | -- bounces
因此,用户可以快速找到site1的访问日志

我可以编写web部件(或向Kibana添加自定义面板),但不确定如何配置Logstash/Elasticsearch来存储此部件

仅使用ElasticSearch,我尝试添加如下字段:

POST /test/logs
{
    "types": ["web", "site1", "access"],
    "message":"access log line 1"
}
POST /test/logs
{
    "types": ["mail", "list1", "bounces"],
    "message":"access log line 1"
}
...
但是
类型
数组被拆分(标记化了?),因此,当我执行facets查询时,我会返回所有单个数组值组合的列表。这可能是你想要的,如果这些是标签,但不是在我的情况下


在Logstash/ElasticSearch中是否可以存储标签的层次结构,如果可以,如何存储?

这是一种奇怪的做法

您可以添加新字段,例如:

hostname: mail
site: site1
maillist: list1
log: access
然后在您的查询中更加具体:

hostname:web AND site:site1 AND log:access
提供一些准备好的仪表盘,用户可以调整这些仪表盘的值以获得所需的值

否则,您需要使用语法和

Eg(未经测试)

如果从一开始就以JSON格式发送日志,那么只需添加更多嵌套JSON对象即可创建嵌套字段。例如:

{
"message": "GET /interestingpage?param1=value1 HTTP/1.1 404",
"tags": [
    "tag1",
    "tag2",
    "tag3",
    "valve"
],
"@timestamp": "2013-10-24T20:23:46.222Z",
"field3": "value3",
"field2": "value2",
"level": "ERROR",
"http": {
    "request_protocol": "HTTP/1.1",
    "response_headers": {},
    "request_querystring": "param1=value1",
    "remote_user": null,
    "request_headers": {
        "Referer": null,
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
    },
    "response_size": 985,
    "response_status": 404,
    "request_parameters": {
        "param1": [
            "value1"
        ]
    },
    "request_uri": "/interestingpage",
    "remote_host": "192.168.1.208",
    "server_name": "192.168.1.67",
    "request_method": "GET",
    "response_duration": 27,
    "cookies": {}
},
"hostname": "precise64",
"field1": "value1",
"@version": "1",
"user": "tomcat7"
}
kibana中的嵌套字段为。(点)在字段列表中分隔。但您可以使用字段过滤器缩小范围以找到所需内容

{
"message": "GET /interestingpage?param1=value1 HTTP/1.1 404",
"tags": [
    "tag1",
    "tag2",
    "tag3",
    "valve"
],
"@timestamp": "2013-10-24T20:23:46.222Z",
"field3": "value3",
"field2": "value2",
"level": "ERROR",
"http": {
    "request_protocol": "HTTP/1.1",
    "response_headers": {},
    "request_querystring": "param1=value1",
    "remote_user": null,
    "request_headers": {
        "Referer": null,
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"
    },
    "response_size": 985,
    "response_status": 404,
    "request_parameters": {
        "param1": [
            "value1"
        ]
    },
    "request_uri": "/interestingpage",
    "remote_host": "192.168.1.208",
    "server_name": "192.168.1.67",
    "request_method": "GET",
    "response_duration": 27,
    "cookies": {}
},
"hostname": "precise64",
"field1": "value1",
"@version": "1",
"user": "tomcat7"
}