Kubernetes 在不创建新命名空间的情况下监视命名空间上的播客
我的公司有一个集群,它已经被一个datadog代理监控了。但我的团队需要一个专门为我们而设的监控系统。 我已经看过fluentd、prometheus等等,但是我找不到一个选项来使用我不需要在我的命名空间中安装的工具 有人知道我可以在名称空间中收集我的pod日志的选项吗?Kubernetes 在不创建新命名空间的情况下监视命名空间上的播客,kubernetes,monitoring,prometheus,grafana,fluentd,Kubernetes,Monitoring,Prometheus,Grafana,Fluentd,我的公司有一个集群,它已经被一个datadog代理监控了。但我的团队需要一个专门为我们而设的监控系统。 我已经看过fluentd、prometheus等等,但是我找不到一个选项来使用我不需要在我的命名空间中安装的工具 有人知道我可以在名称空间中收集我的pod日志的选项吗? 比如,为grafana安装一个pod,另一个用于收集日志并发送给grafana或类似的东西?您可以将Fluentd用作集群上的守护程序 查看此回购和docker图片-> 并使用此筛选器添加到Fluentd收集的每个日志中,然后
比如,为grafana安装一个pod,另一个用于收集日志并发送给grafana或类似的东西?您可以将Fluentd用作集群上的
守护程序
查看此回购和docker图片->
并使用此筛选器添加到Fluentd收集的每个日志中,然后使用grep筛选器排除不在名称空间中的日志
大概是这样的:
# Collect pod logs
<source>
@type tail
@id in_tail_container_logs
path /var/log/containers/*.log
pos_file /var/log/fluentd-containers.log.pos
tag kubernetes.*
exclude_path ["/var/log/containers/*fluent*.log"]
read_from_head true
<parse>
@type json
time_key time
time_format %Y-%m-%dT%H:%M:%S.%NZ
</parse>
</source>
# add Kubernetes metadata
<filter kubernetes.**>
@type kubernetes_metadata
@id filter_kube_metadata
kubernetes_url 'https://' + ENV.fetch('KUBERNETES_SERVICE_HOST') + ':' + ENV.fetch('KUBERNETES_SERVICE_PORT') + '/api'
verify_ssl true
</filter>
# filter and exclude logs that are not in the namespaces `ns1` and `ns2`
<filter kubernetes.**>
@type grep
<exclude>
key $.kubernetes.namespace_
pattern /^(?!(ns1|ns2))/
</exclude>
</filter>
#收集pod日志
@型尾
@尾部容器日志中的id
路径/var/log/containers/*.log
pos_文件/var/log/fluentd-containers.log.pos
塔格·库伯内特斯*
排除路径[“/var/log/containers/*fluent*.log”]
从你的头上读出来是真的
@类型json
时间键时间
时间\u格式%Y-%m-%dT%H:%m:%S.%NZ
#添加Kubernetes元数据
@类型kubernetes\u元数据
@id筛选器\u kube\u元数据
kubernetes_url“https://”+ENV.fetch(“kubernetes_服务_主机”)+”:“+ENV.fetch(“kubernetes_服务_端口”)+”/api”
验证ssl是否为真
#筛选和排除不在命名空间“ns1”和“ns2”中的日志`
@格雷普型
密钥$.kubernetes.namespace_
模式/^(?(ns1 | ns2))/
那么您想收集指标还是日志?另外:“但是我找不到一个使用我不需要在我的命名空间中安装的工具的选项”
-这是否意味着你不想在你的命名空间中部署任何东西?那怎么行?还有,也许是你要找的。我想收集日志。我的意思是,我想在我的命名空间中部署它,以便只收集它的日志。它的工作原理应该是:我需要在我的命名空间中部署一些东西来收集我的pod的日志。但是,是否可以只在我的命名空间中部署它而不在集群中使用任何东西?我没有访问集群的权限,也无法获取要放在Kubernetes元数据上的信息。或者我可以在我的名称空间中获取这些信息吗?基本上,通过这个解决方案,您需要访问主机/var/log
路径来读取日志文件并能够调用Kubernetes API。你可以设置Fluentd来接受来自HTTP调用的日志,并通过HTTP调用将所有日志发送到它,我认为这对你不好,因为它使用了大量的网络。另外,你可以检查一下你是否可以将Fluentd用作你的播客旁边的侧车记录器吗?嗯,如果我可以在我的命名空间中将其用作我的播客旁边的侧车,那就太好了。因为正如我之前所说,我没有权限调用Kubernetes API。