VictoriaMetrics/docs/sd_configs.md
2022-08-05 14:15:40 +03:00

10 KiB

sort
24

Prometheus service discovery

vmagent and single-node VictoriaMetrics supports the following Prometheus-compatible service discovery options for Prometheus-compatible scrape targets in the file pointed by -promscrape.config command-line flag.

  • azure_sd_configs - is for scraping the targets registered in Azure Cloud. See these docs for details.
  • consul_sd_configs is for discovering and scraping targets registered in Consul. See consul_sd_config for details.
  • digitalocean_sd_configs is for discovering and scraping targerts registered in DigitalOcean. See digitalocean_sd_config for details.
  • dns_sd_configs is for discovering and scraping targets from DNS records (SRV, A and AAAA). See dns_sd_config for details.
  • docker_sd_configs is for discovering and scraping Docker targets. See docker_sd_config for details.
  • dockerswarm_sd_configs is for discovering and scraping Docker Swarm targets. See dockerswarm_sd_config for details.
  • ec2_sd_configs is for discovering and scraping Amazon EC2 targets. See ec2_sd_config for details. vmagent doesn't support the profile config param yet.
  • eureka_sd_configs is for discovering and scraping targets registered in Netflix Eureka. See eureka_sd_config for details.
  • file_sd_configs is for scraping targets defined in external files (aka file-based service discovery). See these docs for details.
  • gce_sd_configs is for discovering and scraping Google Compute Engine (GCE) targets. See gce_sd_config for details. vmagent provides the following additional functionality for gce_sd_config:
    • if project arg is missing then vmagent uses the project for the instance where it runs;
    • if zone arg is missing then vmagent uses the zone for the instance where it runs;
    • if zone arg equals to "*", then vmagent discovers all the zones for the given project;
    • zone may contain a list of zones, i.e. zone: [us-east1-a, us-east1-b].
  • http_sd_configs is for discovering and scraping targerts provided by external http-based service discovery. See http_sd_config for details.
  • kubernetes_sd_configs is for discovering and scraping Kubernetes (K8S) targets. See kubernetes_sd_config for details.
  • openstack_sd_configs is for discovering and scraping OpenStack targets. See openstack_sd_config for details. OpenStack identity API v3 is supported only.
  • static_configs is for scraping statically defined targets. See these docs for details.
  • yandexcloud_sd_configs is for discoverying and scraping Yandex Cloud targets. See these docs for details.

Note that the refresh_interval option isn't supported for these scrape configs. Use the corresponding -promscrape.*CheckInterval command-line flag instead. For example, -promscrape.consulSDCheckInterval=60s sets refresh_interval for all the consul_sd_configs entries to 60s. Run vmagent -help or victoria-metrics -help in order to see default values for the -promscrape.*CheckInterval flags.

Please file feature requests to our issue tracker if you need other service discovery mechanisms to be supported by VictoriaMetrics and vmagent.

azure_sd_configs

Azure SD configurations allow retrieving scrape targets from Microsoft Azure VMs.

The following meta labels are available on targets during relabeling:

  • __meta_azure_machine_id: the machine ID
  • __meta_azure_machine_location: the location the machine runs in
  • __meta_azure_machine_name: the machine name
  • __meta_azure_machine_computer_name: the machine computer name
  • __meta_azure_machine_os_type: the machine operating system
  • __meta_azure_machine_private_ip: the machine's private IP
  • __meta_azure_machine_public_ip: the machine's public IP if it exists
  • __meta_azure_machine_resource_group: the machine's resource group
  • __meta_azure_machine_tag_<tagname>: each tag value of the machine
  • __meta_azure_machine_scale_set: the name of the scale set which the vm is part of (this value is only set if you are using a scale set)
  • __meta_azure_subscription_id: the subscription ID
  • __meta_azure_tenant_id: the tenant ID

Configuration example:

