services/monitoring: add tracing via Grafana Tempo
This commit is contained in:
parent
e05eae181e
commit
a6f613dc31
2 changed files with 75 additions and 0 deletions
|
@ -30,6 +30,9 @@ let
|
||||||
myNode = hosts.${config.networking.hostName};
|
myNode = hosts.${config.networking.hostName};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
./tracing.nix
|
||||||
|
];
|
||||||
age.secrets.grafana-secrets = {
|
age.secrets.grafana-secrets = {
|
||||||
file = ../../../../secrets/grafana-secrets.age;
|
file = ../../../../secrets/grafana-secrets.age;
|
||||||
};
|
};
|
||||||
|
|
72
hosts/VEGAS/services/monitoring/tracing.nix
Normal file
72
hosts/VEGAS/services/monitoring/tracing.nix
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
dataDir = "/srv/storage/private/tempo";
|
||||||
|
tempoConfig = {
|
||||||
|
server = {
|
||||||
|
http_listen_address = "127.0.0.1";
|
||||||
|
http_listen_port = config.ports.tempo;
|
||||||
|
grpc_listen_address = "127.0.0.1";
|
||||||
|
grpc_listen_port = config.ports.tempo-grpc;
|
||||||
|
};
|
||||||
|
distributor.receivers.otlp = {
|
||||||
|
protocols = {
|
||||||
|
http.endpoint = "127.0.0.1:${config.portsStr.tempo-otlp-http}";
|
||||||
|
grpc.endpoint = "127.0.0.1:${config.portsStr.tempo-otlp-grpc}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ingester = {
|
||||||
|
trace_idle_period = "30s";
|
||||||
|
max_block_bytes = 1000000;
|
||||||
|
max_block_duration = "5m";
|
||||||
|
};
|
||||||
|
compactor = {
|
||||||
|
compaction = {
|
||||||
|
compaction_window = "1h";
|
||||||
|
max_block_bytes = 100000000;
|
||||||
|
compacted_block_retention = "10m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
storage.trace = {
|
||||||
|
backend = "local";
|
||||||
|
block = {
|
||||||
|
bloom_filter_false_positive = 0.05;
|
||||||
|
index_downsample_bytes = 1000;
|
||||||
|
encoding = "zstd";
|
||||||
|
};
|
||||||
|
wal.path = "${dataDir}/wal";
|
||||||
|
wal.encoding = "snappy";
|
||||||
|
local.path = "${dataDir}/blocks";
|
||||||
|
pool = {
|
||||||
|
max_workers = 16;
|
||||||
|
queue_depth = 1000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
reservePortsFor = [ "tempo" "tempo-grpc" "tempo-otlp-http" "tempo-otlp-grpc" ];
|
||||||
|
|
||||||
|
users.users.tempo = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "tempo";
|
||||||
|
home = dataDir;
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.tempo = {};
|
||||||
|
|
||||||
|
systemd.services.tempo = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.tempo}/bin/tempo -config.file=${pkgs.writeText "tempo.yaml" (builtins.toJSON tempoConfig)}";
|
||||||
|
PrivateTmp = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.grafana.provision.datasources = [
|
||||||
|
{
|
||||||
|
name = "Tempo";
|
||||||
|
url = "http://127.0.0.1:${config.portsStr.tempo}";
|
||||||
|
type = "tempo";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
Loading…
Reference in a new issue