blob: fc6afc0e4b6d461694885d264e77763be2ce15da (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
{ config, pkgs, lib, name, ... }:
let
package = pkgs.status-engine-worker.override { config_file = config.secrets.fullPaths."status_engine"; };
env = config.myEnv.tools.status_engine;
in
{
config = lib.mkIf config.myServices.status.enable {
systemd.services.gearmand = {
description = "Gearman daemon";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
DynamicUser = true;
User = "gearmand";
Type = "simple";
ExecStart = "${pkgs.gearmand}/bin/gearmand --syslog -L 127.0.0.1 -q libsqlite3 --libsqlite3-db /var/lib/gearmand/gearmand.db --store-queue-on-shutdown -l stderr -P /run/gearmand/gearmand.pid";
RuntimeDirectory = "gearmand";
StateDirectory = "gearmand";
};
};
secrets.keys."status_engine" = {
permissions = "0400";
user = "naemon";
group = "naemon";
text = ''
node_name: ${name}
use_gearman: 1
gearman:
address: 127.0.0.1
port: 4730
timeout: 1000
use_rabbitmq: 0
use_redis: 1
redis:
address: 127.0.0.1
port: 6379
db: 0
store_live_data_in_archive_backend: 1
use_mysql: 1
mysql:
host: ${env.mysql.remoteHost}
port: ${builtins.toString env.mysql.port}
username: ${env.mysql.user}
password: ${env.mysql.password}
database: ${env.mysql.database}
use_crate: 0
number_of_bulk_records: 100
max_bulk_delay: 5
number_servicestatus_worker: 1
number_hoststatus_worker: 1
number_logentry_worker: 1
number_statechange_worker: 1
number_hostcheck_worker: 1
number_servicecheck_worker: 1
number_misc_worker: 1
process_perfdata: 1
number_perfdata_worker: 1
perfdata_backend:
- mysql
check_for_commands: 1
command_check_interval: 15
external_command_file: /run/naemon/naemon.cmd
query_handler: /run/naemon/naemon.qh
submit_method: qh
syslog_enabled: 1
syslog_tag: statusengine-worker
# Archive age
age_hostchecks: 5
age_host_acknowledgements: 60
age_host_notifications: 60
age_host_statehistory: 365
age_host_downtimes: 60
age_servicechecks: 5
age_service_acknowledgements: 60
age_service_notifications: 60
age_service_statehistory: 365
age_service_downtimes: 60
age_logentries: 5
age_tasks: 1
age_perfdata: 90
disable_http_proxy: 1
'';
};
services.redis.servers."" = rec {
enable = true;
bind = "127.0.0.1";
};
services.cron = {
mailto = "cron@immae.eu";
systemCronJobs = [
"0 0 * * * naemon cd ${package} && ./bin/Console.php cleanup"
];
};
environment.systemPackages = [
pkgs.gearmand
(pkgs.writeScriptBin "status-engine-worker" ''
#! ${pkgs.stdenv.shell}
cd ${package}
exec sudo -E -u naemon ./bin/Console.php "$@"
'')
];
systemd.services.status_engine_worker = {
description = "Status engine worker";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
Restart = "on-failure";
User = "naemon";
ExecStart = "${package}/bin/StatusengineWorker.php";
};
};
};
}
|