mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-16 07:16:38 +00:00
Add basic signal metrics (#2107)
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
# netbird Signal Server
|
||||
|
||||
This is a netbird signal-exchange server and client library to exchange connection information between netbird peers
|
||||
This is a netbird signal-exchange server and client library to exchange
|
||||
connection information between netbird peers
|
||||
|
||||
## Command Options
|
||||
The CLI accepts the command **management** with the following options:
|
||||
|
||||
The CLI accepts the the following options:
|
||||
|
||||
```shell
|
||||
start Netbird Signal Server daemon
|
||||
|
||||
@@ -20,24 +23,38 @@ Global Flags:
|
||||
--log-file string sets Netbird log path. If console is specified the the log will be output to stdout (default "/var/log/netbird/signal.log")
|
||||
--log-level string (default "info")
|
||||
```
|
||||
|
||||
## Running the Signal service (Docker)
|
||||
|
||||
We have packed the Signal server into docker image. You can pull the image from Docker Hub and execute it with the following commands:
|
||||
We have packed the Signal server into docker image. You can pull the image from
|
||||
Docker Hub and execute it with the
|
||||
following commands:
|
||||
|
||||
````shell
|
||||
docker pull netbirdio/signal:latest
|
||||
docker run -d --name netbird-signal -p 10000:10000 netbirdio/signal:latest
|
||||
````
|
||||
The default log-level is set to INFO, if you need you can change it using by updating the docker cmd as followed:
|
||||
|
||||
The default log-level is set to INFO, if you need you can change it using by
|
||||
updating the docker cmd as followed:
|
||||
|
||||
````shell
|
||||
docker run -d --name netbird-signal -p 10000:10000 netbirdio/signal:latest --log-level DEBUG
|
||||
````
|
||||
|
||||
### Run with TLS (Let's Encrypt).
|
||||
By specifying the **--letsencrypt-domain** the daemon will handle SSL certificate request and configuration.
|
||||
|
||||
In the following example ```10000``` is the signal service **default** port, and ```443``` will be used as port for Let's Encrypt challenge and HTTP API.
|
||||
> The server where you are running a container has to have a public IP (for Let's Encrypt certificate challenge).
|
||||
By specifying the **--letsencrypt-domain** the daemon will handle SSL
|
||||
certificate request and configuration.
|
||||
|
||||
Replace <YOUR-DOMAIN> with your server's public domain (e.g. mydomain.com or subdomain sub.mydomain.com).
|
||||
In the following example ```10000``` is the signal service **default** port,
|
||||
and ```443``` will be used as port for
|
||||
Let's Encrypt challenge and HTTP API.
|
||||
> The server where you are running a container has to have a public IP (for
|
||||
> Let's Encrypt certificate challenge).
|
||||
|
||||
Replace `<YOUR-DOMAIN>` with your server's public domain (e.g. mydomain.com or
|
||||
subdomain sub.mydomain.com).
|
||||
|
||||
```bash
|
||||
# create a volume
|
||||
@@ -50,14 +67,57 @@ docker run -d --name netbird-signal \
|
||||
netbirdio/signal:latest \
|
||||
--letsencrypt-domain <YOUR-DOMAIN>
|
||||
```
|
||||
|
||||
## Metrics
|
||||
|
||||
The Signal Server exposes the following metrics in Prometheus format:
|
||||
|
||||
### Application Metrics
|
||||
|
||||
- **active_peers**: A Gauge metric that tracks the number of active peers
|
||||
connected to the server.
|
||||
- **peer_connection_duration_seconds**: A Histogram metric that measures the
|
||||
duration a peer was connected in seconds.
|
||||
- **registrations_total**: A Counter metric that counts the total number of peer
|
||||
registrations.
|
||||
- **deregistrations_total**: A Counter metric that counts the total number of
|
||||
peer deregistrations.
|
||||
- **registration_failures_total**: A Counter metric that counts the total number
|
||||
of failed peer registrations. Possible
|
||||
labels:
|
||||
- `error`: The type of error that caused the registration failure (
|
||||
e.g., `missing_id`, `missing_meta`, `failed_header`).
|
||||
- **registration_delay_milliseconds**: A Histogram metric that measures the time
|
||||
it took to register a peer in
|
||||
milliseconds.
|
||||
- **messages_forwarded_total**: A Counter metric that counts the total number of
|
||||
messages forwarded between peers.
|
||||
- **message_forward_failures_total**: A Counter metric that counts the total
|
||||
number of failed message forwards between
|
||||
peers. Possible labels:
|
||||
- `type`: The type of failure (
|
||||
e.g., `error`, `not_connected`, `not_registered`).
|
||||
- **message_forward_latency_milliseconds**: A Histogram metric that measures the
|
||||
latency of message forwarding between
|
||||
peers in milliseconds.
|
||||
|
||||
### Endpoint
|
||||
|
||||
The metrics are exposed in Prometheus format on the `/metrics` endpoint. By
|
||||
default, the server listens on port `9090`,
|
||||
so the full endpoint would be:
|
||||
|
||||
> http://<server_ip>:9090/metrics
|
||||
|
||||
## For development purposes:
|
||||
|
||||
The project uses gRpc library and defines service in protobuf file located in:
|
||||
```proto/signalexchange.proto```
|
||||
```proto/signalexchange.proto```
|
||||
|
||||
To build the project you have to do the following things.
|
||||
|
||||
Install golang gRpc tools:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
|
||||
|
||||
Reference in New Issue
Block a user