This is documentation for the next version of Agent. For the latest stable release, go to the latest version.
local.file_match
local.file_match
discovers files on the local filesystem using glob patterns and the doublestar library.
Usage
local.file_match "LABEL" {
path_targets = [{"__path__" = DOUBLESTAR_PATH}]
}
Arguments
The following arguments are supported:
Name | Type | Description | Default | Required |
---|---|---|---|---|
path_targets | list(map(string)) | Targets to expand; looks for glob patterns on the __path__ and __path_exclude__ keys. | yes | |
sync_period | duration | How often to sync filesystem and targets. | "10s" | no |
path_targets
uses doublestar style paths.
/tmp/**/*.log
will match all subfolders oftmp
and include any files that end in*.log
./tmp/apache/*.log
will match only files in/tmp/apache/
that end in*.log
./tmp/**
will match all subfolders oftmp
,tmp
itself, and all files.
Exported fields
The following fields are exported and can be referenced by other components:
Name | Type | Description |
---|---|---|
targets | list(map(string)) | The set of targets discovered from the filesystem. |
Each target includes the following labels:
__path__
: Absolute path to the file.
Component health
local.file_match
is only reported as unhealthy when given an invalid
configuration. In those cases, exported fields retain their last healthy
values.
Debug information
local.file_match
does not expose any component-specific debug information.
Debug metrics
local.file_match
does not expose any component-specific debug metrics.
Examples
Send /tmp/logs/*.log
files to Loki
This example discovers all files and folders under /tmp/logs
. The absolute paths are
used by loki.source.file.files
targets.
local.file_match "tmp" {
path_targets = [{"__path__" = "/tmp/logs/**/*.log"}]
}
loki.source.file "files" {
targets = local.file_match.tmp.targets
forward_to = [loki.write.endpoint.receiver]
}
loki.write "endpoint" {
endpoint {
url = LOKI_URL
basic_auth {
username = USERNAME
password = PASSWORD
}
}
}
Replace the following:
LOKI_URL
: The URL of the Loki server to send logs to.USERNAME
: The username to use for authentication to the Loki API.PASSWORD
: The password to use for authentication to the Loki API.
Send Kubernetes pod logs to Loki
This example finds all the logs on pods and monitors them.
discovery.kubernetes "k8s" {
role = "pod"
}
discovery.relabel "k8s" {
targets = discovery.kubernetes.k8s.targets
rule {
source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_label_name"]
target_label = "job"
separator = "/"
}
rule {
source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"]
target_label = "__path__"
separator = "/"
replacement = "/var/log/pods/*$1/*.log"
}
}
local.file_match "pods" {
path_targets = discovery.relabel.k8s.output
}
loki.source.file "pods" {
targets = local.file_match.pods.targets
forward_to = [loki.write.endpoint.receiver]
}
loki.write "endpoint" {
endpoint {
url = LOKI_URL
basic_auth {
username = USERNAME
password = PASSWORD
}
}
}
Replace the following:
LOKI_URL
: The URL of the Loki server to send logs to.USERNAME
: The username to use for authentication to the Loki API.PASSWORD
: The password to use for authentication to the Loki API.