ServiceMonitor

Scope: Namespaced
Version: v1

ServiceMonitor defines monitoring for a set of services.

  • apiVersion
    string

    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind
    string

    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • metadata
    object
  • spec
    object

    Required value

    Specification of desired Service selection for target discovery by Prometheus.

    • spec.attachMetadata
      object

      Attaches node metadata to discovered targets. Requires Prometheus v2.37.0 and above.

      • spec.attachMetadata.node
        boolean

        When set to true, Prometheus must have permissions to get Nodes.

    • spec.endpoints
      array of objects

      Required value

      A list of endpoints allowed as part of this ServiceMonitor.

      Endpoint defines a scrapeable endpoint serving Prometheus metrics.

      • spec.endpoints.authorization
        object

        Authorization section for this endpoint

        • spec.endpoints.authorization.credentials
          object

          Selects a key of a Secret in the namespace that contains the credentials for authentication.

          • spec.endpoints.authorization.credentials.key
            string

            Required value

            The key of the secret to select from. Must be a valid secret key.

          • spec.endpoints.authorization.credentials.name
            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          • spec.endpoints.authorization.credentials.optional
            boolean

            Specify whether the Secret or its key must be defined

        • spec.endpoints.authorization.type
          string

          Defines the authentication type. The value is case-insensitive. “Basic” is not a supported value. Default: “Bearer”

      • spec.endpoints.basicAuth
        object

        BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints

        • spec.endpoints.basicAuth.password
          object

          The secret in the service monitor namespace that contains the password for authentication.

          • spec.endpoints.basicAuth.password.key
            string

            Required value

            The key of the secret to select from. Must be a valid secret key.

          • spec.endpoints.basicAuth.password.name
            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          • spec.endpoints.basicAuth.password.optional
            boolean

            Specify whether the Secret or its key must be defined

        • spec.endpoints.basicAuth.username
          object

          The secret in the service monitor namespace that contains the username for authentication.

          • spec.endpoints.basicAuth.username.key
            string

            Required value

            The key of the secret to select from. Must be a valid secret key.

          • spec.endpoints.basicAuth.username.name
            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          • spec.endpoints.basicAuth.username.optional
            boolean

            Specify whether the Secret or its key must be defined

      • spec.endpoints.bearerTokenFile
        string

        File to read bearer token for scraping targets.

      • spec.endpoints.bearerTokenSecret
        object

        Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the service monitor and accessible by the Prometheus Operator.

        • spec.endpoints.bearerTokenSecret.key
          string

          Required value

          The key of the secret to select from. Must be a valid secret key.

        • spec.endpoints.bearerTokenSecret.name
          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

        • spec.endpoints.bearerTokenSecret.optional
          boolean

          Specify whether the Secret or its key must be defined

      • spec.endpoints.enableHttp2
        boolean

        Whether to enable HTTP2.

      • spec.endpoints.filterRunning
        boolean

        Drop pods that are not running. (Failed, Succeeded). Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase

      • spec.endpoints.followRedirects
        boolean

        FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.

      • spec.endpoints.honorLabels
        boolean

        HonorLabels chooses the metric’s labels on collisions with target labels.

      • spec.endpoints.honorTimestamps
        boolean

        HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.

      • spec.endpoints.interval
        string

        Interval at which metrics should be scraped If not specified Prometheus’ global scrape interval is used.

        Pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$

      • spec.endpoints.metricRelabelings
        array of objects

        MetricRelabelConfigs to apply to samples before ingestion.

        RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config

        • spec.endpoints.metricRelabelings.action
          string

          Action to perform based on the regex matching. Uppercase and Lowercase actions require Prometheus >= v2.36.0. DropEqual and KeepEqual actions require Prometheus >= v2.41.0. Default: “Replace”

          Default: "replace"

          Allowed values: replace, Replace, keep, Keep, drop, Drop, hashmod, HashMod, labelmap, LabelMap, labeldrop, LabelDrop, labelkeep, LabelKeep, lowercase, Lowercase, uppercase, Uppercase, keepequal, KeepEqual, dropequal, DropEqual

        • spec.endpoints.metricRelabelings.modulus
          integer

          Modulus to take of the hash of the source label values. Only applicable when the action is HashMod.

        • spec.endpoints.metricRelabelings.regex
          string

          Regular expression against which the extracted value is matched.

        • spec.endpoints.metricRelabelings.replacement
          string

          Replacement value against which a Replace action is performed if the regular expression matches. Regex capture groups are available.

        • spec.endpoints.metricRelabelings.separator
          string

          Separator is the string between concatenated SourceLabels.

        • spec.endpoints.metricRelabelings.sourceLabels
          array of strings

          The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.

          • Element of the array
            string

            LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.

            Pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$

        • spec.endpoints.metricRelabelings.targetLabel
          string

          Label to which the resulting string is written in a replacement. It is mandatory for Replace, HashMod, Lowercase, Uppercase, KeepEqual and DropEqual actions. Regex capture groups are available.

      • spec.endpoints.oauth2
        object

        OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.

        • spec.endpoints.oauth2.clientId
          object

          Required value

          The secret or configmap containing the OAuth2 client id

          • spec.endpoints.oauth2.clientId.configMap
            object

            ConfigMap containing data to use for the targets.

            • spec.endpoints.oauth2.clientId.configMap.key
              string

              Required value

              The key to select.

            • spec.endpoints.oauth2.clientId.configMap.name
              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            • spec.endpoints.oauth2.clientId.configMap.optional
              boolean

              Specify whether the ConfigMap or its key must be defined

          • spec.endpoints.oauth2.clientId.secret
            object

            Secret containing data to use for the targets.

            • spec.endpoints.oauth2.clientId.secret.key
              string

              Required value

              The key of the secret to select from. Must be a valid secret key.

            • spec.endpoints.oauth2.clientId.secret.name
              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            • spec.endpoints.oauth2.clientId.secret.optional
              boolean

              Specify whether the Secret or its key must be defined

        • spec.endpoints.oauth2.clientSecret
          object

          Required value

          The secret containing the OAuth2 client secret

          • spec.endpoints.oauth2.clientSecret.key
            string

            Required value

            The key of the secret to select from. Must be a valid secret key.

          • spec.endpoints.oauth2.clientSecret.name
            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          • spec.endpoints.oauth2.clientSecret.optional
            boolean

            Specify whether the Secret or its key must be defined

        • spec.endpoints.oauth2.endpointParams
          object

          Parameters to append to the token URL

        • spec.endpoints.oauth2.scopes
          array of strings

          OAuth2 scopes used for the token request

        • spec.endpoints.oauth2.tokenUrl
          string

          Required value

          The URL to fetch the token from

      • spec.endpoints.params
        object

        Optional HTTP URL parameters

      • spec.endpoints.path
        string

        HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).

      • spec.endpoints.port
        string

        Name of the service port this endpoint refers to. Mutually exclusive with targetPort.

      • spec.endpoints.proxyUrl
        string

        ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.

      • spec.endpoints.relabelings
        array of objects

        RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job’s name is available via the __tmp_prometheus_job_name label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config

        RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config

        • spec.endpoints.relabelings.action
          string

          Action to perform based on the regex matching. Uppercase and Lowercase actions require Prometheus >= v2.36.0. DropEqual and KeepEqual actions require Prometheus >= v2.41.0. Default: “Replace”

          Default: "replace"

          Allowed values: replace, Replace, keep, Keep, drop, Drop, hashmod, HashMod, labelmap, LabelMap, labeldrop, LabelDrop, labelkeep, LabelKeep, lowercase, Lowercase, uppercase, Uppercase, keepequal, KeepEqual, dropequal, DropEqual

        • spec.endpoints.relabelings.modulus
          integer

          Modulus to take of the hash of the source label values. Only applicable when the action is HashMod.

        • spec.endpoints.relabelings.regex
          string

          Regular expression against which the extracted value is matched.

        • spec.endpoints.relabelings.replacement
          string

          Replacement value against which a Replace action is performed if the regular expression matches. Regex capture groups are available.

        • spec.endpoints.relabelings.separator
          string

          Separator is the string between concatenated SourceLabels.

        • spec.endpoints.relabelings.sourceLabels
          array of strings

          The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.

          • Element of the array
            string

            LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.

            Pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$

        • spec.endpoints.relabelings.targetLabel
          string

          Label to which the resulting string is written in a replacement. It is mandatory for Replace, HashMod, Lowercase, Uppercase, KeepEqual and DropEqual actions. Regex capture groups are available.

      • spec.endpoints.scheme
        string

        HTTP scheme to use for scraping. http and https are the expected values unless you rewrite the __scheme__ label via relabeling. If empty, Prometheus uses the default value http.

        Allowed values: http, https

      • spec.endpoints.scrapeTimeout
        string

        Timeout after which the scrape is ended If not specified, the Prometheus global scrape timeout is used unless it is less than Interval in which the latter is used.

        Pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$

      • spec.endpoints.targetPort
        integer or string

        Name or number of the target port of the Pod behind the Service, the port must be specified with container port property. Mutually exclusive with port.

      • spec.endpoints.tlsConfig
        object

        TLS configuration to use when scraping the endpoint

        • spec.endpoints.tlsConfig.ca
          object

          Certificate authority used when verifying server certificates.

          • spec.endpoints.tlsConfig.ca.configMap
            object

            ConfigMap containing data to use for the targets.

            • spec.endpoints.tlsConfig.ca.configMap.key
              string

              Required value

              The key to select.

            • spec.endpoints.tlsConfig.ca.configMap.name
              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            • spec.endpoints.tlsConfig.ca.configMap.optional
              boolean

              Specify whether the ConfigMap or its key must be defined

          • spec.endpoints.tlsConfig.ca.secret
            object

            Secret containing data to use for the targets.

            • spec.endpoints.tlsConfig.ca.secret.key
              string

              Required value

              The key of the secret to select from. Must be a valid secret key.

            • spec.endpoints.tlsConfig.ca.secret.name
              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            • spec.endpoints.tlsConfig.ca.secret.optional
              boolean

              Specify whether the Secret or its key must be defined

        • spec.endpoints.tlsConfig.caFile
          string

          Path to the CA cert in the Prometheus container to use for the targets.

        • spec.endpoints.tlsConfig.cert
          object

          Client certificate to present when doing client-authentication.

          • spec.endpoints.tlsConfig.cert.configMap
            object

            ConfigMap containing data to use for the targets.

            • spec.endpoints.tlsConfig.cert.configMap.key
              string

              Required value

              The key to select.

            • spec.endpoints.tlsConfig.cert.configMap.name
              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            • spec.endpoints.tlsConfig.cert.configMap.optional
              boolean

              Specify whether the ConfigMap or its key must be defined

          • spec.endpoints.tlsConfig.cert.secret
            object

            Secret containing data to use for the targets.

            • spec.endpoints.tlsConfig.cert.secret.key
              string

              Required value

              The key of the secret to select from. Must be a valid secret key.

            • spec.endpoints.tlsConfig.cert.secret.name
              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            • spec.endpoints.tlsConfig.cert.secret.optional
              boolean

              Specify whether the Secret or its key must be defined

        • spec.endpoints.tlsConfig.certFile
          string

          Path to the client cert file in the Prometheus container for the targets.

        • spec.endpoints.tlsConfig.insecureSkipVerify
          boolean

          Disable target certificate validation.

        • spec.endpoints.tlsConfig.keyFile
          string

          Path to the client key file in the Prometheus container for the targets.

        • spec.endpoints.tlsConfig.keySecret
          object

          Secret containing the client key file for the targets.

          • spec.endpoints.tlsConfig.keySecret.key
            string

            Required value

            The key of the secret to select from. Must be a valid secret key.

          • spec.endpoints.tlsConfig.keySecret.name
            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          • spec.endpoints.tlsConfig.keySecret.optional
            boolean

            Specify whether the Secret or its key must be defined

        • spec.endpoints.tlsConfig.serverName
          string

          Used to verify the hostname for the targets.

    • spec.jobLabel
      string

      JobLabel selects the label from the associated Kubernetes service which will be used as the job label for all metrics. For example: If in ServiceMonitor.spec.jobLabel: foo and in Service.metadata.labels.foo: bar, then the job="bar" label is added to all metrics. If the value of this field is empty or if the label doesn’t exist for the given Service, the job label of the metrics defaults to the name of the Kubernetes Service.

    • spec.keepDroppedTargets
      integer

      Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit. It requires Prometheus >= v2.47.0.

    • spec.labelLimit
      integer

      Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.

    • spec.labelNameLengthLimit
      integer

      Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.

    • spec.labelValueLengthLimit
      integer

      Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.

    • spec.namespaceSelector
      object

      Selector to select which namespaces the Kubernetes Endpoints objects are discovered from.

      • spec.namespaceSelector.any
        boolean

        Boolean describing whether all namespaces are selected in contrast to a list restricting them.

      • spec.namespaceSelector.matchNames
        array of strings

        List of namespace names to select from.

    • spec.podTargetLabels
      array of strings

      PodTargetLabels transfers labels on the Kubernetes Pod onto the created metrics.

    • spec.sampleLimit
      integer

      SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.

    • spec.selector
      object

      Required value

      Selector to select Endpoints objects.

      • spec.selector.matchExpressions
        array of objects

        matchExpressions is a list of label selector requirements. The requirements are ANDed.

        A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

        • spec.selector.matchExpressions.key
          string

          Required value

          key is the label key that the selector applies to.

        • spec.selector.matchExpressions.operator
          string

          Required value

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

        • spec.selector.matchExpressions.values
          array of strings

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      • spec.selector.matchLabels
        object

        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

    • spec.targetLabels
      array of strings

      TargetLabels transfers labels from the Kubernetes Service onto the created metrics.

    • spec.targetLimit
      integer

      TargetLimit defines a limit on the number of scraped targets that will be accepted.