Add alloy
This commit is contained in:
10
grafana_alloy/rootfs/etc/alloy/config.alloy.template
Normal file
10
grafana_alloy/rootfs/etc/alloy/config.alloy.template
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
$PROMETHEUS_CONFIG
|
||||
|
||||
$UNIX_CONFIG
|
||||
|
||||
$PROCESS_CONFIG
|
||||
|
||||
$ALLOY_CONFIG
|
||||
|
||||
$LOKI_CONFIG
|
||||
160
grafana_alloy/rootfs/etc/cont-init.d/alloy_setup.sh
Executable file
160
grafana_alloy/rootfs/etc/cont-init.d/alloy_setup.sh
Executable file
@@ -0,0 +1,160 @@
|
||||
#!/usr/bin/env bashio
|
||||
|
||||
readonly CONFIG_DIR=/etc/alloy
|
||||
readonly CONFIG_FILE="${CONFIG_DIR}/config.alloy"
|
||||
readonly CONFIG_TEMPLATE="${CONFIG_DIR}/config.alloy.template"
|
||||
|
||||
|
||||
if bashio::config.true 'override_config'; then
|
||||
if bashio::config.is_empty 'override_config_path'; then
|
||||
bashio::config.require 'override_config_path' "Config override is Enabled, must set override_config_path"
|
||||
fi
|
||||
else
|
||||
# Add Prometheus Write Endpoint
|
||||
if bashio::config.true 'enable_prometheus'; then
|
||||
|
||||
bashio::config.require 'prometheus_write_endpoint' "You need to supply Prometheus write endpoint"
|
||||
EXTERNAL_LABELS=""
|
||||
RELABEL_CONFIG=""
|
||||
|
||||
# Prometheus Write Endpoint
|
||||
if bashio::config.has_value 'prometheus_write_endpoint'; then
|
||||
PROMETHEUS_ENDPOINT="$(bashio::config "prometheus_write_endpoint")"
|
||||
fi
|
||||
|
||||
# Servername External Label
|
||||
if bashio::config.has_value 'servername_tag'; then
|
||||
EXTERNAL_LABELS="
|
||||
external_labels = {
|
||||
\"servername\" = \"$(bashio::config "servername_tag")\",
|
||||
}"
|
||||
fi
|
||||
|
||||
# Relabel "instance" tag if configured
|
||||
if bashio::config.has_value 'instance_tag'; then
|
||||
RELABEL_CONFIG="
|
||||
write_relabel_config {
|
||||
action = \"replace\"
|
||||
source_labels = [\"instance\"]
|
||||
target_label = \"instance\"
|
||||
replacement = \"$(bashio::config "instance_tag")\"
|
||||
}"
|
||||
fi
|
||||
export PROMETHEUS_CONFIG="
|
||||
prometheus.remote_write \"default\" {
|
||||
endpoint {
|
||||
url = \"$PROMETHEUS_ENDPOINT\"
|
||||
|
||||
metadata_config {
|
||||
send_interval = \"$(bashio::config "prometheus_scrape_interval")\"
|
||||
}
|
||||
$RELABEL_CONFIG
|
||||
}
|
||||
$EXTERNAL_LABELS
|
||||
}"
|
||||
|
||||
## Enable prometheus.exporter.unix
|
||||
if bashio::config.true 'enable_unix_component'; then
|
||||
export UNIX_CONFIG="
|
||||
prometheus.exporter.unix \"node_exporter\" { }
|
||||
prometheus.scrape \"unix\" {
|
||||
targets = prometheus.exporter.unix.node_exporter.targets
|
||||
forward_to = [prometheus.remote_write.default.receiver]
|
||||
scrape_interval = \"$(bashio::config "prometheus_scrape_interval")\"
|
||||
}"
|
||||
fi
|
||||
|
||||
## Enable prometheus.exporter.process
|
||||
if bashio::config.true 'enable_process_component'; then
|
||||
export PROCESS_CONFIG="
|
||||
prometheus.exporter.process \"process_exporter\" {
|
||||
matcher {
|
||||
name = \"{{.Comm}}\"
|
||||
cmdline = [\".+\"]
|
||||
}
|
||||
}
|
||||
prometheus.scrape \"process\" {
|
||||
targets = prometheus.exporter.process.process_exporter.targets
|
||||
forward_to = [prometheus.remote_write.default.receiver]
|
||||
scrape_interval = \"$(bashio::config "prometheus_scrape_interval")\"
|
||||
}"
|
||||
fi
|
||||
|
||||
export ALLOY_CONFIG="
|
||||
prometheus.exporter.self \"alloy\" { }
|
||||
prometheus.scrape \"self\" {
|
||||
targets = prometheus.exporter.self.alloy.targets
|
||||
forward_to = [prometheus.remote_write.default.receiver]
|
||||
scrape_interval = \"$(bashio::config "prometheus_scrape_interval")\"
|
||||
}"
|
||||
fi
|
||||
|
||||
# Add Loki to config if endpoint is supplied
|
||||
if bashio::config.true 'enable_loki'; then
|
||||
|
||||
bashio::config.require 'loki_endpoint' "You need to supply Loki endpoint"
|
||||
|
||||
if bashio::config.has_value 'servername_tag'; then
|
||||
labels="{component = \"loki.source.journal\", servername = \"$(bashio::config "servername_tag")\"}"
|
||||
else
|
||||
labels="{component = \"loki.source.journal\"}"
|
||||
fi
|
||||
|
||||
if bashio::config.true 'enable_loki_syslog'; then
|
||||
syslog_config="
|
||||
loki.source.syslog \"syslog\" {
|
||||
listener {
|
||||
address = \"0.0.0.0:5601\"
|
||||
labels = { component = \"loki.source.syslog\", protocol = \"tcp\" }
|
||||
}
|
||||
listener {
|
||||
address = \"0.0.0.0:5514\"
|
||||
protocol = \"udp\"
|
||||
labels = { component = \"loki.source.syslog\", protocol = \"udp\"}
|
||||
}
|
||||
forward_to = [loki.write.endpoint.receiver]
|
||||
}"
|
||||
else
|
||||
syslog_config=""
|
||||
fi
|
||||
|
||||
export LOKI_CONFIG="
|
||||
loki.relabel \"journal\" {
|
||||
forward_to = []
|
||||
rule {
|
||||
source_labels = [\"__journal__systemd_unit\"]
|
||||
target_label = \"unit\"
|
||||
}
|
||||
rule {
|
||||
source_labels = [\"__journal__hostname\"]
|
||||
target_label = \"nodename\"
|
||||
}
|
||||
rule {
|
||||
source_labels = [\"__journal_syslog_identifier\"]
|
||||
target_label = \"syslog_identifier\"
|
||||
}
|
||||
rule {
|
||||
source_labels = [\"__journal_container_name\"]
|
||||
target_label = \"container_name\"
|
||||
}
|
||||
rule {
|
||||
action = \"drop\"
|
||||
source_labels = [\"syslog_identifier\"]
|
||||
regex = \"audit\"
|
||||
}
|
||||
}
|
||||
loki.source.journal \"read\" {
|
||||
forward_to = [loki.write.endpoint.receiver]
|
||||
relabel_rules = loki.relabel.journal.rules
|
||||
labels = $labels
|
||||
path = \"/var/log/journal\"
|
||||
}
|
||||
$syslog_config
|
||||
loki.write \"endpoint\" {
|
||||
endpoint {
|
||||
url = \"$(bashio::config "loki_endpoint")\"
|
||||
}
|
||||
}"
|
||||
fi
|
||||
envsubst < $CONFIG_TEMPLATE > $CONFIG_FILE
|
||||
fi
|
||||
18
grafana_alloy/rootfs/etc/services.d/alloy/run
Executable file
18
grafana_alloy/rootfs/etc/services.d/alloy/run
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bashio
|
||||
# ==============================================================================
|
||||
# Home Assistant Community Add-on: Grafana Alloy
|
||||
# Runs the Grafana Alloy
|
||||
# ==============================================================================
|
||||
|
||||
OVERRIDE_CONFIG=$(bashio::config 'override_config_path')
|
||||
|
||||
if bashio::config.false 'override_config'; then
|
||||
CONFIG_FILE=/etc/alloy/config.alloy
|
||||
else
|
||||
CONFIG_FILE=$OVERRIDE_CONFIG
|
||||
fi
|
||||
bashio::log.info "Starting Grafana Alloy with ${CONFIG_FILE}"
|
||||
bashio::log.info "$(cat ${CONFIG_FILE})"
|
||||
|
||||
# Run Alloy
|
||||
exec /usr/local/bin/alloy run --server.http.listen-addr=0.0.0.0:12345 --disable-reporting --storage.path=/data $CONFIG_FILE
|
||||
5
grafana_alloy/rootfs/run.sh
Executable file
5
grafana_alloy/rootfs/run.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bashio
|
||||
|
||||
/etc/cont-init.d/alloy_setup.sh
|
||||
|
||||
exec /etc/services.d/alloy/run
|
||||
Reference in New Issue
Block a user