С Grok Debuger Я пытаюсь проанализировать некоторые пользовательские данные:
1 1 "Устройство 1" 1 "Вход 1" 0 "Вкл." Выкл. "" 2020 -01-01T00: 00: 00.1124303 + 00: 00 "
Пока у меня есть:
% {INT: id}% {INT: устройство}% { QUOTEDSTRING: имя_устройства}% {INT: input}% {QUOTEDSTRING: input_name}% {INT: состояние}% {QUOTEDSTRING: on_phrase}% {QUOTEDSTRING: off_phrase} \ "% {TIMESTAMP_ISO8601: когда} \"
Тем не менее, я получаю такие вещи, как двойные кавычки вокруг строк %{QUOTEDSTRING)
и два часа и минуты с указанием времени и даты %{TIMESTAMP_ISO8601:when}
{
"id": [
[
"1"
]
],
"device": [
[
"1"
]
],
"device_name": [
[
""Device 1""
]
],
"input": [
[
"1"
]
],
"input_name": [
[
""Input 1""
]
],
"state": [
[
"0"
]
],
"on_phrase": [
[
""On""
]
],
"off_phrase": [
[
""Off""
]
],
"when": [
[
"2020-01-01T00:00:00.1124303+00:00"
]
],
"YEAR": [
[
"2020"
]
],
"MONTHNUM": [
[
"01"
]
],
"MONTHDAY": [
[
"01"
]
],
"HOUR": [
[
"00",
"00"
]
],
"MINUTE": [
[
"00",
"00"
]
],
"SECOND": [
[
"00.1124303"
]
],
"ISO8601_TIMEZONE": [
[
"+00:00"
]
]
}
Кроме того, я немного застреваю, когда речь идет о logstash.conf
, так как я не уверен, что я бы назвал index
в output
. Следующий код взят из предыдущего примера из github:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
manage_template => false
index => "sample-%{+YYYY.MM.dd}"
}
}
Я предполагаю, что мой будет выглядеть примерно так:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{INT:id} %{INT:device} %{QUOTEDSTRING:device_name} %{INT:input} %{QUOTEDSTRING:input_name} %{INT:state} %{QUOTEDSTRING:on_phrase} %{QUOTEDSTRING:off_phrase} \"%{TIMESTAMP_ISO8601:when}\"" }
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
manage_template => false
index => "sample-%{????????}"
}
}
Опять же, мне неясно, кто я должен делать с "sample-%{????????}"