Alloy http monitor
Jump to navigation
Jump to search
// config.alloy
prometheus.exporter.blackbox "my_blackbox_exporter" {
// Define modules directly within the Alloy config
config = {
modules = {
http_2xx = {
prober = "http",
timeout = "5s",
http = {
valid_http_versions = ["HTTP/1.1", "HTTP/2.0"],
no_follow_redirects = false,
preferred_ip_protocol = "ipv4",
# Other http options can go here, e.g., headers, method, etc.
}
},
tcp_connect = {
prober = "tcp",
timeout = "5s",
},
icmp_ping = {
prober = "icmp",
timeout = "5s",
},
}
}
// Define the targets to probe
target {
name = "google_website"
address = "https://google.com"
module = "http_2xx"
labels = {
instance = "google-website-probe",
env = "production",
type = "website"
}
}
target {
name = "cloudflare_dns"
address = "1.1.1.1:53"
module = "tcp_connect"
labels = {
instance = "cloudflare-dns-probe",
env = "production",
type = "dns"
}
}
target {
name = "my_backend_api"
address = "http://my-internal-api:80/healthz"
module = "http_2xx"
labels = {
instance = "backend-api-probe",
env = "development",
type = "api"
}
}
}
// Scrape metrics from the Blackbox Exporter
prometheus.scrape "blackbox_scrapes" {
targets = prometheus.exporter.blackbox.my_blackbox_exporter.targets
forward_to = [prometheus.remote_write.mimir_receiver.receiver]
scrape_interval = "30s"
scrape_timeout = "15s"
}
// Send metrics to Mimir
prometheus.remote_write "mimir_receiver" {
endpoint {
url = "http://your-mimir-endpoint:9009/api/v1/push" // Replace with your Mimir push gateway URL
// ... (basic_auth, tls as needed)
}
}
logging {
level = "info"
format = "logfmt"
}