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.
import.file
BETA: This is a beta component. Beta components are subject to breaking changes, and may be replaced with equivalent functionality that cover the same use case.
The import.file block imports custom components from a file or a directory and exposes them to the importer.
import.file blocks must be given a label that determines the namespace where custom components are exposed.
Imported directories are treated as single modules to support composability. That means that you can define a custom component in one file and use it in another custom component in another file in the same directory.
Usage
import.file "NAMESPACE" {
filename = PATH_NAME
}Arguments
The following arguments are supported:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
filename | string | Path of the file or directory on disk to watch. | yes | |
detector | string | Which file change detector to use (fsnotify, poll). | "fsnotify" | no |
poll_frequency | duration | How often to poll for file changes. | "1m" | no |
File change detectors
File change detectors detect when the file needs to be re-read from disk. local.file supports two detectors: fsnotify and poll.
fsnotify
The fsnotify detector subscribes to filesystem events, which indicate when the watched file is updated.
This detector requires a filesystem that supports events at the operating system level. Network-based filesystems like NFS or FUSE won’t work.
The component re-reads the watched file when a filesystem event is received. This re-read happens for any filesystem event related to the file, including a permissions change.
fsnotify also polls for changes to the file with the configured poll_frequency as a fallback.
fsnotify stops receiving filesystem events if the watched file has been deleted, renamed, or moved.
The subscription is re-established on the next poll once the watched file exists again.
poll
The poll file change detector causes the watched file to be re-read every poll_frequency, regardless of whether the file changed.
Example
This example imports a module from a file and instantiates a custom component from the import that adds two numbers:
declare "add" {
argument "a" {}
argument "b" {}
export "sum" {
value = argument.a.value + argument.b.value
}
}import.file "math" {
filename = "module.river"
}
math.add "default" {
a = 15
b = 45
}


