我有一个坞-撰写文件,在其中我运行了几个容器,包括DataDog代理。一切正常,除了DataDog在向DataDog发送容器日志时选择的“源”。
例如,如果我使用正式的Nginx映像,因为docker映像名为" Nginx ",因此默认情况下,datadog源被选择为"nginx",使用Nginx DataDog管道来解析日志。
但是,如果我使用的是一个名为"my-account/hello-world“的码头映像,那么DataDog默认选择源为"hello-world”。如果我的图像是受到Nginx的启发,并以"nginx格式“报告日志,我希望能够将DataDog源代码更改为" Nginx ",这样DataDog就可以在默认情况下获取Nginx日志管道。
我怎样才能做到这一点?
我尝试过设置一个DD_SOURCE环境变量,但是没有运气,DataDog仍然选择图像名作为“源”。我也尝试过将源代码设置为标记(DD_TAGS=source:nginx),但是DataDog没有选择它。
谢谢!
发布于 2022-08-09 13:24:17
我遇到了一个类似的问题,我终于解决了。我认为你也可以根据你的情况调整这个解决方案。
nginx,而是nginx-入口控制器。两者都得到Datadog的支持。docs声明您应该使用这种格式:
apiVersion: v1
kind: Pod
metadata:
annotations:
ad.datadoghq.com/<CONTAINER_IDENTIFIER>.logs: '[<LOG_CONFIG>]'
spec:
containers:
- name: '<CONTAINER_IDENTIFIER>'由于nginx-入口控制器默认为容器名controller,所以我使用它作为<CONTAINER_IDENTIFIER>
apiVersion: v1
kind: Pod
metadata:
annotations:
ad.datadoghq.com/controller.logs: '[<LOG_CONFIG>]'
spec:
containers:
- name: 'controller'我的最终工作配置(包括<LOG_CONFIG>和使用Deployment而不是Pod )看起来如下所示:
apiVersion: apps/v1
kind: Deployment
spec:
template:
metadata:
annotations:
ad.datadoghq.com/controller.logs: |
[{"service": "controller", "source": "nginx-ingress-controller"}]
spec:
containers:
- name: controller值得注意的是,如果没有围绕日志配置的数组大括号[],日志就根本不会被摄入。
Datadog现在自动知道如何解析日志(它在前面提到了controller ):

https://stackoverflow.com/questions/72577156
复制相似问题