-
-
Notifications
You must be signed in to change notification settings - Fork 539
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
27 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,9 @@ | |
This is a netbird signal-exchange server and client library to exchange connection information between netbird peers | ||
|
||
## Command Options | ||
|
||
The CLI accepts the the following options: | ||
|
||
```shell | ||
start Netbird Signal Server daemon | ||
|
||
|
@@ -20,21 +22,29 @@ 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: | ||
````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. | ||
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). | ||
|
@@ -53,8 +63,6 @@ netbirdio/signal:latest \ | |
## Metrics | ||
## Metrics | ||
The Signal Server exposes the following metrics in Prometheus format: | ||
### Application Metrics | ||
|
@@ -63,17 +71,23 @@ The Signal Server exposes the following metrics in Prometheus format: | |
- **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. | ||
- **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. | ||
- **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: | ||
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 | ||
|
@@ -82,11 +96,12 @@ 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/[email protected] | ||
|