Prometheus Exporter for updown.io
Metrics names are prefixed updown_
.
Name | Type | Description |
---|---|---|
checks_enabled |
Counter | Status of Check (enabled=1) |
exporter_build_info |
Counter | Exporter build info |
metrics_response_times |
Histogram | Histogram of a Check's response times |
ghcr.io/dazwilkin/updown-exporter:68b7deaf3a91182d3500928ba7a42068f0cc2cc8
updown-exporter
container images are being signed by Sigstore and may be verified:
cosign verify \
--key=./cosign.pub \
ghcr.io/dazwilkin/updown-exporter:68b7deaf3a91182d3500928ba7a42068f0cc2cc8
NOTE cosign.pub
may be downloaded here
To install cosign
, e.g.:
go install github.com/sigstore/cosign/cmd/cosign@latest
The Exporter needs access to an updown API Key
export API_KEY="[YOUR-API-KEY]"
export API_KEY="[YOUR-API-KEY]"
go run . \
--endpoint=0.0.0.0:8080 \
--path=/metrics
API_KEY="[YOUR-API-KEY]"
IMAGE="ghcr.io/dazwilkin/updown-exporter:68b7deaf3a91182d3500928ba7a42068f0cc2cc8"
podman run \
--interactive --tty --rm \
--publish=8080:8080 \
--env=API_KEY=${API_KEY} \
${IMAGE} \
--endpoint=0.0.0.0:8080 \
--path=/metrics
Then browse http://localhost:8080/metrics
to view the metrics.
prometheus.yml
:
global:
scrape_interval: 1m
evaluation_interval: 1m
scrape_configs:
# updown Exporter
- job_name: "updown-exporter"
static_configs:
- targets:
- "localhost:8080"
API_KEY="[YOUR-API-KEY]"
IMAGE="ghcr.io/dazwilkin/updown-exporter:68b7deaf3a91182d3500928ba7a42068f0cc2cc8"
docker run \
--detach --tty --rm \
--name="updown-exporter" \
--env=API_KEY=${API_KEY} \
--publish=8080:8080/tcp \
${IMAGE} \
--endpoint=0.0.0.0:8080 \
--path=/metrics
docker run \
--detach --rm --tty \
--name="prometheus" \
--publish=9090:9090/tcp \
--volume=${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
docker.io/prom/prometheus:v2.36.2 \
--config.file=/etc/prometheus/prometheus.yml \
--web.enable-lifecycle
Then browse:
API_KEY="[YOUR-API-KEY]"
IMAGE="ghcr.io/dazwilkin/updown-exporter:68b7deaf3a91182d3500928ba7a42068f0cc2cc8"
POD="updown-exporter"
podman pod create \
--name=${POD} \
--publish=5555:8080/tcp \
--publish=9090:9090/tcp
podman run \
--interactive --tty --rm \
--pod=${POD} \
--name="updown-exporter" \
--env=API_KEY=${API_KEY} \
${IMAGE} \
--endpoint=0.0.0.0:8080 \
--path=/metrics
podman run \
--detach --rm --tty \
--pod=${POD} \
--name="prometheus" \
--volume=${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
docker.io/prom/prometheus:v2.36.2 \
--config.file=/etc/prometheus/prometheus.yml \
--web.enable-lifecycle
Then browse:
if [ "$(getconf LONG_BIT)" -eq 64 ]
then
# 64-bit Raspian
ARCH="GOARCH=arm64"
TAG="arm64"
else
# 32-bit Raspian
ARCH="GOARCH=arm GOARM=7"
TAG="arm32v7"
fi
podman build \
--build-arg=GOLANG_OPTIONS="CGO_ENABLED=0 GOOS=linux ${ARCH}" \
--build-arg=COMMIT=$(git rev-parse HEAD) \
--build-arg=VERSION=$(uname --kernel-release) \
--tag=ghcr.io/dazwilkin/updown-exporter:${TAG} \
--file=./Dockerfile \
.