Kibana 和 Logstash:什么时候字段不再是字段?

Kibana 和 Logstash:什么时候字段不再是字段?

我已grok在 logstash 配置中启用了过滤器,以便使用%{HAPROXYHTTP}%{HAPROXYTCP}模式解析来自 HAProxy 的日志。这似乎很有效,查看来自 haproxy 的任何日志条目的详细信息时,我可以看到各种提取的字段(bytes_read、client_ip、client_port、termination_state、actconn、feconn 等)。

但是在 Kibana 的“创建新的可视化”屏幕中,配置 Y 轴时,“字段”弹出窗口中均不可用这些字段。

我需要做什么才能使这些提取的字段可用于可视化?

答案1

Kibana 独立跟踪 ElasticSearch 映射,因此它可以在 ES 数据类型和 Kibana 使用的字段类型之间进行转换。该映射列表需要更新。您可以在管理 --> 索引模式中找到它。进入索引模式列表后,选择已添加字段的索引,然后单击圆形刷新按钮(当然,它位于垃圾按钮旁边)。它会提醒您它正在重置字段的流行度数字;但没关系,您希望它看到新的。

答案2

@sysadmin1138 的答案解决了一半的问题。其他问题的一半在于,出于当时看来很好但现在看来极其短视的原因,logstash 模式哈普罗西不要为字段提供显式的数据类型。例如,HAPROXYTCP定义为:

HAPROXYTCP (?:%{SYSLOGTIMESTAMP:syslog_timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{IP:client_ip}:%{INT:client_port} \[%{HAPROXYDATE:accept_date}
\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_queue}/%{INT:time_backend_connect}/%{NOTSPACE:time_duration} %{NOTSPACE:bytes_read} %{NOTSPACE:termin
ation_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue}

例如,由于bytes_read定义为%{NOTSPACE:bytes_read},因此它是一种string数据类型,因此不可用于可视化。修复此问题意味着在索引模板中创建自定义映射您稍后会用任何数据填充它,因此(a)抛弃所有现有数据,(b)找出所有要使用但输入错误的字段的列表。

(注意:这对于模式来说似乎也是正确的httpd,例如%{HTTPD_COMMONLOG}。并且可能对其他所有事物也适用。)

相关内容