2017-12-08 13:04:35 +00:00
|
|
|
{ pkgs, lib, ... }:
|
|
|
|
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
port = 3001;
|
|
|
|
runit = pkgs.writeDash "runit" ''
|
|
|
|
set -xeuf
|
2019-01-28 07:31:35 +00:00
|
|
|
PATH=${pkgs.mosquitto}/bin:${pkgs.coreutils}/bin
|
2017-12-08 13:04:35 +00:00
|
|
|
name=''${1?must provide name as first arg}
|
|
|
|
state=''${2?must provide state as second arg}
|
|
|
|
# val=''${3?must provide val as third arg}
|
|
|
|
|
|
|
|
# we ignore non-alerting events
|
|
|
|
test $state = alerting || exit 0
|
|
|
|
|
|
|
|
echo $name - $state
|
2019-01-28 07:31:35 +00:00
|
|
|
topic=plug
|
|
|
|
mosquitto_pub -t /bam/$topic/cmnd/POWER -m ON
|
2017-12-08 13:04:35 +00:00
|
|
|
sleep 5
|
2019-01-28 07:31:35 +00:00
|
|
|
mosquitto_pub -t /bam/$topic/cmnd/POWER -m OFF
|
2017-12-08 13:04:35 +00:00
|
|
|
'';
|
|
|
|
in {
|
|
|
|
services.logstash = {
|
|
|
|
package = pkgs.logstash5;
|
|
|
|
enable = true;
|
|
|
|
inputConfig = ''
|
|
|
|
http {
|
|
|
|
port => ${toString port}
|
|
|
|
host => "127.0.0.1"
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
filterConfig = ''
|
|
|
|
'';
|
|
|
|
outputConfig = ''
|
|
|
|
stdout { codec => json }
|
|
|
|
exec { command => "${runit} '%{ruleName}' '%{state}'" }
|
|
|
|
'';
|
|
|
|
extraSettings = ''
|
|
|
|
path.plugins: [ "${pkgs.logstash-output-exec}" ]
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
}
|