我继承了一个logstash配置,如下所示。我不想做大的改动,因为我不想破坏任何正在工作的东西。指标以json的日志形式发送,格式为-“metric”:“度量名称”,“值”:“int”。这一直运行得很好。但是,新指标的值中需要有一个字符串。它并不是真正的指标,而是用字符串表示处理的状态。根据以下过滤器,它将所有内容转换为整数,值中的任何字符串都将转换为0。要求是,如果值是字符串,则不应尝试转换。谢谢!
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:ts} - M_%{DATA:task}_%{NUMBER:thread} - INFO - %{GREEDYDATA:jmetric}"}
remove_field => [ "message", "ecs", "original", "agent", "log", "host", "path" ]
break_on_match => false
}
if "_grokparsefailure" in [tags] {
drop {}
}
date {
match => ["ts", "ISO8601"]
target => "@timestamp"
}
json {
source => "jmetric"
remove_field => "jmetric"
}
split {
field => "points"
add_field => {
"metric" => "%{[points][metric]}"
"value" => "%{[points][value]}"
}
remove_field => [ "points", "event", "tags", "ts", "stream", "input" ]
}
mutate {
convert => { "value" => "integer" }
convert => { "thread" => "integer" }
}
}
1条答案
按热度按时间dohp0rv51#
即使你在logstash中处理事情,elasticsearch也会. -如果用默认值配置的话--进行动态Map,这可能会对你在logstash中的任何配置起作用。
请参阅Elasticsearch index templates
索引模板是在创建索引时通知Elasticsearch如何配置索引的一种方式。...索引模板可以包含组件模板的集合,也可以直接指定设置、Map和别名。
Map是pr index!这意味着当您应用新Map时,必须创建新索引。您可以“滚动”到新索引,或再次删除/导入数据。您的操作取决于您的数据、接收数据的方式等。ymmv...
无论如何,如果您的索引具有错误的Map,您将需要创建一个新的索引来获得新的Map。
PS!如果你有很多遗留数据,看看用于elasticsearch的
reindex
API。