我正在使用头盔prometheus-operator图表:https://github.com/helm/charts/blob/master/stable/prometheus-operator/values.yaml,我希望它可以像以前一样通过“硬编码”服务的名称和端口中的端口来从golang api获取自定义指标。 values.yml文件:
scrape_configs:
- job_name: 'custom-api'
static_configs:
- targets: ['custom-api-service.backend.svc.cluster.local:8000']
但是,随着我拥有更多的微服务,我知道也可以使用_meta
标签动态地完成它。例:
__meta_kubernetes_service_name
但是,我还没有弄清楚我应该从values.yaml文件中进行哪些修改以使其正常工作。
Grafana正在从custom-api
获取我的CPU和内存使用率,但是custom-api
没有出现在Prometheus仪表板的targets选项卡中,这很奇怪...
这些是我的服务
apiVersion: v1
kind: Service
metadata:
name: custom-api-service
namespace: backend
labels:
service: custom-api-service
spec:
type: NodePort
ports:
- port: 8000
targetPort: 8000
nodePort: 30080
protocol: TCP
name: custom-api
selector:
component: goapi
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: servicemonitor
namespace: backend
labels:
service: servicemonitor
spec:
selector:
matchLabels:
service: custom-api-service
endpoints:
- port: custom-api
答案 0 :(得分:1)
您将必须创建一个Service monitor CRD才能抓取指标。
假设您有一个k8s服务(此处为example-app
),该服务用于与您的微服务通信。确保您的微服务在某个端口公开了Prometheus指标,并且k8s服务也包括该端口(此处为prom
)。
kind: Service
apiVersion: v1
metadata:
name: example-app
labels:
app: example-app
spec:
selector:
app: example-app
ports:
- name: prom
port: 8080
- name: other-port
port: xxxx
此Service对象由ServiceMonitor发现,后者以相同的方式进行选择。您需要确保serviceMonitor对象的matchLabels
与服务的metadata.labels
匹配。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-app
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
endpoints:
- port: prom
一旦创建了serviceMonitor对象,操作员控制器将为您完成其余工作(即更新Prometheus配置)。您还可以通过serviceMonitor对象提供自定义配置。
有关更多详细信息,请访问Getting started with Prometheus operator。
答案 1 :(得分:1)
$cat
资源包括一个名为Architecture & Design
的字段,该字段定义了要使用的$cat = 'sound';
Array
(
[Architecture & Design] => Array
(
[0] => architecture
[1] => fashion
[2] => game
[3] => graphic
[4] => interior
[5] => industrial
[6] => textile
[7] => web
[8] => ui
[9] => sound
)
[Test array] => Array
(
[0] => item1
[1] => item2
[2] => item3
[3] => item4
[4] => item5
[5] => item6
[6] => item7
[7] => item8
[8] => item9
[9] => item0
)
)
的选择。默认情况下,在版本v0.19.0之前,Prometheus
必须安装在与Prometheus实例相同的名称空间中。使用Prometheus Operator v0.19.0及更高版本,可以通过serviceMonitorSelector
资源的ServiceMonitors
字段在Prometheus命名空间之外选择ServiceMonitors
在监视名称空间中,创建一个ServiceMonitors
对象,该对象通过标签serviceMonitorNamespaceSelector
选择Prometheus
Prometheus
您可以在ServiceMonitor
命名空间中以service: servicemonitor
的形式找到apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
spec:
serviceAccountName: <service-account-name>
serviceMonitorSelector:
matchLabels:
service: servicemonitor
resources:
requests:
memory: 400Mi
enableAdminAPI: false