【问题标题】:Logstash not importing files due to missing index error由于缺少索引错误,Logstash 未导入文件
【发布时间】:2013-11-08 22:36:21
【问题描述】:

我很难让 Logstash、Elasticsearch 和 Kibana 的组合在我的 Windows 7 环境中工作。

我已经设置了所有 3 个,它们似乎都运行良好,Logstash 和 Elasticsearch 作为 Windows 服务运行,Kibana 作为 IIS 中的网站运行。

Logstash 从 http://localhost:9200 运行

我有一个 Web 应用程序以 .txt 格式创建日志文件,格式为:

日期时间=[日期时间],值=[xxx]

在此目录中创建日志文件:

D:\wwwroot\Logs\Errors\

我的 logstash.conf 文件如下所示:

input {

  file {
    format => ["plain"]
    path => ["D:\wwwroot\Logs\Errors\*.txt"]
    type => "testlog"
   }
}


output {
  elasticsearch {
        embedded => true
    }
}

我的 Kibana config.js 文件如下所示:

define(['settings'],
function (Settings) {


return new Settings({

elasticsearch: "http://localhost:9200",

kibana_index: "kibana-int",

panel_names: [
  'histogram',
  'map',
  'pie',
  'table',
  'filtering',
  'timepicker',
  'text',
  'fields',
  'hits',
  'dashcontrol',
  'column',
  'derivequeries',
  'trends',
  'bettermap',
  'query',
  'terms'
]
});
});

当我查看 Kibana 时,我看到了错误:

http://localhost:9200/_all/_mapping 找不到索引。请至少创建一个索引。如果您使用的是代理,请确保其配置正确。

我不知道如何创建索引,所以如果有人能阐明我做错了什么,那就太好了。

【问题讨论】:

  • elasticsearch 中好像没有数据?你开始用logstash索引东西了吗?日志文件 logstash 中的内容是否指向?
  • 您是在 Windows 中将 logstash 运行到集中式版本还是独立版本中?因为我试图找到一种在 Windows 中使用集中式选项的方法,但我做不到。如果你做到了,任何帮助对我来说都是非常宝贵的。 stackoverflow.com/questions/23907747/…

标签: windows iis elasticsearch logstash kibana


【解决方案1】:

目前似乎没有任何东西可以进入弹性搜索。

对于当前版本的 es (0.90.5),我不得不使用 elasticsearch_http 输出。 elasticsearch 输出似乎与 0.90.3 的关联过于紧密。

例如:这是我的 log4j 格式到弹性搜索的配置

input {
  file {
    path => "/srv/wso2/wso2am-1.4.0/repository/logs/wso2carbon.log"
    path => "/srv/wso2/wso2as-5.1.0/repository/logs/wso2carbon.log"
    path => "/srv/wso2/wso2is-4.1.0/repository/logs/wso2carbon.log"
    type => "log4j"
  }
}

output {
  stdout { debug => true debug_format => "ruby"}

  elasticsearch_http {
    host => "localhost"
    port => 9200    
  }
}

对于我的文件格式,我也有一个 grok 过滤器 - 可以正确解析它。

filter {
      if [message] !~ "^[ \t\n]+$" {
        # if the line is a log4j type
        if [type] == "log4j" {
          # parse out fields from log4j line
          grok {
            match => [ "message", "TID:%{SPACE}\[%{BASE10NUM:thread_name}\]%{SPACE}\[%{WORD:component}\]%{SPACE}\[%{TIMESTAMP_ISO8601:timestamp}\]%{SPACE}%{LOGLEVEL:level}%{SPACE}{%{JAVACLASS:java_file}}%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}" ]
            add_tag => ["test"]
          }

          if "_grokparsefailure" not in [tags] {
            mutate {
              replace => ["message", " "]
            }
          } 
          multiline {
            pattern => "^TID|^ $"
            negate => true
            what => "previous"
            add_field => {"additional_log" => "%{message}"}
            remove_field => ["message"]
            remove_tag => ["_grokparsefailure"]
          }
          mutate {
            strip => ["additional_log"]
            remove_tag => ["test"]
            remove_field => ["message"]
          }

        }
      } else {
        drop {}
      }
    }

另外,我会使用 elasticsearch head 插件来监控您在 elasticsearch 中的内容 - 以轻松验证数据及其所处的状态。

【讨论】:

  • 谢谢,我将尝试使用 elasticsearch_http 和与您的 logstash.conf 文件相同的格式。会让你知道我的进展情况。
  • @Tim elasticsearchelasticsearch_http 有什么不同?
  • 带有elasticsearch输出的logstash会加入elasticsearch集群。使用 elasticsearch_http,输出将通过 http 提供。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2018-03-04
  • 2012-06-20
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
相关资源
最近更新 更多