]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/monitoring/status_engine.nix
Add status engine website
[perso/Immae/Config/Nix.git] / modules / private / monitoring / status_engine.nix
1 { config, pkgs, lib, name, ... }:
2 let
3 package = pkgs.status_engine.worker.override { config_file = config.secrets.fullPaths."status_engine"; };
4 env = config.myEnv.tools.status_engine;
5 in
6 {
7 config = lib.mkIf config.myServices.status.enable {
8 systemd.services.gearmand = {
9 description = "Gearman daemon";
10 after = [ "network.target" ];
11 wantedBy = [ "multi-user.target" ];
12 serviceConfig = {
13 DynamicUser = true;
14 User = "gearmand";
15 Type = "simple";
16 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";
17 RuntimeDirectory = "gearmand";
18 StateDirectory = "gearmand";
19 };
20 };
21
22 secrets.keys = [{
23 dest = "status_engine";
24 permissions = "0400";
25 user = "naemon";
26 group = "naemon";
27 text = ''
28 node_name: ${name}
29 use_gearman: 1
30 gearman:
31 address: 127.0.0.1
32 port: 4730
33 timeout: 1000
34 use_rabbitmq: 0
35 use_redis: 1
36 redis:
37 address: 127.0.0.1
38 port: 6379
39 db: 0
40 store_live_data_in_archive_backend: 1
41 use_mysql: 1
42 mysql:
43 host: ${env.mysql.remoteHost}
44 port: ${env.mysql.port}
45 username: ${env.mysql.user}
46 password: ${env.mysql.password}
47 database: ${env.mysql.database}
48 use_crate: 0
49 number_of_bulk_records: 100
50 max_bulk_delay: 5
51 number_servicestatus_worker: 1
52 number_hoststatus_worker: 1
53 number_logentry_worker: 1
54 number_statechange_worker: 1
55 number_hostcheck_worker: 1
56 number_servicecheck_worker: 1
57 number_misc_worker: 1
58
59 process_perfdata: 1
60 number_perfdata_worker: 1
61 perfdata_backend:
62 - mysql
63
64 check_for_commands: 1
65 command_check_interval: 15
66 external_command_file: /run/naemon/naemon.cmd
67 query_handler: /run/naemon/naemon.qh
68 submit_method: qh
69
70 syslog_enabled: 1
71 syslog_tag: statusengine-worker
72
73 # Archive age
74 age_hostchecks: 5
75 age_host_acknowledgements: 60
76 age_host_notifications: 60
77 age_host_statehistory: 365
78 age_host_downtimes: 60
79 age_servicechecks: 5
80 age_service_acknowledgements: 60
81 age_service_notifications: 60
82 age_service_statehistory: 365
83 age_service_downtimes: 60
84 age_logentries: 5
85 age_tasks: 1
86 age_perfdata: 90
87
88 disable_http_proxy: 1
89 '';
90 }];
91
92 services.redis = rec {
93 enable = true;
94 bind = "127.0.0.1";
95 };
96
97 systemd.services.status_engine_worker = {
98 description = "Status engine worker";
99 after = [ "network.target" ];
100 wantedBy = [ "multi-user.target" ];
101 serviceConfig = {
102 Type = "simple";
103 Restart = "on-failure";
104 User = "naemon";
105 ExecStart = "${package}/bin/StatusengineWorker.php";
106 };
107 };
108 };
109 }