【问题标题】:How to create field using Logstash and grok plugin如何使用 Logstash 和 grok 插件创建字段
【发布时间】:2019-10-21 13:30:44
【问题描述】:

我有一个以下格式的 tomcat 日志

10.0.6.35 - - [21/Oct/2019:00:00:04 +0000] "GET /rest/V1/productlist/category/4259/ar/final_price/asc/4/20 HTTP/1.1" 200 14970 12

我想创建最后两列的字段,即字节和持续时间,并想使用 Kibana 对其进行分析。我曾使用 Filebeat 和 Logstash 将数据传输到 Elasticsearch。

我的 Logstash 配置文件如下:

我尝试了以下配置,但在 kibana 上看不到该字段。

input {
     beats {
     port => 5044
  }
 }

filter {
  grok {
  match => ["message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes}(?m) %{NUMBER:duration}" ]
#match=>{"duration"=> "%{NUMBER:duration}"}
# match => { "message" => "%{COMBINEDAPACHELOG}" }

  }
#  mutate {
#    remove_field => ["@version", "@timestamp"]
#  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
if [fields][log_type] == "access-log"
{
elasticsearch {
  hosts => ["172.31.30.73:9200"]
  index => "%{[fields][service]}-%{+YYYY.MM.dd}"
 }
}
if [fields][log_type] == "application-log"
{
elasticsearch {
  hosts => ["172.31.30.73:9200"]
  index => "%{[fields][service]}-%{+YYYY.MM.dd}"
 }
}
else
{
  elasticsearch {
    hosts => ["172.31.30.73:9200"]
    index => "logstashhh-%{+YYYY.MM.dd}"
}

我希望持续时间和字节成为我在 Kibana 上的可视化字段。

【问题讨论】:

标签: elasticsearch logstash kibana logstash-grok


【解决方案1】:

试试这个作为你的logstash配置:

input {
     beats {
     port => 5044
  }
 }

filter {
  grok {
  match => ["message" => "%{NUMBER:bytes}(?m) %{NUMBER:duration}$" ]
#match=>{"duration"=> "%{NUMBER:duration}"}
# match => { "message" => "%{COMBINEDAPACHELOG}" }

  }
#  mutate {
#    remove_field => ["@version", "@timestamp"]
#  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
if [fields][log_type] == "access-log"
{
elasticsearch {
  hosts => ["172.31.30.73:9200"]
  index => "%{[fields][service]}-%{+YYYY.MM.dd}"
 }
}
if [fields][log_type] == "application-log"
{
elasticsearch {
  hosts => ["172.31.30.73:9200"]
  index => "%{[fields][service]}-%{+YYYY.MM.dd}"
 }
}
else
{
  elasticsearch {
    hosts => ["172.31.30.73:9200"]
    index => "logstashhh-%{+YYYY.MM.dd}"
}

【讨论】:

  • 感谢大家解决问题,我还有另一个问题想将 java apm 代理添加到我的脚本中。下面是我添加 apm-agent 的脚本,但它不起作用请帮助我 .mvn spring-boot:run -javaagent:/opt/elastic-apm-agent-1.10.0.jar -Delastic.apm.service_name=CatalogIngestorPlus - Delastic.apm.server_url=localhost:8200 -Delastic.apm.secret_token= -Delastic.apm.application_packages=org.example -Dspring-boot.run.jvmArguments="-Xms6g -Xmx8g" >> /tmp/searchnohup.out &退出 0 有什么问题。
  • 如果此答案解决了您的问题,请您将此答案标记为已接受。对于您的其他问题,请提出一个新问题,这样会更容易回答,谢谢
猜你喜欢
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多