如何使 python ELK APM 日志关联工作
How to make python ELK APM log correlation works
我正在使用 python 和 ecs_logg
https://www.elastic.co/guide/en/ecs-logging/python/current/installation.html。它输出到一个文件。
然后我有一个 logstash 读取日志。这是日志的示例
{"@timestamp":"2022-03-31T11:55:49.303Z","log.level":"warning","message":"Cannot get float field. target_field: fxRate","ecs":{"version":"1.6.0"},"log":{"logger":"parser.internal.convertor","origin":{"file":{"line":317,"name":"convertor.py"},"function":"__get_double"},"original":"Cannot get float field. target_field: fxRate"},"process":{"name":"MainProcess","pid":15124,"thread":{"id":140000415979328,"name":"MainThread"}},"service":{"name":"Parser"},"trace":{"id":"264c816a6cdd1f92a26dfad80bdc3e91"},"transaction":{"id":"a8a1ed2ab0b38ca0"}}
这是我的 logstash 的配置:
input {
file {
path => ["/usr/share/logstash/logs/*.log"]
type => "log"
start_position => "beginning"
}
}
filter {
json {
# Move keys from 'message' json log to root level
source => "message"
}
mutate {
id => "Transform"
# Define the environment such as dev, uat, prod...
add_field => {
"environment" => "dev"
}
# Rename 'msg' key from json log to 'message'
rename => {
"msg" => "message"
}
# Add service name from `tag`
copy => {
"tag" => "service.name"
}
}
}
logstash好像没有索引字段插入到ELK中。结果交易 id 没有提取出来,APM 无法与日志关联。
请问logstash配置中缺少什么部分?以及如何激活对数关联。
谢谢
嗨@Colton,
感谢您的回复,我这里有一个屏幕截图并尝试澄清问题。
我看到文件在那里。 transaction
和 trace
id 也在那里。
我还看到类型也存在:
我想在 APM 页面上显示日志:
搜索 apm 索引后,我看到例如:
两个日志都存在这个id
我从 APM 搜索这个交易 ID,我可以在那里看到它
索引管理
为了让 APM 应用程序获取 Kibana 中的日志,您必须确保在 Kibana 的日志 UI 中配置存储日志的索引。
转到 Kibana 的日志部分 UI,然后转到顶部的设置。这是屏幕截图:
您需要确保您的日志索引包含在“日志索引”中。
我正在使用 python 和 ecs_logg
https://www.elastic.co/guide/en/ecs-logging/python/current/installation.html。它输出到一个文件。
然后我有一个 logstash 读取日志。这是日志的示例
{"@timestamp":"2022-03-31T11:55:49.303Z","log.level":"warning","message":"Cannot get float field. target_field: fxRate","ecs":{"version":"1.6.0"},"log":{"logger":"parser.internal.convertor","origin":{"file":{"line":317,"name":"convertor.py"},"function":"__get_double"},"original":"Cannot get float field. target_field: fxRate"},"process":{"name":"MainProcess","pid":15124,"thread":{"id":140000415979328,"name":"MainThread"}},"service":{"name":"Parser"},"trace":{"id":"264c816a6cdd1f92a26dfad80bdc3e91"},"transaction":{"id":"a8a1ed2ab0b38ca0"}}
这是我的 logstash 的配置:
input {
file {
path => ["/usr/share/logstash/logs/*.log"]
type => "log"
start_position => "beginning"
}
}
filter {
json {
# Move keys from 'message' json log to root level
source => "message"
}
mutate {
id => "Transform"
# Define the environment such as dev, uat, prod...
add_field => {
"environment" => "dev"
}
# Rename 'msg' key from json log to 'message'
rename => {
"msg" => "message"
}
# Add service name from `tag`
copy => {
"tag" => "service.name"
}
}
}
logstash好像没有索引字段插入到ELK中。结果交易 id 没有提取出来,APM 无法与日志关联。
请问logstash配置中缺少什么部分?以及如何激活对数关联。
谢谢
嗨@Colton,
感谢您的回复,我这里有一个屏幕截图并尝试澄清问题。
我看到文件在那里。 transaction
和 trace
id 也在那里。
我还看到类型也存在:
我想在 APM 页面上显示日志:
搜索 apm 索引后,我看到例如:
两个日志都存在这个id 我从 APM 搜索这个交易 ID,我可以在那里看到它
索引管理
为了让 APM 应用程序获取 Kibana 中的日志,您必须确保在 Kibana 的日志 UI 中配置存储日志的索引。
转到 Kibana 的日志部分 UI,然后转到顶部的设置。这是屏幕截图:
您需要确保您的日志索引包含在“日志索引”中。