Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

help request: Getting an error with log_labels in loki-logger #9848

Closed
yujinchoi-94 opened this issue Jul 17, 2023 · 2 comments · Fixed by #9850
Closed

help request: Getting an error with log_labels in loki-logger #9848

yujinchoi-94 opened this issue Jul 17, 2023 · 2 comments · Fixed by #9850
Assignees
Labels
bug Something isn't working

Comments

@yujinchoi-94
Copy link

Description

Hi,

I'm trying to use recently released loki-logger plugin.
I'm adding more nginx related labels in log_labels field.
However, nginx label doesn't work and getting error like this.

2023/07/17 04:39:17 [error] 49#49: *20640837 lua entry thread aborted: runtime error: /usr/local/apisix/apisix/core/utils.lua:299: attempt to index upvalue '_ctx' (a nil value)
stack traceback:
coroutine 0:
	/usr/local/apisix/apisix/core/utils.lua: in function 'replace'
	/usr/local/openresty/lualib/resty/core/regex.lua:1003: in function 're_gsub'
	/usr/local/apisix/apisix/core/utils.lua:324: in function 'resolve_var'
	/usr/local/apisix/apisix/plugins/loki-logger.lua:201: in function 'func'
	/usr/local/apisix/apisix/utils/batch-processor.lua:88: in function </usr/local/apisix/apisix/utils/batch-processor.lua:80>, context: ngx.timer, client: 10.192.169.127, server: 0.0.0.0:9080

Here's what I've tried

...
    - config:
        endpoint_addrs:
        - http://loki-loki-distributed-gateway.monitor.svc.cluster.local:80
        include_req_body: true
        include_req_body_expr:
        - - http_response_status
          - ~*
          - "200"
        include_resp_body: true
        include_resp_body_expr:
        - - http_response_status
          - ~*
          - "200"
        log_labels:
          host: $host
          job: apisix
          method: $request_method

Is there anything wrong with the above configuration?

Thanks in advance :)

Environment

  • APISIX version (run apisix version):
apisix version
/usr/local/openresty//luajit/bin/luajit ./apisix/cli/apisix.lua version
3.4.0
  • Operating system (run uname -a):
uname -a
Linux dev-apisix-95d499896-n4745 5.10.184-175.731.amzn2.x86_64 #1 SMP Tue Jun 27 21:48:55 UTC 2023 x86_64 GNU/Linux
  • OpenResty / Nginx version (run openresty -V or nginx -V):
nginx -V
nginx version: openresty/1.21.4.1
built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
built with OpenSSL 1.1.1s  1 Nov 2022
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt='-O2 -DAPISIX_BASE_VER=1.21.4.1.8 -DNGX_GRPC_CLI_ENGINE_PATH=/usr/local/openresty/libgrpc_engine.so -DNGX_HTTP_GRPC_CLI_ENGINE_PATH=/usr/local/openresty/libgrpc_engine.so -DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/zlib/include -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl111/include' --add-module=../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.33 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.09 --add-module=../srcache-nginx-module-0.32 --add-module=../ngx_lua-0.10.21 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.9 --add-module=../ngx_stream_lua-0.0.11 --with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib -Wl,-rpath,/usr/local/openresty/wasmtime-c-api/lib -L/usr/local/openresty/zlib/lib -L/usr/local/openresty/pcre/lib -L/usr/local/openresty/openssl111/lib -Wl,-rpath,/usr/local/openresty/zlib/lib:/usr/local/openresty/pcre/lib:/usr/local/openresty/openssl111/lib' --add-module=/tmp/tmp.kOo9UFlgbS/openresty-1.21.4.1/../mod_dubbo-1.0.2 --add-module=/tmp/tmp.kOo9UFlgbS/openresty-1.21.4.1/../ngx_multi_upstream_module-1.1.1 --add-module=/tmp/tmp.kOo9UFlgbS/openresty-1.21.4.1/../apisix-nginx-module-1.12.0 --add-module=/tmp/tmp.kOo9UFlgbS/openresty-1.21.4.1/../apisix-nginx-module-1.12.0/src/stream --add-module=/tmp/tmp.kOo9UFlgbS/openresty-1.21.4.1/../apisix-nginx-module-1.12.0/src/meta --add-module=/tmp/tmp.kOo9UFlgbS/openresty-1.21.4.1/../wasm-nginx-module-0.6.4 --add-module=/tmp/tmp.kOo9UFlgbS/openresty-1.21.4.1/../lua-var-nginx-module-v0.5.3 --add-module=/tmp/tmp.kOo9UFlgbS/openresty-1.21.4.1/../grpc-client-nginx-module-v0.4.2 --with-poll_module --with-pcre-jit --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_v2_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_secure_link_module --with-http_random_index_module --with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-threads --with-compat --with-stream --with-http_ssl_module
  • etcd version, if relevant (run curl http://127.0.0.1:9090/v1/server_info):
  • APISIX Dashboard version, if relevant:
  • Plugin runner version, for issues related to plugin runners:
  • LuaRocks version, for installation issues (run luarocks --version):
@yujinchoi-94 yujinchoi-94 changed the title help request: Got error with loki-logger log_labels help request: Getting an error with log_labels in loki-logger Jul 17, 2023
@Revolyssup
Copy link
Contributor

Revolyssup commented Jul 17, 2023

This is a bug. Even the test cases didn't cover this scenario. @lingsamuel Please assign me this task.
Please also put this in the project backlog.

@Revolyssup
Copy link
Contributor

For track: The reason is that the logging is passed to batch processor which doesn't propagate request context and the callback uses the context of the original request which becomes nil as the request completes and logging is done asynchronously.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

3 participants