Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 在istio中为特使启用http标头日志记录_Logging_Kubernetes_Http Headers_Istio_Envoyproxy - Fatal编程技术网

Logging 在istio中为特使启用http标头日志记录

Logging 在istio中为特使启用http标头日志记录,logging,kubernetes,http-headers,istio,envoyproxy,Logging,Kubernetes,Http Headers,Istio,Envoyproxy,我希望能够在我的istio服务网格上捕获(记录)(至少部分)特使的HTTP头 我已经浏览了《特使》,在“日志级别”一节中,它没有提到任何特定于标题的信息 当前,我的istio代理日志如下所示(这来自stern输出): 有没有办法记录http标题?(理想情况下,其中一些,以控制伐木成本) edit1根据评论中的建议,我检查了我的istio操作符资源,我发现访问日志似乎已启用 meshConfig: accessLogEncoding: JSON accessLogF

我希望能够在我的
istio
服务网格上捕获(记录)(至少部分)特使的HTTP头

我已经浏览了《特使》,在“日志级别”一节中,它没有提到任何特定于标题的信息

当前,我的
istio代理
日志如下所示(这来自
stern
输出):

有没有办法记录
http
标题?(理想情况下,其中一些,以控制伐木成本)

edit1根据评论中的建议,我检查了我的
istio操作符
资源,我发现访问日志似乎已启用

    meshConfig:
      accessLogEncoding: JSON
      accessLogFile: /dev/stdout
edit2我还尝试了以下方法:

curl -i -H "Custom-Header: application/json" https://my.url.net
但是在
istio-ingresgateway
的日志中,我没有看到我的自定义头

istio-ingressgateway-58f69d8696-rmpwn istio-proxy {"user_agent":"curl/7.64.1","response_code":"200","response_flags":"-","start_time":"2021-01-18T19:02:48.645Z","method":"GET","request_id":"8e32c93c-484d-9c56-9489-8c5392793d97","upstream_host":"10.16.32.55:20000","x_forwarded_for":"10.16.32.1","requested_server_name":"my.url.net","bytes_received":"0","istio_policy_status":"-","bytes_sent":"124","upstream_cluster":"outbound|80||mysvc.default.svc.cluster.local","downstream_remote_address":"10.16.32.1:52804","authority":"my.url.net","path":"/","protocol":"HTTP/2","upstream_service_time":"9","upstream_local_address":"10.16.32.17:49826","duration":"10","upstream_transport_failure_reason":"-","route_name":"-","downstream_local_address":"10.16.32.17:8443"}

我想我已经成功地复制了您的问题,并且我能够在入口网关日志中打印
MY_CUSTOM_HEADER

[2021-01-20T08:26:18.587Z] pkarambol GET /productpage HTTP/1.1 200
有一部分我的istio入口网关日志

[2021-01-20T08:26:18.587Z] pkarambol GET /productpage HTTP/1.1 200
我使用了下面的curl命令:

curl -v -H "MY_CUSTOM_HEADER: pkarambol" xx.xxx.xx.xxx/productpage

要做到这一点,您必须更改日志的格式。如中所述,您可以使用
meshConfig.accessLogFormat
来更改该格式


我用过一个例子

%REQ(我的自定义头)%
是负责显示自定义头的一部分

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: example-istiocontrolplane
spec:
  profile: demo
  meshConfig:
    accessLogFile: /dev/stdout
    accessLogFormat: "[%START_TIME%] %REQ(MY_CUSTOM_HEADER)% %REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%
%RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% %REQ(X-FORWARDED-FOR)% %REQ(USER-AGENT)%
%REQ(X-REQUEST-ID)% %REQ(:AUTHORITY)% %UPSTREAM_HOST%\n"

你试过了吗?另外,您应该能够使用其中一个或一些来检查http头。感谢fdeedback Jakub,但是我刚刚检查了它,它似乎已启用;请参阅我的问题更新谢谢
Jakub
我得出了相同的结论;然而,我被以下事实所困扰:a)我在我的
istio proxy
日志中看到了一些所谓默认格式中不存在的字段,例如
istio_policy_status:“-”
;所以我试图找到一种附加到现有日志结构的方法,而不是重写它;我似乎找不到
istio
添加了
defailt格式中不存在的文件的地方
,事实上,由于这是您提供的一个很好的答案,我将接受它,并就一个新的SO问题(我将在这里发布供参考)进行跟进供参考