2024-05-24 15:59:34 +02:00
|
|
|
{ config, ... }:
|
|
|
|
{
|
2024-05-31 14:51:58 +02:00
|
|
|
users.users."promtail".extraGroups = [ "caddy" "systemd-journal" ];
|
2024-05-24 15:59:34 +02:00
|
|
|
services.prometheus = {
|
|
|
|
exporters = {
|
|
|
|
node = {
|
|
|
|
enable = true;
|
|
|
|
enabledCollectors = [ "systemd" ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2024-05-31 14:51:58 +02:00
|
|
|
services.promtail = {
|
|
|
|
enable = true;
|
|
|
|
configuration = {
|
|
|
|
server = {
|
|
|
|
http_listen_port = 3031;
|
|
|
|
grpc_listen_port = 0;
|
|
|
|
};
|
|
|
|
positions = {
|
|
|
|
filename = "/tmp/positions.yaml";
|
|
|
|
};
|
|
|
|
clients = [{
|
|
|
|
url = "http://nuc.vpn.rfive.de:3030/loki/api/v1/push";
|
|
|
|
}];
|
|
|
|
scrape_configs = [
|
|
|
|
{
|
|
|
|
job_name = "journal";
|
|
|
|
journal = {
|
|
|
|
json = false;
|
|
|
|
max_age = "12h";
|
|
|
|
path = "/var/log/journal";
|
|
|
|
labels.job = "systemd-journal";
|
|
|
|
};
|
|
|
|
relabel_configs = [
|
|
|
|
{
|
|
|
|
source_labels = [ "__journal__systemd_unit" ];
|
|
|
|
target_label = "unit";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
source_labels = [ "__journal__hostname" ];
|
|
|
|
target_label = "host";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
source_labels = [ "__journal_priority_keyword" ];
|
|
|
|
target_label = "level";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
source_labels = [ "__journal_syslog_identifier" ];
|
|
|
|
target_label = "syslog_identifier";
|
|
|
|
}
|
|
|
|
];
|
|
|
|
pipeline_stages = [
|
|
|
|
{
|
|
|
|
match = {
|
|
|
|
selector = ''{unit="promtail.servicel"}'';
|
|
|
|
action = "drop";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
];
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
2024-05-24 15:59:34 +02:00
|
|
|
networking.firewall.allowedTCPPorts = [
|
|
|
|
config.services.prometheus.exporters.node.port
|
|
|
|
];
|
|
|
|
}
|