mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-14 06:00:33 +03:00
nixos/prometheus.sachet: add module
This commit is contained in:
parent
6953eca70d
commit
f7e49fae0d
4 changed files with 99 additions and 0 deletions
88
nixos/modules/services/monitoring/prometheus/sachet.nix
Normal file
88
nixos/modules/services/monitoring/prometheus/sachet.nix
Normal file
|
@ -0,0 +1,88 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.prometheus.sachet;
|
||||
configFile = pkgs.writeText "sachet.yml" (builtins.toJSON cfg.configuration);
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.prometheus.sachet = {
|
||||
enable = mkEnableOption "Sachet, an SMS alerting tool for the Prometheus Alertmanager";
|
||||
|
||||
configuration = mkOption {
|
||||
type = types.nullOr types.attrs;
|
||||
default = null;
|
||||
example = literalExample ''
|
||||
{
|
||||
providers = {
|
||||
twilio = {
|
||||
# environment variables gets expanded at runtime
|
||||
account_sid = "$TWILIO_ACCOUNT";
|
||||
auth_token = "$TWILIO_TOKEN";
|
||||
};
|
||||
};
|
||||
templates = [ ./some-template.tmpl ];
|
||||
receivers = [{
|
||||
name = "pager";
|
||||
provider = "twilio";
|
||||
to = [ "+33123456789" ];
|
||||
text = "{{ template \"message\" . }}";
|
||||
}];
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Sachet's configuration as a nix attribute set.
|
||||
'';
|
||||
};
|
||||
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = ''
|
||||
The address Sachet will listen to.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 9876;
|
||||
description = ''
|
||||
The port Sachet will listen to.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = singleton {
|
||||
assertion = cfg.configuration != null;
|
||||
message = "Cannot enable Sachet without a configuration.";
|
||||
};
|
||||
|
||||
systemd.services.sachet = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" "network-online.target" ];
|
||||
script = ''
|
||||
${pkgs.envsubst}/bin/envsubst -i "${configFile}" > /tmp/sachet.yaml
|
||||
exec ${pkgs.prometheus-sachet}/bin/sachet -config /tmp/sachet.yaml -listen-address ${cfg.address}:${builtins.toString cfg.port}
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
Restart = "always";
|
||||
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectControlGroups = true;
|
||||
|
||||
DynamicUser = true;
|
||||
PrivateTmp = true;
|
||||
WorkingDirectory = "/tmp/";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue