Graylog2没有在特定流中显示任何消息

时间:2013-09-05 08:26:01

标签: regex symfony monolog graylog2

在我们的Symfony2应用程序中,我们查询外部API以获取我们提供的特定服务。这个API(我们称之为Acme API)有时会抛出我们通过Monolog和Gelf转发给Graylog2的错误消息,以跟踪中断。使用error $logger->err()级别记录每个错误。

消息显示在普通消息池中,但收集这些API错误消息的自定义流根本不显示任何消息。

所以我的主要问题是:为什么Graylog拒绝在流中显示消息,我们可以做些什么来改变这种行为?


配置

目前共有35个流(这是因为我们的服务器上有很多应用程序)。

给Monolog的每条消息都有相同的模式:

Acme API Error on "{user action}": {error description}. Additional information: "{more information provided from the API}" on server "{web server name}" and domain "{domain}" for user "{session ID}"

Graylog流规则如下:

Host (regex): ^((?!mycompany-staging).)*$    // Needed to show only logs from the live servers
Facility: app
Full Message (regex): Acme API.*

(我们还尝试将Full Message regex设置为.*Acme API.*Acme API Error.*,但这些都不起作用)

monolog配置如下:

// config_prod.yml

// ...
monolog:
    handlers:
        main:
            type:         fingers_crossed
            action_level: error
            handler:      nested
            level:        debug
        nested:
            type:         stream
            path:         %kernel.logs_dir%/%kernel.environment%.log
            level:        debug
        graylog:
            type:         gelf
            level:        warning
            publisher:
                hostname: mycompany-monitoring.mycompany.ch
// ...

1 个答案:

答案 0 :(得分:0)

Graylog2本身存在问题,在将Graylog更新到最新版本并重新创建流后,流开始正常工作。