- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个作为服务运行的 Logstash 实例,它从 Redis 读取数据并输出到 Elasticsearch。我只是注意到最近几天 Elasticsearch 中没有任何新内容,但是 Redis 列表在增加。
Logstash 日志充满了重复数千行的 2 个错误:
:message=>"Got error to send bulk of actions"
:message=>"Failed to flush outgoing items"
原因是:
{"error":"IllegalArgumentException[Malformed action/metadata line [107], expected a simple value for field [_type] but found [START_ARRAY]]","status":500},
此外,试图停止服务多次失败,我不得不杀死它。重新启动它会清空 Redis 列表并将所有内容导入 Elasticsearch。现在似乎工作正常。
但我不知道如何防止这种情况再次发生。提到的 type
字段被设置为每个输入指令的字符串,所以我不明白它怎么会变成一个数组。
我错过了什么?
我正在使用 Elasticsearch 1.7.1 和 Logstash 1.5.3。 logstash.conf
文件如下所示:
input {
redis {
host => "127.0.0.1"
port => 6381
data_type => "list"
key => "b2c-web"
type => "b2c-web"
codec => "json"
}
redis {
host => "127.0.0.1"
port => 6381
data_type => "list"
key => "b2c-web-staging"
type => "b2c-web-staging"
codec => "json"
}
/* other redis inputs, only key/type variations */
}
filter {
grok {
match => ["msg", "Cache hit %{WORD:query} in %{NUMBER:hit_total:int}ms. Network: %{NUMBER:hit_network:int} ms. Deserialization %{NUMBER:hit_deserial:int}"]
add_tag => ["cache_hit"]
tag_on_failure => []
}
/* other groks, not related to type field */
}
output {
elasticsearch {
host => "[IP]"
port => "9200"
protocol=> "http"
cluster => "logstash-prod-2"
}
}
最佳答案
根据您的日志消息:
{"error":"IllegalArgumentException[Malformed action/metadata line [107], expected a simple value for field [_type] but found [START_ARRAY]]","status":500},
您似乎正在尝试使用 type
字段索引文档,该字段是数组而不是字符串。
如果没有更多的 logstash.conf
文件,我帮不了你。但请检查以下内容以确保:
当您使用 add_field
更改 type
时,您实际上将 type
变成了一个 array
多个值,这正是 Elasticsearch 所提示的。
您可以使用mutate join
将数组转换为字符串:api link
filter {
mutate {
join => { "fieldname" => "," }
}
}
关于elasticsearch - Logstash 代理不再编制索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32354862/
假设您有一个无法清晰呈现的 R markdown 文档。 我知道您可以将 knitr block 选项 error 设置为 TRUE 以请求继续评估,即使存在错误也是如此。您可以通过 error =
我是一名优秀的程序员,十分优秀!