Lua resty_dogstatsd只发布第一个实例

时间:2018-05-23 07:10:06

标签: lua datadog

我有一个公制客户端,看起来像:

package.path = package.path .. ';../?.lua'

local metrics = {}

local resty_dogstatsd = require('resty_dogstatsd')
local logger = require('module.utils.logger')
local _statsd = resty_dogstatsd.new({
    statsd = {
        host = config.dataDog.host,
        port = config.dataDog.port,
        namespace = config.dataDog.namespace
    },
    tags = config.dataDog.tags
})

function metrics.incMetric1 ()
    logger.debug('Updating metric metric1');

    _statsd:increment(metric1 1, 1)
end

return metrics;

然后在我的应用程序中导入并使用它

local metrics = require('module.metrics')

-- somewhere, some condition
metrics.incMetric1()

这会在datadog中发布日志Updating metric metric1,我可以看到它。但这只会发布第一个实例。在我重新启动service nginx restart之前,我不会再获得任何增量。

更新

所以我在start.lua中有一个/etc/nginx/conf.d/start.lua

package.path = package.path .. ';/path/to/my/app/?.lua'

local app = require('app.init');
app.start()

nginx配置是

rewrite_by_lua_file /etc/nginx/conf.d/start.lua;

如果我要将度量标准代码复制/粘贴到start.lua,则每次都会更新度量标准。为什么是这样?!

更新

我在错误日志中注意到了这一点:

2018/05/23 10:02:07 [error] 24483#0: *6 attempt to send data on a closed socket: u:some-hex, c:some-hex, client: 123.12.0.123, server: *.my-url.com, request: "GET / HTTP/1.1", host: "my.my-url.com"

这发生在对nginx的第二次请求上;重新启动后第一次,这一切都很好......

更新2

只有当我有一个metrics文件且require在我的另一个文件中时,才会发生这种情况。因此,如果我在主lua文件中实例化resty_dogstatsd客户端,那么一切都很好......

0 个答案:

没有答案