Skip to content

Commit f1b45ca

Browse files
committed
Use Alloy for Blackbox Probing
1 parent 12086f2 commit f1b45ca

File tree

4 files changed

+150
-0
lines changed

4 files changed

+150
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
modules:
2+
http_get_200:
3+
prober: http
4+
timeout: 5s
5+
http:
6+
valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
7+
valid_status_codes: [200] # Defaults to 2xx
8+
method: GET
9+
preferred_ip_protocol: "ip4" # defaults to "ip6"
10+
tls_config:
11+
insecure_skip_verify: true
12+
http_admin_get_200:
13+
prober: http
14+
timeout: 5s
15+
http:
16+
valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
17+
valid_status_codes: [200] # Defaults to 2xx
18+
method: GET
19+
preferred_ip_protocol: "ip4" # defaults to "ip6"
20+
tls_config:
21+
insecure_skip_verify: true
22+
basic_auth:
23+
username: admin
24+
password: admin

observability/examples/alloy/grafana-alloy/elasticsearch.alloy

Whitespace-only changes.
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
2+
// Blackbox Exporter - Probe Observability Stack
3+
prometheus.exporter.blackbox "probe_observability_stack" {
4+
config_file = "/etc/alloy/blackbox.yml"
5+
target {
6+
name = "grafana"
7+
address = "cogstack-observability-traefik-1/grafana/api/health"
8+
module = "http_get_200"
9+
labels = {
10+
"name" = "grafana",
11+
"host" = "localhost",
12+
}
13+
}
14+
15+
target {
16+
name = "prometheus"
17+
address = "cogstack-observability-traefik-1/prometheus/-/healthy"
18+
module = "http_get_200"
19+
labels = {
20+
"name" = "prometheus",
21+
"host" = "localhost",
22+
}
23+
}
24+
}
25+
discovery.relabel "probe_observability_stack_results" {
26+
targets = prometheus.exporter.blackbox.probe_observability_stack.targets
27+
28+
rule {
29+
source_labels = ["__param_target"]
30+
target_label = "instance"
31+
regex = "([^/]+)/(.*)"
32+
replacement = "prometheus-host/$2"
33+
}
34+
35+
rule {
36+
target_label = "job"
37+
replacement = "probe-observability-stack"
38+
}
39+
rule {
40+
target_label = "host"
41+
replacement = "prometheus-host"
42+
}
43+
}
44+
45+
// Blackbox Exporter - Probe External Services
46+
discovery.file "probe_target_files" {
47+
files = ["/etc/alloy/probes/*.yml"]
48+
refresh_interval = "5m"
49+
}
50+
51+
discovery.relabel "probe_target_files_with_defaults" {
52+
targets = discovery.file.probe_target_files.targets
53+
54+
rule {
55+
source_labels = ["job"] // Alloy overrides the job field, this works around it.
56+
target_label = "group"
57+
}
58+
rule {
59+
// Add default module to all calls
60+
source_labels = ["module"]
61+
target_label = "module"
62+
regex = ""
63+
replacement = "http_200_ok"
64+
}
65+
rule {
66+
// Alloy takes the "name" field from the yml file, puts it into the job field as a suffix, then removes name. This brings name back.
67+
source_labels = ["name"]
68+
target_label = "service_name"
69+
}
70+
}
71+
72+
prometheus.exporter.blackbox "probe_discovered_targets" {
73+
config_file = "/etc/alloy/blackbox.yml"
74+
targets = discovery.relabel.probe_target_files_with_defaults.output
75+
}
76+
77+
78+
discovery.relabel "probe_discovered_targets_results" {
79+
targets = prometheus.exporter.blackbox.probe_discovered_targets.targets
80+
81+
rule {
82+
source_labels = ["__param_target"]
83+
target_label = "instance"
84+
}
85+
rule {
86+
// Bring name back
87+
source_labels = ["service_name"]
88+
target_label = "name"
89+
}
90+
rule {
91+
// Bring job back
92+
source_labels = ["group"]
93+
target_label = "job"
94+
}
95+
96+
rule {
97+
regex = "group"
98+
action = "labeldrop"
99+
}
100+
rule {
101+
regex = "service_name"
102+
action = "labeldrop"
103+
}
104+
}
105+
106+
// Scrape Probe targets
107+
prometheus.scrape "blackbox_exporter" {
108+
scrape_interval = "15s"
109+
targets = array.concat(
110+
discovery.relabel.probe_discovered_targets_results.output,
111+
discovery.relabel.probe_observability_stack_results.output,
112+
)
113+
forward_to = [prometheus.remote_write.default.receiver]
114+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Example of probe targets
2+
- targets:
3+
- https://cogstack.org
4+
labels:
5+
name: cogstack-homepage
6+
job: probe-services-alloy
7+
- targets:
8+
- https://cogstack.org
9+
labels:
10+
name: admin_probe
11+
job: probe-services-alloy-2
12+
module: http_admin_get_200

0 commit comments

Comments
 (0)