Add Nagios output for the aggregator
diff --git a/heka/files/lua/encoders/status_nagios.lua b/heka/files/lua/encoders/status_nagios.lua
index c032d17..0507a10 100644
--- a/heka/files/lua/encoders/status_nagios.lua
+++ b/heka/files/lua/encoders/status_nagios.lua
@@ -19,6 +19,7 @@
local lma = require 'lma_utils'
local interp = require "msg_interpolate"
+local host = read_config('nagios_host')
-- Nagios CGI cannot accept 'plugin_output' parameter greater than 1024 bytes
-- See bug #1517917 for details.
-- With the 'cmd.cgi' re-implementation for the command PROCESS_SERVICE_CHECK_RESULT,
@@ -60,7 +61,11 @@
return -1
end
- data['host'] = read_message('Fields[hostname]') or read_message('Hostname')
+ if host then
+ data['host'] = host
+ else
+ data['host'] = read_message('Fields[hostname]') or read_message('Hostname')
+ end
data['service'] = service_name
data['plugin_state'] = nagios_state_map[status]
diff --git a/heka/map.jinja b/heka/map.jinja
index e894f4b..00291d0 100644
--- a/heka/map.jinja
+++ b/heka/map.jinja
@@ -36,6 +36,7 @@
{% set default_influxdb_timeout = 5000 %}
{% set default_aggregator_port = 5565 %}
{% set default_nagios_port = 8001 %}
+{% set default_nagios_host_alarm_clusters = '00-clusters' %}
{% set log_collector = salt['grains.filter_by']({
'default': {
@@ -67,5 +68,7 @@
'influxdb_port': default_influxdb_port,
'influxdb_time_precision': default_influxdb_time_precision,
'influxdb_timeout': default_influxdb_timeout,
+ 'nagios_port': default_nagios_port,
+ 'nagios_host_alarm_clusters': default_nagios_host_alarm_clusters,
}
}, merge=salt['pillar.get']('heka:aggregator')) %}
diff --git a/heka/meta/heka.yml b/heka/meta/heka.yml
index b648874..a217510 100644
--- a/heka/meta/heka.yml
+++ b/heka/meta/heka.yml
@@ -342,15 +342,23 @@
tag_fields: "deployment_id environment_label tenant_id user_id"
time_precision: "{{ aggregator.influxdb_time_precision }}"
{%- endif %}
-{%- if aggregator.influxdb_host is defined %}
encoder:
+{%- if aggregator.influxdb_host is defined %}
influxdb:
engine: payload
append_newlines: false
prefix_ts: false
{%- endif %}
-{%- if aggregator.influxdb_host is defined %}
+{%- if aggregator.nagios_host is defined %}
+ nagios:
+ engine: sandbox
+ module_file: /usr/share/lma_collector/encoders/status_nagios.lua
+ module_dir: /usr/share/lma_collector/common;/usr/share/heka/lua_modules
+ config:
+ nagios_host: "{{ aggregator.nagios_host_alarm_clusters }}"
+{%- endif %}
output:
+{%- if aggregator.influxdb_host is defined %}
influxdb:
engine: http
address: "http://{{ aggregator.influxdb_host }}:{{ aggregator.influxdb_port }}/write?db={{ aggregator.influxdb_database }}&precision={{ aggregator.influxdb_time_precision }}"
@@ -362,3 +370,17 @@
encoder: influxdb_encoder
timeout: {{ aggregator.influxdb_timeout }}
{%- endif %}
+{%- if aggregator.nagios_host is defined %}
+ nagios_alarm_cluster:
+ engine: http
+ address: "http://{{ aggregator.nagios_host }}:{{aggregator.nagios_port }}/status"
+ message_matcher: "Fields[aggregator] == NIL && Type == 'heka.sandbox.gse_metric' && Fields[no_alerting] == NIL"
+ encoder: nagios_encoder
+ {%- if aggregator.nagios_username is defined and aggregator.nagios_password is defined %}
+ username: {{ aggregator.get('nagios_username') }}
+ password: {{ aggregator.get('nagios_password') }}
+ {%- endif %}
+ max_buffer_size: 1048576
+ max_file_size: 524288
+ full_action: drop
+{%- endif %}