feat(ulogd): enabling ulogd #121
|
@ -10,6 +10,7 @@ lib.extra.mkConfig {
|
|||
"k-radius"
|
||||
"networking"
|
||||
"ups"
|
||||
"ulogd"
|
||||
];
|
||||
|
||||
extraConfig = {
|
||||
|
|
56
machines/vault01/ulogd.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services = {
|
||||
ulogd = {
|
||||
enable = true;
|
||||
logLevel = 5;
|
||||
|
||||
settings = {
|
||||
global = {
|
||||
logfile = "/var/log/ulogd.log";
|
||||
stack = [ "ct1:NFCT,ip2str1:IP2STR,pgsql1:PGSQL" ];
|
||||
};
|
||||
ct1 = { };
|
||||
pgsql1 = {
|
||||
db = "ulogd";
|
||||
user = "ulogd";
|
||||
table = "ulog2_ct";
|
||||
procedure = "INSERT_CT";
|
||||
};
|
||||
};
|
||||
rlahfa marked this conversation as resolved
Outdated
rlahfa
commented
`connstring = "postgresql:///ulogd?host=/run/postgresql";` should work in principle
lbailly
commented
it doesn't want a connection URI, but really a connection string, as in section 31.1.1.1. of the postgres doc. In the end, I just don't give network connection information and it behave as expected. it doesn't want a connection URI, but really a connection string, as in section 31.1.1.1. of the [postgres doc](https://www.postgresql.org/docs/9.2/libpq-connect.html#LIBPQ-CONNSTRING). In the end, I just don't give network connection information and it behave as expected.
|
||||
};
|
||||
postgresql = {
|
||||
enable = true;
|
||||
identMap = ''
|
||||
ulogd-map root ulogd
|
||||
'';
|
||||
authentication = ''
|
||||
lbailly marked this conversation as resolved
Outdated
rlahfa
commented
The The `root` user is unnecessary
lbailly
commented
I removed the root user in the database. I removed the root user in the database.
|
||||
local ulogd ulogd peer map=ulogd-map
|
||||
'';
|
||||
|
||||
ensureUsers = [
|
||||
rlahfa marked this conversation as resolved
Outdated
rlahfa
commented
`ulogd` user is unnecessary as ulogd may require `root` privileges for now
lbailly
commented
we need a user to access the database, and I'm not willing to use the 'postgres' user for such operations we need a user to access the database, and I'm not willing to use the 'postgres' user for such operations
|
||||
{
|
||||
name = "ulogd";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
ensureDatabases = [ "ulogd" ];
|
||||
};
|
||||
};
|
||||
systemd.services.ulogd = {
|
||||
serviceConfig.StateDirectory = "ulogd";
|
||||
requires = [ "postgresql.service" ];
|
||||
after = [ "postgresql.service" ];
|
||||
thubrecht
commented
Je ne pense pas que ça fasse ce que tu veux Je ne pense pas que ça fasse ce que tu veux
lbailly
commented
Le but c'est que le script ne soit exec que quand le serveur s'initialise, il suppr toute les données. Le but c'est que le script ne soit exec que quand le serveur s'initialise, il suppr toute les données.
Je peux pas utiliser .first_statup car il est suppr au tout début de postStart, ducoup je recréer le flag.
thubrecht
commented
Mais en pratique ça ne tourne jamais donc je vois pas trop l'intérêt de le mettre Mais en pratique ça ne tourne jamais donc je vois pas trop l'intérêt de le mettre
lbailly
commented
si on doit redéployer un routeur avec log, on aura le nécessaire dans le module sans avoir à recheck comment deploy ulogd, sinon le si on doit redéployer un routeur avec log, on aura le nécessaire dans le module sans avoir à recheck comment deploy ulogd, sinon le `ensureUsers` et `ensureDatabases` ne servent pas non plus...
lbailly
commented
En vérité, il faudrait plutôt check l'existence des tables pour le cas où le module est déployé sur une machine qui a déjà un pgsql, mais bon... En vérité, il faudrait plutôt check l'existence des tables pour le cas où le module est déployé sur une machine qui a déjà un pgsql, mais bon...
thubrecht
commented
Oui, ou alors faire un preStart dans l'unit de ulogd en sauvegardant le state dans Oui, ou alors faire un preStart dans l'unit de ulogd en sauvegardant le state dans `var/lib/ulogd`, dans ce cas on pourra charger les tables lors de la première activation du module
|
||||
path = [ config.services.postgresql.package ];
|
||||
preStart = lib.mkAfter ''
|
||||
if ! test -e "/var/lib/ulogd/.initialized"; then
|
||||
psql -f "${pkgs.ulogd.doc}/share/doc/ulogd-pgsql/pgsql-ulogd2.sql" -d ulogd -U ulogd
|
||||
touch "/var/lib/ulogd/.initialized"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
Si ça fonctionne désormais ce n'est pas la peine d'activer les logs de debug, à part spammer journald
D'après la doc, 5 correspond au niveau notice de log, 1 serai debug. Si tu veux on peut monter à 7 pour avoir que les erreurs.