envoyproxy / envoy

Cloud-native high-performance edge/middle/service proxy
https://www.envoyproxy.io
Apache License 2.0
24.75k stars 4.75k forks source link

[Feature Request] Support environment variables in log formatting #12767

Open alkalinecoffee opened 4 years ago

alkalinecoffee commented 4 years ago

Adding a request to support environment variables in our log formatting, perhaps using the ENV key (similar to REQ, RESP, etc). HOSTNAME is an already supported keyword pulled from the environment--this feature would expand on that.

Some values are known ahead of time and can be baked into the log format. However, the use case would be for logging runtime values (host IP, AZ, etc) that are only known when the container is deployed. Our current solution is to parse the config file, injecting selected envvars, etc before booting the service.

access_log:
  - name: envoy.access_loggers.file
    config:
      path: /dev/stdout
      json_format:
        hostname: "%HOSTNAME%"
        method: "%REQ(:METHOD)%"
        app_version: "%ENV(APP_VERSION)%"
        private_ip: "%ENV(PRIVATE_IP)%"
        region: "%ENV(REGION)%"
export APP_VERSION=0.1.0
export PRIVATE_IP=192.168.1.5
export REGION=us-east-1
envoy -c envoy.yaml

#=> {
  "hostname":"macbook-pro",
  "method":"GET",
  "app_version": "0.1.0",
  "private_ip": "192.168.1.5",
  "region": "us-east-1"
}
yozaam commented 4 years ago

https://github.com/envoyproxy/envoy/blob/b7138814dde530b8c2957e806ea40879a4fdce32/source/common/common/logger.h#L252-L263

Do we just have to add the new params here?

( I am completely new here and if you know of another c++ project that would be easier for me to start with, I would go there before trying to contribute here)

mattklein123 commented 4 years ago

The code to edit is in here: https://github.com/envoyproxy/envoy/blob/master/source/common/formatter/substitution_formatter.h. And related users.

musaprg commented 3 years ago

Hi @yozaam! Have you already started to work on this? I also got an interest in this feature request, so if you haven't, I would like to take it. (never mind if you have:+1:)

yozaam commented 3 years ago

Hi @yozaam! Have you already started to work on this? I also got an interest in this feature request, so if you haven't, I would like to take it. (never mind if you have👍)

Hey @musaprg go ahead :D

Shikugawa commented 3 years ago

/assign @Shikugawa