【问题标题】:Desired fields did get create after modifying logstash config修改 logstash 配置后确实创建了所需的字段
【发布时间】:2021-07-07 10:21:49
【问题描述】:

我创建了两个不同的弹性搜索集群。

在第一个集群(新创建),(v 7.13.2)中,我在 conf.d 下的 pipeline.conf 中为 logstash 创建了下面的配置,它工作正常,因为我看到在索引中创建了预期的字段。我从堆栈管理->索引管理->只有一个索引(因为数据没有定期生成)-->单击它后,在映射选项卡中验证了这一点。

input {
    beats {
        port => "5044"
    }
}
filter {
    grok {
        match => { "message" => "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:%{MINUTE}(?::?%{SECOND})\| %{USERNAME:exchangeId}\| %{DATA:trackingId}\| %{NUMBER:RoundTrip:int}%{SPACE}ms\| %{NUMBER:ProxyRoundTrip:int}%{SPACE}ms\| %{NUMBER:UserInfoRoundTrip:int}%{SPACE}ms\| %{DATA:Resource}\| %{DATA:subject}\| %{DATA:authmech}\| %{DATA:scopes}\| %{IPV4:Client}\| %{WORD:method}\| %{DATA:Request_URI}\| %{INT:response_code}\| %{DATA:failedRuleType}\| %{DATA:failedRuleName}\| %{DATA:APP_Name}\| %{DATA:Resource_Name}\| %{DATA:Path_Prefix}"} 
    }
}
output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

已经在运行的第二个集群(7.4.0),它有以下配置

if [log_type] == "access_server" and [app_id] == "as"
  {
    mutate { gsub => ["message","\|"," "] } grok { patterns_dir => ["/etc/logstash/patterns"] match => { "message" => "%{MY_DATE_PATTERN:timestamp}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{UUID:ConsentID}%{SPACE}%{WORD:TransactionID}%{SPACE}%{WORD:TraceID}%{SPACE}%{GREEDYDATA:messagetext}" } }
    mutate {
             replace => {
               "[type]" => "access_server"
             }
           }
  }

output {
if [log_type] == "access_server" {
  elasticsearch {
    hosts => ['http://14.1.1.50:9200']
    index => "%{type}-%{+YYYY.MM.dd}"
        user => elastic
    password => NfBxxxxx
      }
 }

elasticsearch {
    hosts => ['http://14.1.1.50:9200']
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    user => elastic
    password => NfBxxxxx
  }
}

我昨天(21 年 7 月 6 日)将配置文件修改为下面,以根据所需的数据类型拥有单独的字段,(根据上面的第一个集群配置)

if [log_type] == "access_server" and [app_id] == "as"
  {
    mutate { gsub => ["message","\|"," "] } grok { patterns_dir => ["/etc/logstash/patterns"] match => { "message" => "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:%{MINUTE}(?::?%{SECOND})\| %{USERNAME:exchangeId}\| %{DATA:trackingId}\| %{NUMBER:RoundTrip:int}%{SPACE}ms\| %{NUMBER:ProxyRoundTrip:int}%{SPACE}ms\| %{NUMBER:UserInfoRoundTrip:int}%{SPACE}ms\| %{DATA:Resource}\| %{DATA:subject}\| %{DATA:authmech}\| %{DATA:scopes}\| %{IPV4:Client}\| %{WORD:method}\| %{DATA:Request_URI}\| %{INT:response_code}\| %{DATA:failedRuleType}\| %{DATA:failedRuleName}\| %{DATA:APP_Name}\| %{DATA:Resource_Name}\| %{DATA:Path_Prefix}" } }
    mutate {
             replace => {
               "[type]" => "access_server"
             }
           }
  }

output {

  if [log_type] == "access_server" {
  elasticsearch {
    hosts => ['http://14.1.1.50:9200']
    index => "%{type}-%{+YYYY.MM.dd}"
        user => elastic
    password => NfBxxxxxx
      }
 }

elasticsearch {
    hosts => ['http://14.1.1.50:9200']
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    user => elastic
    password => NfBxxxxxx
  }

并重新启动了 logstash,但今天的 access_server 索引没有上述各个字段。

上述两个集群之间的区别在于,我为测试上述场景(v 7.13.2)而创建的第一个集群只有一个索引(它索引旧的日志文件并且每天都没有创建新的日志文件),我已经在 kibana 中创建了它的索引模式,但是在已经运行的第二个集群中有 access_server 的每日索引,但我没有创建它的索引模式,所以我查看了今天的 access_server 索引,但它没有所需的单个字段,但我认为主要问题是因为我上面提到的 pipeline.conf 文件中的配置。

您能否告诉我修改后的 pipeline.conf 文件中有什么不正确的地方,因为我仍然无法在今天的索引中看到单个消息字段。

【问题讨论】:

  • 嗨,有人可以回复吗。
  • 你能把你的access_server 日志文件中的一行发给别人来实际测试一下吗?
  • @JBone,抱歉回复晚了。这是2021-06-26T04:50:10,467| YerhHTEWoROUdQ| | 6 ms| 3 ms| 0 ms| devel.dev.next2.only.io [] / /*:443| | | | 152.49.95.120| GET| /component---src-pages-products-isp-js-780354591ab39a6d4f3.js| 200| | | Dev SPA| Root Resource| /*
  • 得到如下结果

标签: elasticsearch logstash kibana logstash-grok grok


【解决方案1】:

可以通过在logstash.conf下面添加得到想要的结果,

if [log_type] == "access_server" and [app_id] == "as"
  {
    grok {
        match => { "message" => "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:%{MINUTE}(?::?%{SECOND})\| %{USERNAME:exchangeId}\| %{DATA:trackingId}\| %{NUMBER:RoundTrip:int}%{SPACE}ms\| %{NUMBER:ProxyRoundTrip:int}%{SPACE}ms\| %{NUMBER:UserInfoRoundTrip:int}%{SPACE}ms\| %{DATA:Resource}\| %{DATA:subject}\| %{DATA:authmech}\| %{DATA:scopes}\| %{IPV4:Client}\| %{WORD:method}\| %{DATA:Request_URI}\| %{INT:response_code}\| %{DATA:failedRuleType}\| %{DATA:failedRuleName}\| %{DATA:APP_Name}\| %{DATA:Resource_Name}\| %{DATA:Path_Prefix}" } }
    mutate {
             replace => {
               "[type]" => "access_server"
             }
           } 
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多