3.8 KiB
tailscalesd
Service discovery for tailscale
Returns a list of services for Prometheus to scrape, with some extra smarts for Guardian Project Ops.
See the prometheus docs for more information on the HTTP service discovery format.
Example
curl http://tailscalesd:9242/
[
{
"labels": {
"__meta_tailscale_device_client_version": "1.52.1-t75d3c9385-g3e9627f3b",
"__meta_tailscale_device_hostname": "gp-ourapp-prod-main",
"__meta_tailscale_device_authorized": "true",
"__meta_tailscale_device_id": "1234678910",
"__meta_tailscale_device_name": "gp-ourapp-prod-main.rocky-rocks.ts.net",
"__meta_tailscale_device_os": "linux",
"__meta_tailscale_tailnet": "ourtailnet"
},
"targets": [
"100.100.100.101"
]
},
{
"labels": {
"__meta_tailscale_device_client_version": "1.52.1-t75d3c9385-g3e9627f3b",
"__meta_tailscale_device_hostname": "ip-10-10-10-10",
"__meta_tailscale_device_authorized": "true",
"__meta_tailscale_device_id": "123456789101",
"__meta_tailscale_device_name": "ip-10-31-0-182.rocky-rocks.ts.net",
"__meta_tailscale_device_os": "linux",
"__meta_tailscale_tailnet": "ourtailnet"
},
"targets": [
"100.100.100.102"
]
}
]
Usage
Deploy with a container
- Container image:
registry.gitlab.com/guardianproject-ops/tailscalesd:VERSION - See versions at:
5749401
Configuration
Configuration values can be set using environment variables, or optionally loaded from an environment file. The settings include:
- host (
TAILSCALESD_HOST): The host address on which the application will bind (designed to be used in a container, BE CAREFUL!). Default is0.0.0.0. - port (
TAILSCALESD_PORT): The port number on which the application will be accessible. Default is9242. - interval (
TAILSCALESD_INTERVAL): The interval on which the Tailscale API is polled in seconds. Default is60. - tailnet (
TAILSCALESD_TAILNET): The Tailscale tailnet identifier (required). - api_key (
TAILSCALESD_API_KEY): The Tailscale API key (required).
Environment File
You can also specify an environment file to load configuration values. The path to the environment file should be set in the TAILSCALESD_ENV_FILE environment variable. All of the config values can be provided in the env file.
Example Environment File (env):
TAILSCALESD_TAILNET=my-tailnet
TAILSCALESD_API_KEY=my-api-key
TAILSCALESD_HOST=127.0.0.1
Monitoring
This service provides the following Prometheus metrics:
tailscalesd_unhandled_background_task_crashes- Type: Counter
- Description: The number of unhandled background task crashes. This counter increases every time a background task crashes without being handled by the application.
tailscalesd_matrix_sd_down- Type: Counter
- Description: The number times a matrix sd host was unreachable. This counter increments each time a connection attempt to a matrix sd host fails.
- Labels:
device_hostname: The hostname of the device that was unreachable.
It also provides HTTP server metrics from trallnag/prometheus-fastapi-instrumentator
Dev
Running the Application
-
Install Dependencies: Ensure that all required dependencies are installed.
poetry install -
Set Configuration: Set the necessary environment variables or create an environment file with the configuration values.
-
Start the Application: Run the application using the following command:
poetry run tailscalesd -
Access the Application: The application will be accessible at
http://<host>:<port>.