如何使 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,

感谢您的回复,我这里有一个屏幕截图并尝试澄清问题。

我看到文件在那里。 transactiontrace id 也在那里。

我还看到类型也存在:

我想在 APM 页面上显示日志:

搜索 apm 索引后,我看到例如:

两个日志都存在这个id 我从 APM 搜索这个交易 ID,我可以在那里看到它

索引管理

为了让 APM 应用程序获取 Kibana 中的日志,您必须确保在 Kibana 的日志 UI 中配置存储日志的索引。

转到 Kibana 的日志部分 UI,然后转到顶部的设置。这是屏幕截图:

您需要确保您的日志索引包含在“日志索引”中。