nixos/graphite: add seyren service, graphite alerting dashboard
This commit is contained in:
parent
c396ee9912
commit
75aaeca9d2
@ -18,6 +18,12 @@ let
|
|||||||
${cfg.api.extraConfig}
|
${cfg.api.extraConfig}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
seyrenConfig = {
|
||||||
|
SEYREN_URL = cfg.seyren.seyrenUrl;
|
||||||
|
MONGO_URL = cfg.seyren.mongoUrl;
|
||||||
|
GRAPHITE_URL = cfg.seyren.graphiteUrl;
|
||||||
|
} // cfg.seyren.extraConfig;
|
||||||
|
|
||||||
configDir = pkgs.buildEnv {
|
configDir = pkgs.buildEnv {
|
||||||
name = "graphite-config";
|
name = "graphite-config";
|
||||||
paths = lists.filter (el: el != null) [
|
paths = lists.filter (el: el != null) [
|
||||||
@ -242,11 +248,65 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
seyren = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to enable seyren service.";
|
||||||
|
default = false;
|
||||||
|
type = types.uniq types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
description = "Seyren listening port.";
|
||||||
|
default = 8081;
|
||||||
|
type = types.int;
|
||||||
|
};
|
||||||
|
|
||||||
|
seyrenUrl = mkOption {
|
||||||
|
default = "http://localhost:${toString cfg.seyren.port}/";
|
||||||
|
description = "Host where seyren is accessible.";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
graphiteUrl = mkOption {
|
||||||
|
default = "http://${cfg.web.host}:${toString cfg.web.port}";
|
||||||
|
description = "Host where graphite service runs.";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
mongoUrl = mkOption {
|
||||||
|
default = "mongodb://${config.services.mongodb.bind_ip}:27017/seyren";
|
||||||
|
description = "Mongodb connection string.";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Extra seyren configuration. See
|
||||||
|
<link xlink:href='https://github.com/scobal/seyren#config' />
|
||||||
|
'';
|
||||||
|
type = types.attrsOf types.str;
|
||||||
|
example = literalExample ''
|
||||||
|
{
|
||||||
|
GRAPHITE_USERNAME = "user";
|
||||||
|
GRAPHITE_PASSWORD = "pass";
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf (cfg.carbon.enableAggregator || cfg.carbon.enableCache || cfg.carbon.enableRelay || cfg.web.enable || cfg.api.enable) {
|
config = mkIf (
|
||||||
|
cfg.carbon.enableAggregator ||
|
||||||
|
cfg.carbon.enableCache ||
|
||||||
|
cfg.carbon.enableRelay ||
|
||||||
|
cfg.web.enable ||
|
||||||
|
cfg.api.enable ||
|
||||||
|
cfg.seyren.enable
|
||||||
|
) {
|
||||||
systemd.services.carbonCache = {
|
systemd.services.carbonCache = {
|
||||||
enable = cfg.carbon.enableCache;
|
enable = cfg.carbon.enableCache;
|
||||||
description = "Graphite Data Storage Backend";
|
description = "Graphite Data Storage Backend";
|
||||||
@ -365,6 +425,28 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.seyren = {
|
||||||
|
enable = cfg.seyren.enable;
|
||||||
|
description = "Graphite Alerting Dashboard";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network-interfaces.target" "mongodb.service" ];
|
||||||
|
environment = seyrenConfig;
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.seyren}/bin/seyren -httpPort ${toString cfg.seyren.port}";
|
||||||
|
WorkingDirectory = dataDir;
|
||||||
|
User = "graphite";
|
||||||
|
Group = "graphite";
|
||||||
|
};
|
||||||
|
preStart = ''
|
||||||
|
if ! test -e ${dataDir}/db-created; then
|
||||||
|
mkdir -p ${dataDir}
|
||||||
|
chown -R graphite:graphite ${dataDir}
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mongodb.enable = mkDefault cfg.seyren.enable;
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.pythonPackages.carbon
|
pkgs.pythonPackages.carbon
|
||||||
pkgs.python27Packages.graphite_web
|
pkgs.python27Packages.graphite_web
|
||||||
|
Loading…
x
Reference in New Issue
Block a user