我想创建一个使用我的nginx访问日志中的数据发送的字节总数的可视化。在尝试创建“度量标准”可视化时,我不能将bytes
字段用作总和,因为它是字符串类型。
我无法在设置下更改它。
如何将此字段类型更改为数字/字节类型?
这是我的nginx访问日志的logstash配置
filter {
if [type] == "nginx-access" {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
geoip {
source => "clientip"
}
useragent {
source => "agent"
target => "useragent"
}
}
}
由于每个logstash索引都是作为索引创建的,我猜我需要在这里更改它。
我尝试添加
mutate {
convert => { "bytes" => "integer" }
}
但它似乎没有什么区别。
答案 0 :(得分:1)
使用映射配置字段类型,映射在索引级别配置,几乎不能更改。使用Logstash,因为每天都会创建一个新索引,所以如果您不想更改这些映射,请等待第二天或删除当前索引(如果可以的话)。
默认情况下,这些映射由Elasticsearch自动生成,具体取决于索引的JSON文档的语法和应用的索引模板:
# Type String
{"bytes":"123"}
# Type Integer
{"bytes":123}
最后有两个解决方案:
bytes
的字段nginx-access
为integer
类型→使用索引模板:索引模板API:
PUT _template/logstash-nginx-access
{
"order": 1,
"template": "logstash-*",
"mappings": {
"nginx-access": {
"properties": {
"bytes": {
"type": "integer"
}
}
}
}
}