第 8 章 ServiceMonitor [monitoring.coreos.com/v1]
- 描述
- ServiceMonitor 为一组服务定义监控。
- 类型
-
object
- 必填
-
spec
-
8.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| Prometheus 的目标发现所需的服务选择规格。 |
8.1.1. .spec
- 描述
- Prometheus 的目标发现所需的服务选择规格。
- 类型
-
object
- 必填
-
端点
-
selector
-
属性 | 类型 | 描述 |
---|---|---|
|
| 将节点元数据附加到发现的目标。需要 Prometheus v2.37.0 及更高版本。 |
|
| 此 ServiceMonitor 中允许的端点列表。 |
|
| 端点定义提供 Prometheus 指标的可提取端点。 |
|
|
JobLabel 从关联的 Kubernetes 服务中选择标签,该服务将用作所有指标 |
|
| 对示例接受的标签数的 per-scrape 限制。仅在 Prometheus 版本 2.27.0 及更新版本中有效。 |
|
| 对示例接受的标签名称长度的 per-scrape 限制。仅在 Prometheus 版本 2.27.0 及更新版本中有效。 |
|
| 对示例接受的标签值长度的 per-scrape 限制。仅在 Prometheus 版本 2.27.0 及更新版本中有效。 |
|
| 选择从哪些命名空间发现 Kubernetes Endpoints 对象的选择器。 |
|
|
PodTargetLabels 将 Kubernetes |
|
| SampleLimit 对将接受的提取示例数量定义 per-scrape 限制。 |
|
| 选择 Endpoints 对象的选择器。 |
|
|
TargetLabels 将标签从 Kubernetes |
|
| TargetLimit 定义了接受的提取目标数量的限制。 |
8.1.2. .spec.attachMetadata
- 描述
- 将节点元数据附加到发现的目标。需要 Prometheus v2.37.0 及更高版本。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 当设置为 true 时,Prometheus 必须有权限才能获取节点。 |
8.1.3. .spec.endpoints
- 描述
- 此 ServiceMonitor 中允许的端点列表。
- 类型
-
array
8.1.4. .spec.endpoints[]
- 描述
- 端点定义提供 Prometheus 指标的可提取端点。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 此端点的授权部分 |
|
| basicAuth 允许端点通过基本身份验证了解更多信息进行验证 :https://prometheus.io/docs/operating/configuration/#endpoints |
|
| 用于读取提取目标的 bearer 令牌的文件。 |
|
| 要挂载以读取用于提取目标的 bearer 令牌的机密。secret 需要与服务监控器位于同一个命名空间中,并可以被 Prometheus Operator 访问。 |
|
| 是否启用 HTTP2。 |
|
| 丢弃没有运行的 pod。(failed, Succeeded)。默认启用此选项。更多信息: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase |
|
| FollowRedirects 配置提取请求是否遵循 HTTP 3xx 重定向。 |
|
| HonorLabels 选择指标的标签与目标标签冲突。 |
|
| honorTimestamps 控制 Prometheus 是否遵循提取数据中存在的时间戳。 |
|
| 如果使用了 Prometheus 的全局提取间隔,则应提取指标的时间间隔。 |
|
| MetricRelabelConfigs 在 ingestion 前应用到示例。 |
|
|
RelabelConfig 允许动态重写标签集,在 ingestion 前被应用到示例。它定义 Prometheus |
|
| URL 的 OAuth2。仅在 Prometheus 版本 2.27.0 及更新版本中有效。 |
|
| 可选的 HTTP URL 参数 |
|
| |
|
|
提取指标的 HTTP 路径。如果为空,Prometheus 将使用默认值(如 |
|
| 此端点所引用的服务端口的名称。与 targetPort 相互排斥。 |
|
| proxyUrl eg http://proxyserver:2195 Directs scrapes to proxy via this endpoint. |
|
|
在提取前,重新labelConfigs 应用到示例。Prometheus Operator 会自动为几个标准 Kubernetes 字段添加重新标记。原始提取作业的名称可以通过 |
|
|
RelabelConfig 允许动态重写标签集,在 ingestion 前被应用到示例。它定义 Prometheus |
|
| 用于提取的 HTTP 方案。 |
|
|
如果没有指定提取的超时时间,会使用 Prometheus 全局提取超时,除非它小于使用后者的间隔。 |
|
| 在 Service 后面的 Pod 的目标端口的名称或号,必须使用容器端口属性指定端口。与端口相互排斥。 |
|
| 提取端点时使用的 TLS 配置 |
8.1.5. .spec.endpoints[].authorization
- 描述
- 此端点的授权部分
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 包含请求凭证的 secret 密钥 |
|
| 设置身份验证类型。默认为 Bearer,Basic 将导致错误 |
8.1.6. .spec.endpoints[].authorization.credentials
- 描述
- 包含请求凭证的 secret 密钥
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.7. .spec.endpoints[].basicAuth
- 描述
- basicAuth 允许端点通过基本身份验证了解更多信息进行验证 :https://prometheus.io/docs/operating/configuration/#endpoints
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 服务监控器命名空间中的 secret,其中包含用于身份验证的密码。 |
|
| 服务监控器命名空间中的 secret,其中包含用于身份验证的用户名。 |
8.1.8. .spec.endpoints[].basicAuth.password
- 描述
- 服务监控器命名空间中的 secret,其中包含用于身份验证的密码。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.9. .spec.endpoints[].basicAuth.username
- 描述
- 服务监控器命名空间中的 secret,其中包含用于身份验证的用户名。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.10. .spec.endpoints[].bearerTokenSecret
- 描述
- 要挂载以读取用于提取目标的 bearer 令牌的机密。secret 需要与服务监控器位于同一个命名空间中,并可以被 Prometheus Operator 访问。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.11. .spec.endpoints[].metricRelabelings
- 描述
- MetricRelabelConfigs 在 ingestion 前应用到示例。
- 类型
-
array
8.1.12. .spec.endpoints[].metricRelabelings[]
- 描述
-
RelabelConfig 允许动态重写标签集,在 ingestion 前被应用到示例。它定义 Prometheus
配置的 <metric_relabel_configs
>-section。更多信息: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs - 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 根据正则表达式匹配要执行的操作。默认为 'replace'。大写,小写操作需要 Prometheus >= 2.36。 |
|
| modulus 采用 source 标签值的哈希。 |
|
| 匹配提取值的正则表达式。默认为 '(configured)' |
|
| 如果正则表达式匹配,则执行 regex 替换的替换值。正则表达式捕获组可用。默认为 '$1' |
|
| 在串联的源标签值之间放置分隔符。默认为 ';'。 |
|
| source 标签从现有标签中选择值。其内容使用配置的分隔符连接,并与为替换、keep 和 drop 操作配置的正则表达式匹配。 |
|
| 生成的值以 replace 操作写入的标签。对于 replace 操作是必需的。正则表达式捕获组可用。 |
8.1.13. .spec.endpoints[].oauth2
- 描述
- URL 的 OAuth2。仅在 Prometheus 版本 2.27.0 及更新版本中有效。
- 类型
-
object
- 必填
-
clientId
-
clientSecret
-
tokenUrl
-
属性 | 类型 | 描述 |
---|---|---|
|
| 包含 OAuth2 客户端 ID 的 secret 或 configmap |
|
| 包含 OAuth2 客户端 secret 的 secret |
|
| 附加到令牌 URL 的参数 |
|
| 用于令牌请求的 OAuth2 范围 |
|
| 从中获取令牌的 URL |
8.1.14. .spec.endpoints[].oauth2.clientId
- 描述
- 包含 OAuth2 客户端 ID 的 secret 或 configmap
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 包含用于目标的数据的 ConfigMap。 |
|
| 包含用于目标的数据的 secret。 |
8.1.15. .spec.endpoints[].oauth2.clientId.configMap
- 描述
- 包含用于目标的数据的 ConfigMap。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要选择的密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否必须定义 ConfigMap 还是其键 |
8.1.16. .spec.endpoints[].oauth2.clientId.secret
- 描述
- 包含用于目标的数据的 secret。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.17. .spec.endpoints[].oauth2.clientSecret
- 描述
- 包含 OAuth2 客户端 secret 的 secret
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.18. .spec.endpoints[].params
- 描述
- 可选的 HTTP URL 参数
- 类型
-
对象
8.1.19. .spec.endpoints[].relabelings
- 描述
-
在提取前,重新labelConfigs 应用到示例。Prometheus Operator 会自动为几个标准 Kubernetes 字段添加重新标记。原始提取作业的名称可以通过
\__tmp_prometheus_job_name
标签获得。更多信息: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - 类型
-
array
8.1.20. .spec.endpoints[].relabelings[]
- 描述
-
RelabelConfig 允许动态重写标签集,在 ingestion 前被应用到示例。它定义 Prometheus
配置的 <metric_relabel_configs
>-section。更多信息: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs - 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 根据正则表达式匹配要执行的操作。默认为 'replace'。大写,小写操作需要 Prometheus >= 2.36。 |
|
| modulus 采用 source 标签值的哈希。 |
|
| 匹配提取值的正则表达式。默认为 '(configured)' |
|
| 如果正则表达式匹配,则执行 regex 替换的替换值。正则表达式捕获组可用。默认为 '$1' |
|
| 在串联的源标签值之间放置分隔符。默认为 ';'。 |
|
| source 标签从现有标签中选择值。其内容使用配置的分隔符连接,并与为替换、keep 和 drop 操作配置的正则表达式匹配。 |
|
| 生成的值以 replace 操作写入的标签。对于 replace 操作是必需的。正则表达式捕获组可用。 |
8.1.21. .spec.endpoints[].tlsConfig
- 描述
- 提取端点时使用的 TLS 配置
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 验证服务器证书时使用的证书颁发机构。 |
|
| Prometheus 容器中用于目标的 CA 证书的路径。 |
|
| 执行 client-authentication 时要出现的客户端证书。 |
|
| 目标的 Prometheus 容器中客户端证书文件的路径。 |
|
| 禁用目标证书验证。 |
|
| 目标的 Prometheus 容器中客户端密钥文件的路径。 |
|
| 包含目标客户端密钥文件的 secret。 |
|
| 用于验证目标的主机名。 |
8.1.22. .spec.endpoints[].tlsConfig.ca
- 描述
- 验证服务器证书时使用的证书颁发机构。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 包含用于目标的数据的 ConfigMap。 |
|
| 包含用于目标的数据的 secret。 |
8.1.23. .spec.endpoints[].tlsConfig.ca.configMap
- 描述
- 包含用于目标的数据的 ConfigMap。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要选择的密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否必须定义 ConfigMap 还是其键 |
8.1.24. .spec.endpoints[].tlsConfig.ca.secret
- 描述
- 包含用于目标的数据的 secret。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.25. .spec.endpoints[].tlsConfig.cert
- 描述
- 执行 client-authentication 时要出现的客户端证书。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 包含用于目标的数据的 ConfigMap。 |
|
| 包含用于目标的数据的 secret。 |
8.1.26. .spec.endpoints[].tlsConfig.cert.configMap
- 描述
- 包含用于目标的数据的 ConfigMap。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要选择的密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否必须定义 ConfigMap 还是其键 |
8.1.27. .spec.endpoints[].tlsConfig.cert.secret
- 描述
- 包含用于目标的数据的 secret。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.28. .spec.endpoints[].tlsConfig.keySecret
- 描述
- 包含目标客户端密钥文件的 secret。
- 类型
-
object
- 必填
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。 |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
|
| 指定是否需要定义 Secret 还是其密钥 |
8.1.29. .spec.namespaceSelector
- 描述
- 选择从哪些命名空间发现 Kubernetes Endpoints 对象的选择器。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 布尔值描述是否都选择了所有命名空间,而不是列表限制它们。 |
|
| 要从中选择的命名空间名称列表。 |
8.1.30. .spec.selector
- 描述
- 选择 Endpoints 对象的选择器。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。 |
8.1.31. .spec.selector.matchExpressions
- 描述
- matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
- 类型
-
array
8.1.32. .spec.selector.matchExpressions[]
- 描述
- 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
- 类型
-
object
- 必填
-
key
-
operator
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |