3

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

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

Logstash 运行于http://localhost:9200

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

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

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

D:\wwwroot\日志\错误\

我的 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。请至少创建一个索引。如果您使用的是代理,请确保其配置正确。

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

4

1 回答 1

3

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

对于当前版本的 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 中的内容 - 以轻松验证数据和状态。

于 2013-10-30T17:26:24.597 回答