假设我编写一个像这样的基本 PromQL 查询
询问:
kube_deployment_spec_replicas{}
结果:
kube_deployment_spec_replicas{deployment="mydeployment",endpoint="myendpoint",instance="myinstance",job="myjob",namespace="default",pod="mypod",service="myservice"}
Run Code Online (Sandbox Code Playgroud)
有没有一种干净的方法可以从结果时间序列中省略instance和?pod
期望:
kube_deployment_spec_replicas{deployment="mydeployment",endpoint="myendpoint",job="myjob",namespace="default",service="myservice"}
Run Code Online (Sandbox Code Playgroud) 我们正在尝试使用Grafana和Prometheus Operator监视K8S,
大多数指标都按预期工作,并且我能够看到具有正确值的仪表板,我们的系统包含10个节点,总共500个Pod,现在当我重新启动Prometheus时,所有数据已被删除(我希望将其存储两周)我的问题是,如何定义Prometheus卷以将数据保留两周或100GB DB。我发现以下内容(我们使用Prometheus运算符)
https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/storage.md
这是Prometheus运算符的配置
apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
k8s-app: prometheus-operator
name: prometheus-operator
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
k8s-app: prometheus-operator
template:
metadata:
labels:
k8s-app: prometheus-operator
spec:
containers:
- args:
- --kubelet-service=kube-system/kubelet
- --logtostderr=true
- --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.29.0
image: quay.io/coreos/prometheus-operator:v0.29.0
name: prometheus-operator
ports:
- containerPort: 8080
name: http
Run Code Online (Sandbox Code Playgroud)
这是Prometheus的配置
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
namespace: monitoring
labels:
prometheus: prometheus
spec:
replica: 2
serviceAccountName: prometheus
serviceMonitorNamespaceSelector: {}
serviceMonitorSelector:
matchLabels: …Run Code Online (Sandbox Code Playgroud) amazon-web-services google-cloud-platform kubernetes prometheus prometheus-operator
prometheus 指标中=~运算符的含义是什么?
任何人都可以帮助我 = 和 =~ 运算符之间的确切区别是什么?
对于前.
process_cpu_seconds_total{instance="test"}
process_cpu_seconds_total{instance=~"test"}
Run Code Online (Sandbox Code Playgroud)
结果不同。
我正在使用这个图表:https ://github.com/helm/charts/tree/master/stable/prometheus-mongodb-exporter
该图表需要MONGODB_URI环境变量或mongodb.uri填充在values.yaml文件中,因为这是一个连接字符串,我不想将其签入 git。我正在考虑 kubernetes 秘密并提供来自 kubernetes 秘密的连接字符串。我一直未能成功找到此问题的解决方案。
我还尝试创建另一个舵图并将其用作该图表的依赖项并为MONGODB_URIfrom提供值secrets.yaml,但这也不起作用,因为在prometheus-mongodb-exporter图表中MONGODB_URI定义为所需值,然后将其传递到secrets.yaml该图表中的文件中,因此依赖项因此图表永远不会被安装。
实现这一目标的最佳方法是什么?
使用kube-prometheus-stack helm 图表,版本 35.2.0。到目前为止,我添加了我的 custom PrometheusRules,PodMonitor并ServiceMonitor通过 helm 自定义值。
helm install my-kubpromstack prometheus-community/kube-prometheus-stack -n monitoring \
-f my-AlertRules.yaml \
-f my-PodMonitor.yaml
Run Code Online (Sandbox Code Playgroud)
PrometheusRules或者如果或发生变化PodMonitor,我使用helm upgrade. 自定义值是基于kube-prometheus-stack/values.yaml定义的。我在单独的 YAML 文件中定义prometheus.additionalPodMonitors和的地方additionalPrometheusRulesMap
helm upgrade my-kubpromstack -n monitoring \
--reuse-values \
-f my-AlertRules.yaml \
-f my-PodMonitor.yaml
Run Code Online (Sandbox Code Playgroud)
问题:如何使 Prometheus 服务器kube-prometheus-stack感知在 helm 值之外创建的规则、podmonitor、servicemonitor?
例如,PodMonitorPrometheus 不会选择下面的定义(即不会出现在 Prometheus UI 的目标中)。
kubectl apply -f - << EOF
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata: …Run Code Online (Sandbox Code Playgroud) 我正在使用kubeadm部署单节点 kubernetes 1.11 集群。我无法找到servicemonitor资源。
? kube-prometheus git:(master) ? kubectl get servicemonitor
error: the server doesn't have a resource type "servicemonitor"
? kube-prometheus git:(master) ? kubectl create -f manifests/prometheus-serviceMonitor.yaml
error: unable to recognize "manifests/prometheus-serviceMonitor.yaml": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
Run Code Online (Sandbox Code Playgroud)
如何启用servicemonitor与kubeadm?
我是第一次尝试 prometheus-operator,并且仍然在努力解决管理 Prometheus 的差异。
部署非常简单,编辑规则也是如此,但是当我尝试使用 Prometheus-operator 重新标记导出器时,我找不到方法static_configs。
我过去所做的就是自定义prometheus.yml和添加static_configs以包含每个导出器作业名称的标签。
我知道在 Prometheus-operator 的引擎盖下,我们具有与通常相同的设置,但我不确定如何使用该static_config运算符从配置中获得相同的结果。
据我所知,我现在必须在与我的出口商相关的服务监视器上设置重新标签,但是我尝试过的所有配置都没有结果:
尝试按照问题1166metricRelabelings中的描述以及问题 1086中的描述进行尝试,但没有任何运气。StaticConfigs
例如,这是我过去为kubernetes-cadvisor导出器设置标签时所做的事情static_config,以便我的自定义标签显示在导出器在摄取时间收集的所有指标上:
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
kubernetes_namespace: kube-system
cluster_name: mycluster01
Run Code Online (Sandbox Code Playgroud)
并relabel_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_(.+)
- …Run Code Online (Sandbox Code Playgroud) 我已经在集群A(主舞会)上安装了Prometheus 运算符 0.34(按预期工作)现在我想使用联合选项,我的意思是从位于其他 K8S 集群B上的其他 Prometheus 收集指标
说明:
- 在集群中有一个主要的prometheus 操作员
v0.34配置- 我在集群B SLAVE prometheus
2.13.1配置中
两者都通过 helm 成功安装,我可以通过访问 localhostport-forwarding并查看每个集群上的抓取结果。
我做了以下步骤
在操作员(主集群 A)上使用 additionalScrapeconfig
我已将以下内容添加到values.yaml文件中并通过 helm 更新它。
additionalScrapeConfigs:
- job_name: 'federate'
honor_labels: true
metrics_path: /federate
params:
match[]:
- '{job="prometheus"}'
- '{__name__=~"job:.*"}'
static_configs:
- targets:
- 101.62.201.122:9090 # The External-IP and port from the target prometheus on Cluster B
Run Code Online (Sandbox Code Playgroud)
我把目标如下:
在集群 B内的普罗米修斯(我想从中收集数据)上,我使用: …
使用https://github.com/prometheus-operator/kube-prometheus/tree/main/manifests手动安装 kube-prometheus ,而不使用 jb。
规则正在触发:
name: KubeControllerManagerDown
expr: absent(up{job="kube-controller-manager"} == 1)
Run Code Online (Sandbox Code Playgroud)
即使我创建这些服务: https://github.com/prometheus-operator/prometheus-operator/issues/1859#issuecomment-437740104
如何调试这个问题?
目前我正在使用 Prometheus 并取得了良好的结果,我面临的困难是如果服务重新启动我的整个旧数据将丢失。有没有办法将 Prometheus 数据永久存储在 mysql 或 PostgreSQL 等数据库中?
prometheus ×8
kubernetes ×5
database ×1
istio ×1
label ×1
metrics ×1
mysql ×1
postgresql ×1
promql ×1
security ×1