如何将值设置为 logstash 中的空 xml 字段
How can I set a value to an empty xml field in logstash
我收到一些带有 logstash 的 xml 消息,我解析这些消息以获得相关信息
if ([message] =~ /^</) {
xml {
source => "message"
store_xml => false
xpath => [
"name(/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/*[not(self::METADATA)])","MESSAGE_TYPE",
]
target => "xml"
}
if ([MESSAGE_TYPE] == "") {
mutate {
update => { "MESSAGE_TYPE" => "EDITO" }
}
}
}
我的目标是获取所有 MESSAGE_TYPE,如果为空,则将其设置为 EDITO。
现在我可以在 kibana 中看到带有 (MESSAGE_TYPE.raw:"") 的空消息,但我没有看到任何 EDITO MESSAGE_TYPE.
我有一些 MESSAGE_TYPE:文本、材料、照片但没有编辑(只有空消息)
所以总结起来,空字符串应该是EDITO
我已经阅读了一些文档 (https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-replace https://groups.google.com/forum/#!msg/logstash-users/mKJVO6yAmSc/on9mLRtLgTYJ),但仍然没有运气
至少我有:)
我必须安装一个 logstash 插件(更改:https://www.elastic.co/guide/en/logstash/current/plugins-filters-alter.html)
这里是 logstash conf
xml {
add_field => { "genre" => "xml"}
source => "message"
store_xml => false
xpath => [
"/APIOS_MOM_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE",
"/APISTAT_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR","VECTORS",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@NAME","VECTOR_NAME",
"/APIOS_MOM_EVENT/INFO_EVENT/SENDER/text()","SENDER",
"/APISTAT_EVENT/INFO_EVENT/SENDER/text()","SENDER",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@ONLINE","ON_LINE",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@OFFLINE","OFF_LINE",
"name(/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/*[not(self::METADATA)])","MESSAGE_TYPE",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/CODE_OFFRE_WEB/text()","OFFRE_WEB"
]
target => "xml"
}
alter {
condrewrite => [
"MESSAGE_TYPE","","EDITO"
]
}
现在我的 EDITO 信息正确了
此插件将成为 logstash 核心的一部分(此插件提供的功能可能会在未来版本中合并到 mutate 过滤器中。)
我收到一些带有 logstash 的 xml 消息,我解析这些消息以获得相关信息
if ([message] =~ /^</) {
xml {
source => "message"
store_xml => false
xpath => [
"name(/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/*[not(self::METADATA)])","MESSAGE_TYPE",
]
target => "xml"
}
if ([MESSAGE_TYPE] == "") {
mutate {
update => { "MESSAGE_TYPE" => "EDITO" }
}
}
}
我的目标是获取所有 MESSAGE_TYPE,如果为空,则将其设置为 EDITO。 现在我可以在 kibana 中看到带有 (MESSAGE_TYPE.raw:"") 的空消息,但我没有看到任何 EDITO MESSAGE_TYPE.
我有一些 MESSAGE_TYPE:文本、材料、照片但没有编辑(只有空消息)
所以总结起来,空字符串应该是EDITO
我已经阅读了一些文档 (https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-replace https://groups.google.com/forum/#!msg/logstash-users/mKJVO6yAmSc/on9mLRtLgTYJ),但仍然没有运气
至少我有:) 我必须安装一个 logstash 插件(更改:https://www.elastic.co/guide/en/logstash/current/plugins-filters-alter.html) 这里是 logstash conf
xml {
add_field => { "genre" => "xml"}
source => "message"
store_xml => false
xpath => [
"/APIOS_MOM_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE",
"/APISTAT_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR","VECTORS",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@NAME","VECTOR_NAME",
"/APIOS_MOM_EVENT/INFO_EVENT/SENDER/text()","SENDER",
"/APISTAT_EVENT/INFO_EVENT/SENDER/text()","SENDER",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@ONLINE","ON_LINE",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@OFFLINE","OFF_LINE",
"name(/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/*[not(self::METADATA)])","MESSAGE_TYPE",
"/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/CODE_OFFRE_WEB/text()","OFFRE_WEB"
]
target => "xml"
}
alter {
condrewrite => [
"MESSAGE_TYPE","","EDITO"
]
}
现在我的 EDITO 信息正确了
此插件将成为 logstash 核心的一部分(此插件提供的功能可能会在未来版本中合并到 mutate 过滤器中。)