mirror of
https://git.sr.ht/~rouven/nixos-config
synced 2024-11-15 13:23:11 +01:00
79 lines
1.8 KiB
Nix
79 lines
1.8 KiB
Nix
{ config, ... }:
|
|
{
|
|
age.secrets."maxmind" = {
|
|
file = ../../../../secrets/shared/maxmind.age;
|
|
};
|
|
users.users."promtail".extraGroups = [ "caddy" ];
|
|
services.prometheus = {
|
|
exporters = {
|
|
node = {
|
|
enable = true;
|
|
enabledCollectors = [ "systemd" ];
|
|
};
|
|
postfix = {
|
|
enable = true;
|
|
};
|
|
};
|
|
};
|
|
services.geoipupdate = {
|
|
enable = true;
|
|
settings = {
|
|
AccountID = 1018346;
|
|
LicenseKey = config.age.secrets."maxmind".path;
|
|
EditionIDs = [
|
|
"GeoLite2-ASN"
|
|
"GeoLite2-City"
|
|
"GeoLite2-Country"
|
|
];
|
|
DatabaseDirectory = "/var/lib/GeoIP";
|
|
};
|
|
};
|
|
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 = "caddy_access_log";
|
|
static_configs = [
|
|
{
|
|
targets = [ "localhost" ];
|
|
labels = {
|
|
job = "caddy_access_log";
|
|
agent = "caddy-promtail";
|
|
__path__ = "/var/log/caddy/*.log";
|
|
};
|
|
}
|
|
];
|
|
pipeline_stages = [
|
|
{
|
|
json.expressions.remote_ip = "request.remote_ip";
|
|
}
|
|
{
|
|
geoip = {
|
|
db = "/var/lib/GeoIP/GeoLite2-City.mmdb";
|
|
source = "remote_ip";
|
|
db_type = "city";
|
|
};
|
|
}
|
|
];
|
|
|
|
}
|
|
];
|
|
};
|
|
};
|
|
networking.firewall.allowedTCPPorts = [
|
|
config.services.prometheus.exporters.node.port
|
|
config.services.prometheus.exporters.postfix.port
|
|
];
|
|
}
|