2023-07-29 20:48:11 +00:00
|
|
|
# tailscale-exporter
|
|
|
|
|
|
|
|
Exports Prometheus metrics for Tailscale devices and keys.
|
|
|
|
|
|
|
|
## Metrics
|
|
|
|
|
|
|
|
* `tailscale_devices_expiry_seconds_remaining` - The number of seconds remaining until the device authentication expires
|
|
|
|
* `tailscale_devices_expiry_time` - The timestamp (as Unix timestamp) that the device expires
|
|
|
|
* `tailscale_devices_update_available` - Whether the device can be updated to a newer version of Tailscale or not
|
|
|
|
* `tailscale_keys_expiry_seconds_remaining` - The number of seconds remaining until the key expires
|
|
|
|
* `tailscale_keys_expiry_time` - The timestamp (as Unix timestamp) that the key expires
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
The following environment variable can be used to configure the exporter:
|
|
|
|
|
|
|
|
* `TAILSCALE_API_KEY` - A valid Tailscale API key [Required]
|
|
|
|
* `TAILSCALE_TAILNET` - The Tailnet to export metrics for [Required]
|
|
|
|
* `PORT` - The port to run the exporter on (Defaults to `8080`)
|
|
|
|
|
|
|
|
## Running with Docker
|
|
|
|
|
|
|
|
```shell
|
|
|
|
export TAILSCALE_API_KEY="my-tailscale-api-key"
|
|
|
|
export TAILSCALE_TAILNET="my-tailnet.github"
|
2023-07-29 20:59:59 +00:00
|
|
|
docker run --rm -it -p 8080:8080 -e TAILSCALE_API_KEY -e TAILSCALE_TAILNET ghcr.io/averagemarcus/tailscale-exporter:latest
|
2023-07-29 20:48:11 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Then visit: [http://localhost:8080/metrics](http://localhost:8080/metrics)
|
|
|
|
|
|
|
|
## Deploying to Kubernetes
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
apiVersion: v1
|
|
|
|
kind: Secret
|
|
|
|
metadata:
|
|
|
|
name: tailscale-exporter
|
|
|
|
labels:
|
|
|
|
app.kubernetes.io/name: tailscale-exporter
|
|
|
|
stringData:
|
|
|
|
TAILSCALE_API_KEY: xxxx
|
|
|
|
TAILSCALE_TAILNET: xxxx
|
|
|
|
---
|
|
|
|
apiVersion: v1
|
|
|
|
kind: Service
|
|
|
|
metadata:
|
|
|
|
name: tailscale-exporter
|
|
|
|
labels:
|
|
|
|
app.kubernetes.io/name: tailscale-exporter
|
|
|
|
annotations:
|
|
|
|
prometheus.io/scrape: "true"
|
|
|
|
prometheus.io/port: "8080"
|
|
|
|
spec:
|
|
|
|
type: ClusterIP
|
|
|
|
ports:
|
|
|
|
- port: 8080
|
|
|
|
targetPort: 8080
|
|
|
|
selector:
|
|
|
|
app: tailscale-exporter
|
|
|
|
---
|
|
|
|
apiVersion: apps/v1
|
|
|
|
kind: Deployment
|
|
|
|
metadata:
|
|
|
|
name: tailscale-exporter
|
|
|
|
labels:
|
|
|
|
app.kubernetes.io/name: tailscale-exporter
|
|
|
|
spec:
|
|
|
|
replicas: 1
|
|
|
|
selector:
|
|
|
|
matchLabels:
|
|
|
|
app.kubernetes.io/name: tailscale-exporter
|
|
|
|
template:
|
|
|
|
metadata:
|
|
|
|
labels:
|
|
|
|
app.kubernetes.io/name: tailscale-exporter
|
|
|
|
spec:
|
|
|
|
containers:
|
|
|
|
- name: tailscale-exporter
|
2023-07-29 20:59:59 +00:00
|
|
|
image: ghcr.io/averagemarcus/tailscale-exporter:latest
|
2023-07-29 20:48:11 +00:00
|
|
|
imagePullPolicy: Always
|
|
|
|
ports:
|
|
|
|
- containerPort: 8080
|
|
|
|
name: metrics
|
|
|
|
envFrom:
|
|
|
|
- secretRef:
|
|
|
|
name: tailscale-exporter
|
|
|
|
|
|
|
|
```
|