Caution
Grafana Alloy is the new name for our distribution of the OTel collector. Grafana Agent has been deprecated and is in Long-Term Support (LTS) through October 31, 2025. Grafana Agent will reach an End-of-Life (EOL) on November 1, 2025. Read more about why we recommend migrating to Grafana Alloy.
Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.
remote.http
remote.http
exposes the response body of a URL to other components. The URL
is polled for changes so that the most recent content is always available.
The most common use of remote.http
is to load discovery targets from an HTTP
server.
Multiple remote.http
components can be specified by giving them different
labels.
Usage
remote.http "LABEL" {
url = "URL_TO_POLL"
}
Arguments
The following arguments are supported:
Name | Type | Description | Default | Required |
---|---|---|---|---|
url | string | URL to poll. | yes | |
poll_frequency | duration | Frequency to poll the URL. | "1m" | no |
poll_timeout | duration | Timeout when polling the URL. | "10s" | no |
is_secret | bool | Whether the response body should be treated as a secret. | false | no |
When remote.http
performs a poll operation, an HTTP GET
request is made
against the URL specified by the url
argument. A poll is triggered by the
following:
- When the component first loads.
- Every time the component’s arguments get re-evaluated.
- At the frequency specified by the
poll_frequency
argument.
The poll is successful if the URL returns a 200 OK
response code. All other
response codes are treated as errors and mark the component as unhealthy. After
a successful poll, the response body from the URL is exported.
Blocks
The following blocks are supported inside the definition of remote.http
:
Hierarchy | Block | Description | Required |
---|---|---|---|
client | client | HTTP client settings when connecting to the endpoint. | no |
client > basic_auth | basic_auth | Configure basic_auth for authenticating to the endpoint. | no |
client > authorization | authorization | Configure generic authorization to the endpoint. | no |
client > oauth2 | oauth2 | Configure OAuth2 for authenticating to the endpoint. | no |
client > oauth2 > tls_config | tls_config | Configure TLS settings for connecting to the endpoint. | no |
client > tls_config | tls_config | Configure TLS settings for connecting to the endpoint. | no |
The >
symbol indicates deeper levels of nesting. For example, client > basic_auth
refers to an basic_auth
block defined inside a client
block.
client block
The client
block configures settings used to connect to the HTTP
server.
Name | Type | Description | Default | Required |
---|---|---|---|---|
bearer_token | secret | Bearer token to authenticate with. | no | |
bearer_token_file | string | File containing a bearer token to authenticate with. | no | |
proxy_url | string | HTTP proxy to proxy requests through. | no | |
follow_redirects | bool | Whether redirects returned by the server should be followed. | true | no |
enable_http_2 | bool | Whether HTTP2 is supported for requests. | true | no |
bearer_token
, bearer_token_file
, basic_auth
, authorization
, and
oauth2
are mutually exclusive and only one can be provided inside of a
http_client_config
block.
basic_auth block
The basic_auth
block configures basic authentication to use when polling the
configured URL.
Name | Type | Description | Default | Required |
---|---|---|---|---|
username | string | Basic auth username. | no | |
password | secret | Basic auth password. | no | |
password_file | string | File containing the basic auth password. | no |
password
and password_file
are mututally exclusive and only one can be
provided inside of a basic_auth
block.
authorization block
The authorization
block configures custom authorization to use when polling
the configured URL.
Name | Type | Description | Default | Required |
---|---|---|---|---|
type | string | Authorization type, for example, “Bearer”. | no | |
credential | secret | Secret value. | no | |
credentials_file | string | File containing the secret value. | no |
credential
and credentials_file
are mutually exclusive and only one can be
provided inside of an authorization
block.
oauth2 block
The oauth2
block configures OAuth2 authorization to use when polling the
configured URL.
Name | Type | Description | Default | Required |
---|---|---|---|---|
client_id | string | OAuth2 client ID. | no | |
client_secret | secret | OAuth2 client secret. | no | |
client_secret_file | string | File containing the OAuth2 client secret. | no | |
scopes | list(string) | List of scopes to authenticate with. | no | |
token_url | string | URL to fetch the token from. | no | |
endpoint_params | map(string) | Optional parameters to append to the token URL. | no | |
proxy_url | string | Optional proxy URL for OAuth2 requests. | no |
client_secret
and client_secret_file
are mututally exclusive and only one
can be provided inside of an oauth2
block.
The oauth2
block may also contain its own separate tls_config
sub-block.
tls_config block
The tls_config
block configures TLS settings for connecting to HTTPS servers.
Name | Type | Description | Default | Required |
---|---|---|---|---|
ca_file | string | CA certificate to validate the server with. | no | |
cert_file | string | Certificate file for client authentication. | no | |
key_file | string | Key file for client authentication. | no | |
server_name | string | ServerName extension to indicate the name of the server. | no | |
insecure_skip_verify | bool | Disables validation of the server certificate. | no | |
min_version | string | Minimum acceptable TLS version. | no |
When min_version
is not provided, the minimum acceptable TLS version is
inherited from Go’s default minimum version, TLS 1.2. If min_version
is
provided, it must be set to one of the following strings:
"TLS10"
(TLS 1.0)"TLS11"
(TLS 1.1)"TLS12"
(TLS 1.2)"TLS13"
(TLS 1.3)
Exported fields
The following field is exported and can be referenced by other components:
Name | Type | Description | Default | Required |
---|---|---|---|---|
content | string or secret | The contents of the file. | no |
If the is_secret
argument was true
, content
is a secret type.
Component health
Instances of remote.http
report as healthy if the most recent HTTP GET
request of the specified URL succeeds.
Debug information
remote.http
does not expose any component-specific debug information.
Debug metrics
remote.http
does not expose any component-specific debug metrics.
Example
This example reads a JSON array of objects from an endpoint and uses them as a set of scrape targets:
remote.http "targets" {
url = env("MY_TARGETS_URL")
}
prometheus.scrape "default" {
targets = json_decode(remote.http.targets.content)
forward_to = [prometheus.remote_write.default.receiver]
}
prometheus.remote_write "default" {
client {
url = env("PROMETHEUS_URL")
}
}