scrape_configs:
- job_name: azure
  azure_sd_configs:
    # subscription_id is a mandatory subscription ID.
    subscription_id: "..."

    # environment is an optional Azure environment. By default "AzurePublicCloud" is used.
    # environment: ...

    # authentication_method is an optional authentication method, either OAuth or ManagedIdentity.
    # See https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview
    # By default OAuth is used.
    # authentication_method: ...

    # tenant_id is an optional tenant ID. Only required with authentication_method OAuth.
    # tenant_id: "..."

    # client_id is an optional client ID. Only required with authentication_method OAuth.
    # client_id: "..."

    # client_secret is an optional client secret. Only required with authentication_method OAuth.
    # client_secret: "..."

    # resource_group is an optional resource group name. Limits discovery to this resource group. 
    # resource_group: "..."

    # port is an optional port to scrape metrics from.
    # port: ...

    # proxy_url is an optional URL for the proxy to use for all the API requests.
    # proxy_url: "..."

    # tls_config is an optional TLS configuration.
    # See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#tls_config
    # tls_config:
    #   cert_file: ...
    #   key_file: ...

yandexcloud_sd_configs

Yandex Cloud SD configurations allow retrieving scrape targets from accessible folders.

Only compute instances currently supported and the following meta labels are available on targets during relabeling:

  • __meta_yandexcloud_instance_name: the name of instance
  • __meta_yandexcloud_instance_id: the id of instance
  • __meta_yandexcloud_instance_fqdn: generated FQDN for instance
  • __meta_yandexcloud_instance_status: the status of instance
  • __meta_yandexcloud_instance_platform_id: instance platform ID (i.e. "standard-v3")
  • __meta_yandexcloud_instance_resources_cores: instance vCPU cores
  • __meta_yandexcloud_instance_resources_core_fraction: instance core fraction
  • __meta_yandexcloud_instance_resources_memory: instance memory
  • __meta_yandexcloud_folder_id: instance folder ID
  • __meta_yandexcloud_instance_label_<label name>: each label from instance
  • __meta_yandexcloud_instance_private_ip_<interface index>: private IP of network interface
  • __meta_yandexcloud_instance_public_ip_<interface index>: public (NAT) IP of network interface
  • __meta_yandexcloud_instance_private_dns_<record number>: if configured DNS records for private IP
  • __meta_yandexcloud_instance_public_dns_<record number>: if configured DNS records for public IP

Configuration example:

scrape_configs:
- job_name: yandexcloud
  yandexcloud_sd_configs:
    # service is a mandatory option for yandexcloud service discovery
    # currently only "compute" service is supported
  - service: compute

    # api_endpoint is an optional API endpoint for service discovery
    # The https://api.cloud.yandex.net endpoint is used by default.
    # api_endpoint: "https://api.cloud.yandex.net"

    # yandex_passport_oauth_token is an optional OAuth token
    # for querying yandexcloud API. See https://cloud.yandex.com/en-ru/docs/iam/concepts/authorization/oauth-token
    # yandex_passport_oauth_token: "..."

    # tls_config is an optional tls config.
    # See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#tls_config
    # tls_config:
    #   cert_file: ...
    #   key_file: ...

Yandex Cloud SD support both user OAuth token and instance service account if yandex_passport_oauth_token is omitted:

scrape_configs:
- job_name: YC_with_oauth
  yandexcloud_sd_configs:
  - service: compute
    yandex_passport_oauth_token: "AQAAAAAsfasah<...>7E10SaotuL0"
  relabel_configs:
  - source_labels: [__meta_yandexcloud_instance_public_ip_0]
    target_label: __address__
    replacement: "$1:9100"

- job_name: YC_with_Instance_service_account
  yandexcloud_sd_configs:
  - service: compute
  relabel_configs:
  - source_labels: [__meta_yandexcloud_instance_private_ip_0]
    target_label: __address__
    replacement: "$1:9100"