Kubernetes 如何在普罗米修斯操作员上重新标记刮削作业?
我第一次尝试使用普罗米修斯操作员,但仍然在为通过该操作员管理普罗米修斯的差异而挣扎 部署非常简单,编辑规则也很简单,但是在使用Prometheus operator时,尝试使用Kubernetes 如何在普罗米修斯操作员上重新标记刮削作业?,kubernetes,label,prometheus,prometheus-operator,Kubernetes,Label,Prometheus,Prometheus Operator,我第一次尝试使用普罗米修斯操作员,但仍然在为通过该操作员管理普罗米修斯的差异而挣扎 部署非常简单,编辑规则也很简单,但是在使用Prometheus operator时,尝试使用static\u configs重新标记导出程序时,我找不到方法 我过去所做的是定制prometheus.yml并添加static\u configs,以包含每个出口商工作名称的标签 我知道,在普罗米修斯操作员的保护罩下,我们的设置与通常相同,但我不确定如何使用操作员通过静态配置获得相同的结果 据我所知,我现在必须在与我的
static\u configs
重新标记导出程序时,我找不到方法
我过去所做的是定制prometheus.yml
并添加static\u configs
,以包含每个出口商工作名称的标签
我知道,在普罗米修斯操作员的保护罩下,我们的设置与通常相同,但我不确定如何使用操作员通过静态配置
获得相同的结果
据我所知,我现在必须在与我的导出器相关的服务监视器上设置重新标记,但是我尝试的所有配置都没有结果:
使用发布时描述的metricrelablings
和上描述的StaticConfigs
进行了尝试,但没有任何运气
例如,这就是我过去为kubernetes cadvisor
exporter所做的,在static\u config
上设置标签,以便我的自定义标签显示在我的导出程序在摄入时间收集的所有度量上:
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
kubernetes_namespace: kube-system
cluster_name: mycluster01
并在每个导出器作业上添加relabel\u configs
:
- job_name: 'kubernetes-cadvisor'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- target_label: cluster_name
replacement: mycluster01
- target_label: kubernetes_namespace
replacement: kube-system
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}:10250/proxy/metrics
这是一个在普罗米修斯操作员身上使用metricRelabelings
实现相同功能的示例,该操作员仍然不适合我:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: node-exporter
name: node-exporter
namespace: monitoring
spec:
endpoints:
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
interval: 30s
port: https
scheme: https
tlsConfig:
insecureSkipVerify: true
jobLabel: k8s-app
selector:
matchLabels:
k8s-app: node-exporter
metricRelabelings:
sourceLabels: __meta_kubernetes_node_name
targetLabel: node
我希望实现的是在我的导出器上创建一个静态标签,以便所有指标都带有我在刮片时定义的自定义标签,而不必手动为集群中的所有部署定义自定义标签
提前感谢您的帮助 让我们看看这个例子是如何工作的。首先,部署示例应用程序的四个实例,该实例侦听并公开端口8080上的度量
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: example-application
spec:
replicas: 4
template:
metadata:
labels:
app: example-application
spec:
containers:
- name: example-application
image: fabxc/instrumented_app
ports:
- name: backend
containerPort: 8080
ServiceMonitor有一个标签选择器,用于选择服务及其底层端点对象。示例应用程序的服务对象通过具有示例应用程序值的应用程序标签选择POD。服务对象还指定暴露度量的端口
kind: Service
apiVersion: v1
metadata:
name: example-application
labels:
app: example-application
spec:
selector:
app: example-application
ports:
- name: backend
port: 8080
此服务对象由ServiceMonitor发现,ServiceMonitor以相同的方式进行选择。应用程序标签必须具有示例应用程序的值
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-application
labels:
team: backend-team
spec:
selector:
matchLabels:
app: example-application
endpoints:
- port: backend
Prometheus对象定义serviceMonitorSelector以指定应包括哪些ServiceMonitors。标签上方的team:backend team
已指定,因此普罗米修斯对象就是通过该标签进行选择的
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
spec:
serviceMonitorSelector:
matchLabels:
team: backend-team
resources:
requests:
memory: 400Mi
这使后端团队能够创建新的ServiceMonitors和服务,从而允许Prometheus进行动态重新配置
您还可以继续阅读有关Prometheus Operator中ServiceMonitor的更多信息。似乎我错过了Operator repository中的说明。。。。仔细看之后,我发现了一些非常好的例子。。。似乎我的问题的答案是创建额外的抓取配置作为一个秘密,类似于下面链接中的示例:
还可以在以下位置找到一些附加步骤:Hi@abielak,感谢您的全面回答,但我的问题是如何在摄入时间上添加公制标签,如果没有操作员,我可以在
prometheus.yml
中修改刮削设置。在存储库中找到了执行此操作的正确文档。。。。似乎现在必须添加额外的抓取配置作为一个秘密,如第页所述。但是再次感谢你的帮助!