【问题标题】:Logstash skipping to many log linesLogstash 跳到许多日志行
【发布时间】:2016-03-23 06:36:56
【问题描述】:

我在我的 Windows 机器上设置了 logstash。我在上面运行了 7 个 logstash 实例。每个都有一个文件夹,其中包含用于输入的日志文件。我同时运行它们并将其定向到运行 7 个 r3.xlarge 实例和 3 个主节点 (r3.xlarge) 的 AWS es 集群。所有输入文件加起来大约需要 9GB。在所有的 logstash 实例停止运行后,我在 elasticsearch 中只有 600 万个事件,应该有 3000 万个左右。我回到我的一个 logstash cmd 窗口,在那里我运行它并查看了最后一个事件。它与文件中的最后一个日志行不对应,它就像底部的第 50 行。然后在同一窗口中倒数第二个日志事件与我第一次查找之前的日志行不对应,我在日志文件中发现它上面大约 30 个日志行。所以很明显我的logstash正在跳过日志行。

现在我检查了我的弹性搜索,它显示全零,所以没有任何内容被丢弃? (我特别看bulk.rejected)

_cat/thread_pool?v

这些数据是累积的还是被刷新的?

这让我想到了第二个问题。如果 logstash 本身出于某种原因丢弃了日志行,我可以在哪里以及如何对其进行故障排除,我知道我的 logstash 实例都没有崩溃。我所知道的是,它愉快地丢弃了我所有日志的 70%,而且我没有错误日志或线索可以了解发生了什么。

编辑:

我的logstash配置:

(这就像它在周五、周六和周日输入我所有的日志,而只在周一 (3/21) 进行处理)

input {
  file {
    type => "apache_logs"
    path => "D:/logs/apache_logs/all/ssl_access.*"    
    start_position => "beginning"
    sincedb_path => "NUL"
  }

}

filter {

    grok {
        match => ["message","%{IPORHOST:client_ip} (?<username>[-]) (?<password>[-]) \[(?<timestamp>\d{2}[/][a-zA-Z]{3}[/]\d{4}:\d{2}:\d{2}:\d{2}\s-\d{0,4})\] \"%{GREEDYDATA:request}\" %{NOTSPACE:obssocookie} %{NOTSPACE:ps_sso_uid_in} %{NOTSPACE:ps_sso_uid_out} (?<status>[0-9]{3}) (?<bytes>[0-9]{1,}|-) %{NOTSPACE:protocol} %{NOTSPACE:ciphers} \"%{GREEDYDATA:referrer}\" \"%{GREEDYDATA:user_agent}\""]
        match => [ "path", "(?<app_node>webpr[0-9]{2}[a-z]{0,1})" ]
        add_field => { "server_node" => "%{app_node}" }
        break_on_match => false
    }

    mutate {
        gsub => ["obssocookie","^.*=",""]
    }

    mutate {
        gsub => ["ps_sso_uid_in","^.*=",""]
    }

    mutate {
        gsub => ["ps_sso_uid_out","^.*=",""]
    }

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

     geoip {
        source => "client_ip"
    }

    if [geoip] {
        mutate {
            add_field => {        
              "ip_type" => "public"     
            }
        }
    } else {
        mutate{
            add_field => {        
              "ip_type" => "private"        
            }
        }
    }

}

output {  
  stdout{ codec => rubydebug}
  amazon_es {
    hosts => ["apache-logs-xxxxxxxxxxxxxxxxxxxxxxxxxx.us-west-2.es.amazonaws.com"]
    region => "us-west-2"    
    aws_access_key_id => 'xxxxxxxxxxxxxxxxxx'
    aws_secret_access_key => 'xxxxxxxxxxxxxxxxxxxxx'
    index => "logstash-apache-friday"
  }
}

我怎样才能知道 logstash 专门丢弃了多少事件,而不是有多少弹性搜索被拒绝,因为我已经通过 API 和 bulk.rejected=0 进行了检查

【问题讨论】:

  • 你检查过logstash和elasticsearch日志吗?如果您有映射问题,可以删除文档。
  • windows 上的logstash 日志在哪里?当我处理数百万个事件的速度如此之快时,我怎么知道我在 logstash 中有映射问题?所以这真的很令人沮丧,即使在按顺序提供所有日志而不是分成几个实例之后,我也有与昨天相同数量的可搜索文档,有 7 个 logstash 实例......而且只有三分之一,除了花了 16 个小时这次加载所有日志 - 因为我没有并行执行,所以速度要慢得多。我真的很茫然,非常感谢一些帮助:)

标签: amazon-web-services elasticsearch logstash


【解决方案1】:

找到我的罪魁祸首。我必须将其包含在我的文件输入中,看起来它默认会跳过任何超过 24 小时的文件

ignore_older => 0

有点令人惊讶,当我想缩小输入范围时,我希望添加设置,否则 logstash 应该处理任何文件,无论是否超过 24 小时。真的不是很明显的东西..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多