Rip more nagios out
This commit is contained in:
parent
6afad6fcd9
commit
ced9d6b983
@ -161,65 +161,6 @@ secret_grafana_matrix_token: !vault |
|
||||
30326666616362366133396562323433323435613232666337336430623230383765346333343232
|
||||
3765346238303835633337636233376263366130303436336439
|
||||
|
||||
# For Nagios
|
||||
secret_nagios_admin_pass: !vault |
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
64333231393831303031616363363030613464653161313531316465346263313063626638363437
|
||||
3965303861646232393663633066363039636637343161340a643162633133336335313632383861
|
||||
34616338636630633539353335336631313361656633333539323130626132356263653436343363
|
||||
3930323538613137370a373861376566376631356564623665313662636562626234643862343863
|
||||
61326232633266633262613931303631396163326266386363366639366639613938
|
||||
secret_nagios_matrix_token: !vault |
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
66366665666437643765366533646666386162393038653262333461376566333366363332643135
|
||||
6233376362633566303939623832636366333330393238370a323766366164393733383736633435
|
||||
37633137626634643530653665613166633439376333633663633561313864396465623036653063
|
||||
6433376138386531380a383762393137613738643538343438633730313135613730613139393536
|
||||
35666133666262383862663637623738643836383633653864626231623034613662646563623936
|
||||
3763356331333561383833386162616664376335333139376363
|
||||
nagios_contacts:
|
||||
- name: matrix
|
||||
host_notification_commands: notify-host-by-matrix
|
||||
service_notification_commands: notify-service-by-matrix
|
||||
host_notification_period: ansible-not-late-at-night
|
||||
service_notification_period: ansible-not-late-at-night
|
||||
extra:
|
||||
- key: contactgroups
|
||||
value: ansible
|
||||
- name: salt
|
||||
host_notification_commands: notify-host-by-email
|
||||
service_notification_commands: notify-service-by-email
|
||||
extra:
|
||||
- key: email
|
||||
value: alerts@babor.tech
|
||||
nagios_commands:
|
||||
# This command is included in the container image
|
||||
- name: check_nrpe
|
||||
command: "$USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$"
|
||||
- name: check_by_ssh
|
||||
command: "$USER1$/check_by_ssh -H $HOSTADDRESS$ -F /opt/nagios/etc/ssh_config -t 30 -q -i /opt/nagios/etc/id_ed25519 -l nagios-checker -C \"$ARG1$\""
|
||||
- name: notify-host-by-matrix
|
||||
command: "/usr/bin/printf \"%b\" \"$NOTIFICATIONTYPE$\\n$HOSTNAME$ is $HOSTSTATE$\\nAddress: $HOSTADDRESS$\\nInfo: $HOSTOUTPUT$\\nDate/Time: $LONGDATETIME$\" | /opt/Custom-Nagios-Plugins/notify-by-matrix"
|
||||
- name: notify-service-by-matrix
|
||||
command: "/usr/bin/printf \"%b\" \"$NOTIFICATIONTYPE$\\nService $HOSTALIAS$ - $SERVICEDESC$ is $SERVICESTATE$\\nInfo: $SERVICEOUTPUT$\\nDate/Time: $LONGDATETIME$\" | /opt/Custom-Nagios-Plugins/notify-by-matrix"
|
||||
nagios_services:
|
||||
# check_by_ssh checks
|
||||
- name: Last Ansible Play
|
||||
command: check_by_ssh!/usr/local/bin/monitoring-scripts/check_file_age /var/lib/ansible-last-run -w 432000 -c 604800
|
||||
- name: Reboot Required
|
||||
command: check_by_ssh!/usr/local/bin/monitoring-scripts/check_reboot_required
|
||||
- name: Unit backup.service
|
||||
command: check_by_ssh!/usr/local/bin/monitoring-scripts/check_systemd_unit backup.service
|
||||
hostgroup: "ansible,!role-hypervisor"
|
||||
- name: Unit backup.timer
|
||||
command: check_by_ssh!/usr/local/bin/monitoring-scripts/check_systemd_unit backup.timer
|
||||
hostgroup: "ansible,!role-hypervisor"
|
||||
# Tag-specific checks
|
||||
# zerotier
|
||||
- name: Unit zerotier-one.service
|
||||
command: check_by_ssh!/usr/local/bin/monitoring-scripts/check_systemd_unit zerotier-one.service
|
||||
hostgroup: tag-zt-personal
|
||||
|
||||
# For Netbox
|
||||
secret_netbox_user_pass: !vault |
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
|
@ -67,16 +67,6 @@
|
||||
tags: [ web, git ]
|
||||
- role: prometheus
|
||||
tags: [ prometheus, monitoring, no-test ]
|
||||
- role: nagios
|
||||
vars:
|
||||
# Definitions for contacts and checks are defined in inventory vars
|
||||
# See group_vars/all.yml if you need to change those
|
||||
nagios_matrix_server: "https://matrix.desu.ltd"
|
||||
nagios_matrix_room: "!NWNCKlNmOTcarMcMIh:desu.ltd"
|
||||
nagios_matrix_token: "{{ secret_nagios_matrix_token }}"
|
||||
nagios_data_dir: /data/nagios
|
||||
nagios_admin_pass: "{{ secret_nagios_admin_pass }}"
|
||||
tags: [ nagios, no-auto ]
|
||||
- role: ingress
|
||||
vars:
|
||||
ingress_head: |
|
||||
|
@ -4,12 +4,6 @@
|
||||
- hosts: tags_nagios
|
||||
gather_facts: yes
|
||||
tasks:
|
||||
- name: assure nagios user
|
||||
ansible.builtin.user: name=nagios-checker state=absent remove=yes
|
||||
tags: [ nagios ]
|
||||
- name: assure nagios user sudo rule file
|
||||
ansible.builtin.file: path=/etc/sudoers.d/50-nagios-checker state=absent
|
||||
tags: [ nagios, sudo ]
|
||||
- name: assure prometheus containers for docker hosts
|
||||
block:
|
||||
- name: assure prometheus node exporter
|
||||
@ -61,10 +55,3 @@
|
||||
- /:/host:ro,rslave
|
||||
tags: [ prometheus ]
|
||||
when: ansible_pkg_mgr == "atomic_container"
|
||||
- hosts: all
|
||||
gather_facts: no
|
||||
tasks:
|
||||
- name: disable nagios user when not tagged
|
||||
ansible.builtin.user: name=nagios-checker state=absent remove=yes
|
||||
when: "'tags_nagios' not in group_names"
|
||||
tags: [ nagios ]
|
||||
|
@ -1,27 +0,0 @@
|
||||
#!/usr/bin/env ansible-playbook
|
||||
# vim:ft=ansible:
|
||||
nagios_data_dir: /data/nagios
|
||||
nagios_admin_pass: foobar
|
||||
nagios_timezone: "America/Chicago"
|
||||
# nagios_contacts:
|
||||
# - name: Bob
|
||||
# host_notification_commands: notify-host-by-email
|
||||
# service_notification_commands: notify-service-by-email
|
||||
# extra:
|
||||
# - key: email
|
||||
# value: bob@mysite.example.com
|
||||
nagios_contacts: []
|
||||
# nagios_commands:
|
||||
# - name: check_thing
|
||||
# command: "$USER1$/check_thing -H $HOSTADDRESS% $ARG1$
|
||||
nagios_commands: []
|
||||
# nagios_services:
|
||||
# - name: HTTP
|
||||
# command: check_http
|
||||
# hostgroup: tag-nagios-checkhttp
|
||||
# - name: SSH
|
||||
# command: check_ssh
|
||||
# - name: Docker
|
||||
# command: foo
|
||||
# hostgroup: "!tag-no-docker"
|
||||
nagios_services: []
|
@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env ansible-playbook
|
||||
# vim:ft=ansible:
|
||||
- name: restart nagios
|
||||
docker_container: name=nagios state=started restart=yes
|
@ -1,41 +0,0 @@
|
||||
# vim:ft=ansible:
|
||||
- name: assure data directory for nagios
|
||||
ansible.builtin.file: path="{{ nagios_data_dir }}" state=directory mode=0755
|
||||
tags: [ nagios ]
|
||||
- name: docker deploy nagios
|
||||
docker_container:
|
||||
name: nagios
|
||||
#image: jasonrivers/nagios
|
||||
image: manios/nagios:latest
|
||||
pull: yes
|
||||
restart_policy: unless-stopped
|
||||
state: absent
|
||||
env:
|
||||
NAGIOSADMIN_USER: admin
|
||||
NAGIOSADMIN_PASS: "{{ nagios_admin_pass }}"
|
||||
NAGIOS_TIMEZONE: "{{ nagios_timezone }}"
|
||||
NAGIOS_FQDN: nagios.desu.ltd
|
||||
networks:
|
||||
- name: web
|
||||
aliases: [ "nagios" ]
|
||||
volumes:
|
||||
- "{{ nagios_data_dir }}/etc:/opt/nagios/etc"
|
||||
- "{{ nagios_data_dir }}/var:/opt/nagios/var"
|
||||
- "{{ nagios_data_dir }}/plugins:/opt/Custom-Nagios-Plugins"
|
||||
- "{{ nagios_data_dir }}/nagiosgraph/var:/opt/nagiosgraph/var"
|
||||
- "{{ nagios_data_dir }}/nagiosgraph/etc:/opt/nagiosgraph/etc"
|
||||
- /dev/null:/opt/nagios/bin/send_nsca
|
||||
tags: [ docker, nagios ]
|
||||
- name: template out scripts for nagios
|
||||
ansible.builtin.template: src="{{ item }}" dest="{{ nagios_data_dir }}/plugins/{{ item }}" owner=root group=root mode=0755
|
||||
with_items:
|
||||
- notify-by-matrix
|
||||
tags: [ nagios, template, plugins ]
|
||||
- name: template out config for nagios
|
||||
ansible.builtin.template: src=nagios-ansible-inventory.cfg.j2 dest="{{ nagios_data_dir }}/etc/objects/ansible.cfg" owner=100 group=101 mode=0644
|
||||
tags: [ nagios, template ]
|
||||
notify: restart nagios
|
||||
- name: assure config file is loaded
|
||||
ansible.builtin.lineinfile: path="{{ nagios_data_dir }}/etc/nagios.cfg" line='cfg_file=/opt/nagios/etc/objects/ansible.cfg'
|
||||
tags: [ nagios, template ]
|
||||
notify: restart nagios
|
@ -1,153 +0,0 @@
|
||||
# {{ ansible_managed }}
|
||||
|
||||
# Templates
|
||||
define host {
|
||||
name ansible-linux-server
|
||||
check_period 24x7
|
||||
check_interval 10
|
||||
retry_interval 3
|
||||
max_check_attempts 10
|
||||
check_command check-host-alive
|
||||
notification_period 24x7
|
||||
notification_interval 120
|
||||
hostgroups ansible
|
||||
check_period 24x7
|
||||
contacts salt
|
||||
register 0
|
||||
}
|
||||
define service {
|
||||
use generic-service
|
||||
name ansible-generic-service
|
||||
max_check_attempts 10
|
||||
check_interval 10
|
||||
retry_interval 2
|
||||
register 0
|
||||
}
|
||||
|
||||
# Default hostgroup
|
||||
define hostgroup {
|
||||
hostgroup_name ansible
|
||||
alias Ansible-managed Hosts
|
||||
}
|
||||
|
||||
# Additional timeperiods for convenience
|
||||
define timeperiod {
|
||||
timeperiod_name ansible-not-late-at-night
|
||||
alias Not Late at Night
|
||||
sunday 07:00-22:00
|
||||
monday 07:00-22:00
|
||||
tuesday 07:00-22:00
|
||||
wednesday 07:00-22:00
|
||||
thursday 07:00-22:00
|
||||
friday 07:00-22:00
|
||||
saturday 07:00-22:00
|
||||
}
|
||||
|
||||
{% if nagios_contacts is defined %}
|
||||
# Contacts
|
||||
# Everything here is defined in nagios_contacts
|
||||
{% for contact in nagios_contacts %}
|
||||
define contact {
|
||||
contact_name {{ contact.name }}
|
||||
alias {{ contact.alias | default(contact.name, true ) }}
|
||||
host_notifications_enabled {{ contact.host_notifications_enabled | default('1', true) }}
|
||||
host_notification_period {{ contact.host_notification_period | default('24x7', true) }}
|
||||
host_notification_options {{ contact.host_notification_options | default('d,u,r,f', true ) }}
|
||||
host_notification_commands {{ contact.host_notification_commands }}
|
||||
service_notifications_enabled {{ contact.service_notifications_enabled | default('1', true) }}
|
||||
service_notification_period {{ contact.service_notification_period | default('24x7', true) }}
|
||||
service_notification_options {{ contact.service_notification_options | default('w,c,r,f', true ) }}
|
||||
service_notification_commands {{ contact.service_notification_commands }}
|
||||
{% if contact.extra is defined %}
|
||||
{% for kvp in contact.extra %}
|
||||
{{ kvp.key }} {{ kvp.value }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
# And a contactgroup
|
||||
define contactgroup {
|
||||
contactgroup_name ansible
|
||||
alias Ansible notification contacts
|
||||
members nagiosadmin
|
||||
}
|
||||
|
||||
{% if nagios_commands is defined %}
|
||||
# Commands
|
||||
# Everything here is defined in nagios_commands
|
||||
{% for command in nagios_commands %}
|
||||
define command {
|
||||
command_name {{ command.name }}
|
||||
command_line {{ command.command }}
|
||||
{% if command.extra is defined %}
|
||||
{% for kvp in command.extra %}
|
||||
{{ kvp.key }} {{ kvp.value }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if nagios_services is defined %}
|
||||
# Services
|
||||
# Everything here is defined in nagios_services
|
||||
{% for service in nagios_services %}
|
||||
define service {
|
||||
use ansible-generic-service
|
||||
service_description {{ service.name }}
|
||||
check_command {{ service.command }}
|
||||
hostgroup_name {{ service.hostgroup | default('ansible', true) }}
|
||||
contact_groups ansible
|
||||
{% if service.extra is defined %}
|
||||
{% for kvp in service.extra %}
|
||||
{{ kvp.key }} {{ kvp.value }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
# Hostgroups
|
||||
{% for role in query('netbox.netbox.nb_lookup', 'device-roles', api_endpoint='https://netbox.desu.ltd', token=netbox_token) %}
|
||||
# Device Role: {{ role.value.name }}
|
||||
# Description: {{ role.value.description }}
|
||||
# Created: {{ role.value.created }}
|
||||
# Updated: {{ role.value.last_updated }}
|
||||
define hostgroup {
|
||||
hostgroup_name role-{{ role.value.slug }}
|
||||
alias {{ role.value.display }}
|
||||
}
|
||||
{% endfor %}
|
||||
{% for tag in query('netbox.netbox.nb_lookup', 'tags', api_endpoint='https://netbox.desu.ltd', token=netbox_token) %}
|
||||
# Tag: {{ tag.value.name }}
|
||||
# Description: {{ tag.value.description }}
|
||||
define hostgroup {
|
||||
hostgroup_name tag-{{ tag.value.slug }}
|
||||
alias {{ tag.value.display }}
|
||||
}
|
||||
{% endfor %}
|
||||
{% for type in query('netbox.netbox.nb_lookup', 'device-types', api_endpoint='https://netbox.desu.ltd', token=netbox_token) %}
|
||||
# Type: {{ type.value.display }}
|
||||
define hostgroup {
|
||||
hostgroup_name device-type-{{ type.value.slug }}
|
||||
alias {{ type.value.display }}
|
||||
}
|
||||
{% endfor %}
|
||||
|
||||
# Inventory Hosts and related services
|
||||
{% for host in groups['tags_nagios'] %}
|
||||
{% set vars = hostvars[host] %}
|
||||
{% if vars.tags is defined %}
|
||||
define host {
|
||||
use ansible-linux-server
|
||||
host_name {{ host }}
|
||||
alias {{ host }}
|
||||
address {{ vars.ansible_host }}
|
||||
hostgroups ansible{% for tag in vars.tags %},tag-{{ tag }}{% endfor %}{% for role in vars.device_roles %},role-{{ role }}{% endfor %}{% if vars.device_types is defined %}{% for type in vars.device_types %},device-type-{{ type }}{% endfor %}{% endif %}
|
||||
|
||||
contact_groups ansible
|
||||
}
|
||||
{% endif %}
|
||||
{% endfor %}
|
@ -1,187 +0,0 @@
|
||||
# {{ ansible_managed }}
|
||||
|
||||
# Templates
|
||||
define host {
|
||||
name ansible-linux-server
|
||||
check_period 24x7
|
||||
check_interval 10
|
||||
retry_interval 3
|
||||
max_check_attempts 10
|
||||
check_command check-host-alive
|
||||
notification_period 24x7
|
||||
notification_interval 120
|
||||
hostgroups ansible
|
||||
check_period 24x7
|
||||
contacts salt
|
||||
register 0
|
||||
}
|
||||
define service {
|
||||
use generic-service
|
||||
name ansible-generic-service
|
||||
max_check_attempts 10
|
||||
check_interval 10
|
||||
retry_interval 2
|
||||
register 0
|
||||
}
|
||||
|
||||
# Default hostgroup
|
||||
define hostgroup {
|
||||
hostgroup_name ansible
|
||||
alias Ansible-managed Hosts
|
||||
}
|
||||
|
||||
# Additional timeperiods for convenience
|
||||
define timeperiod {
|
||||
timeperiod_name ansible-not-late-at-night
|
||||
alias Not Late at Night
|
||||
sunday 07:00-22:00
|
||||
monday 07:00-22:00
|
||||
tuesday 07:00-22:00
|
||||
wednesday 07:00-22:00
|
||||
thursday 07:00-22:00
|
||||
friday 07:00-22:00
|
||||
saturday 07:00-22:00
|
||||
}
|
||||
|
||||
{% if nagios_contacts is defined %}
|
||||
# Contacts
|
||||
# Everything here is defined in nagios_contacts
|
||||
{% for contact in nagios_contacts %}
|
||||
define contact {
|
||||
contact_name {{ contact.name }}
|
||||
alias {{ contact.alias | default(contact.name, true ) }}
|
||||
host_notifications_enabled {{ contact.host_notifications_enabled | default('1', true) }}
|
||||
host_notification_period {{ contact.host_notification_period | default('24x7', true) }}
|
||||
host_notification_options {{ contact.host_notification_options | default('d,u,r,f', true ) }}
|
||||
host_notification_commands {{ contact.host_notification_commands }}
|
||||
service_notifications_enabled {{ contact.service_notifications_enabled | default('1', true) }}
|
||||
service_notification_period {{ contact.service_notification_period | default('24x7', true) }}
|
||||
service_notification_options {{ contact.service_notification_options | default('w,c,r,f', true ) }}
|
||||
service_notification_commands {{ contact.service_notification_commands }}
|
||||
{% if contact.extra is defined %}
|
||||
{% for kvp in contact.extra %}
|
||||
{{ kvp.key }} {{ kvp.value }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
# And a contactgroup
|
||||
define contactgroup {
|
||||
contactgroup_name ansible
|
||||
alias Ansible notification contacts
|
||||
members nagiosadmin
|
||||
}
|
||||
|
||||
{% if nagios_commands is defined %}
|
||||
# Commands
|
||||
# Everything here is defined in nagios_commands
|
||||
{% for command in nagios_commands %}
|
||||
define command {
|
||||
command_name {{ command.name }}
|
||||
command_line {{ command.command }}
|
||||
{% if command.extra is defined %}
|
||||
{% for kvp in command.extra %}
|
||||
{{ kvp.key }} {{ kvp.value }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if nagios_services is defined %}
|
||||
# Services
|
||||
# Everything here is defined in nagios_services
|
||||
{% for service in nagios_services %}
|
||||
define service {
|
||||
use ansible-generic-service
|
||||
service_description {{ service.name }}
|
||||
check_command {{ service.command }}
|
||||
hostgroup_name {{ service.hostgroup | default('ansible', true) }}
|
||||
contact_groups ansible
|
||||
{% if service.extra is defined %}
|
||||
{% for kvp in service.extra %}
|
||||
{{ kvp.key }} {{ kvp.value }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
# Hostgroups
|
||||
{% for role in query('netbox.netbox.nb_lookup', 'device-roles', api_endpoint='https://netbox.desu.ltd', token=netbox_token) %}
|
||||
# Device Role: {{ role.value.name }}
|
||||
# Description: {{ role.value.description }}
|
||||
# Created: {{ role.value.created }}
|
||||
# Updated: {{ role.value.last_updated }}
|
||||
define hostgroup {
|
||||
hostgroup_name role-{{ role.value.slug }}
|
||||
alias {{ role.value.display }}
|
||||
}
|
||||
{% endfor %}
|
||||
{% for tag in query('netbox.netbox.nb_lookup', 'tags', api_endpoint='https://netbox.desu.ltd', token=netbox_token) %}
|
||||
# Tag: {{ tag.value.name }}
|
||||
# Description: {{ tag.value.description }}
|
||||
define hostgroup {
|
||||
hostgroup_name tag-{{ tag.value.slug }}
|
||||
alias {{ tag.value.display }}
|
||||
}
|
||||
{% endfor %}
|
||||
{% for type in query('netbox.netbox.nb_lookup', 'device-types', api_endpoint='https://netbox.desu.ltd', token=netbox_token) %}
|
||||
# Type: {{ type.value.display }}
|
||||
define hostgroup {
|
||||
hostgroup_name device-type-{{ type.value.slug }}
|
||||
alias {{ type.value.display }}
|
||||
}
|
||||
{% endfor %}
|
||||
|
||||
# Hosts
|
||||
{% for host in query('netbox.netbox.nb_lookup', 'devices', api_filter='status=active', api_endpoint='https://netbox.desu.ltd', token=netbox_token) + query('netbox.netbox.nb_lookup', 'virtual-machines', api_filter='status=active', api_endpoint='https://netbox.desu.ltd', token=netbox_token)%}
|
||||
{% if host.value.primary_ip %}
|
||||
{% for tag in host.value.tags %}
|
||||
{% if tag.slug == "nagios" %}
|
||||
# {{ host }}
|
||||
define host {
|
||||
use ansible-linux-server
|
||||
host_name {{ host.value.name }}
|
||||
alias {{ host.value.display }}
|
||||
address {{ host.value.primary_ip.address.split('/',1)[0] }}
|
||||
hostgroups ansible{% for tag in host.value.tags %},tag-{{ tag.slug }}{% endfor %}{% if host.value.device_role is defined -%},role-{{ host.value.device_role.slug }}{% endif %}{% if host.value.role is defined %},role-{{ host.value.role.slug }}{% endif %}{% if host.value.device_type is defined %},device-type-{{ host.value.device_type.slug }}{% endif %}
|
||||
|
||||
contact_groups ansible
|
||||
}
|
||||
{% if host.value.config_context.extra_checks is defined %}
|
||||
{% for check in host.value.config_context.extra_checks %}
|
||||
define service {
|
||||
# Config Context check
|
||||
use ansible-generic-service
|
||||
service_description {{ check.description }}
|
||||
check_command {{ check.command }}
|
||||
host_name {{ host.value.name }}
|
||||
contact_groups ansible
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{# #}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
# Services unique to hosts
|
||||
{% for service in query('netbox.netbox.nb_lookup', 'services', api_endpoint='https://netbox.desu.ltd', token=netbox_token) %}
|
||||
{% if service.value.device %}
|
||||
{% set host_name = service.value.device.name %}
|
||||
{% elif service.value.virtual_machine %}
|
||||
{% set host_name = service.value.virtual_machine.name %}
|
||||
{% endif %}
|
||||
{% if host_name is defined %}
|
||||
# {{ host_name }} - {{ service.value.display }}
|
||||
# Description: {{ service.value.description }}
|
||||
# Created: {{ service.value.created }}
|
||||
# Updated: {{ service.value.last_updated }}
|
||||
{% for tag in service.value.tags %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
@ -1,81 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# notify-by-matrix
|
||||
# Copyright (C) 2021 Vintage Salt <rehashedsalt@cock.li>
|
||||
#
|
||||
# Distributed under terms of the MIT license.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
# Set our Matrix-related vars here
|
||||
MX_TOKEN="{{ nagios_matrix_token }}"
|
||||
MX_SERVER="{{ nagios_matrix_server }}"
|
||||
MX_ROOM="{{ nagios_matrix_room }}"
|
||||
|
||||
# Get a TXN to prefix this particular message with
|
||||
MX_TXN="$(date "+%s")$(( RANDOM % 9999 ))"
|
||||
|
||||
# Read the first line from STDIN
|
||||
# This is supposed to be the NOTIFICATIONTYPE
|
||||
read notiftype
|
||||
prefix=""
|
||||
# https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/macrolist.html#notificationtype
|
||||
case "$notiftype" in
|
||||
PROBLEM)
|
||||
# Large Red Circle (U+1F534)
|
||||
prefix="🔴"
|
||||
;;
|
||||
RECOVERY)
|
||||
# Large Green Circle (U+1F7E2)
|
||||
prefix="🟢"
|
||||
;;
|
||||
ACKNOWLEDGEMENT)
|
||||
# Symbol For Acknowledge (U+2406)
|
||||
prefix="␆"
|
||||
;;
|
||||
FLAPPINGSTART)
|
||||
# Large Orange Circle (U+1F7E0)
|
||||
prefix="🟠"
|
||||
;;
|
||||
FLAPPINGSTOP)
|
||||
# Large Green Circle (U+1F7E2)
|
||||
prefix="🟢"
|
||||
;;
|
||||
FLAPPINGDISABLED)
|
||||
# Bell with Cancellation Stroke (U+1F515)
|
||||
prefix="🔕"
|
||||
;;
|
||||
DOWNTIMESTART)
|
||||
# Bell with Cancellation Stroke (U+1F515)
|
||||
prefix="🔕"
|
||||
;;
|
||||
DOWNTIMEEND)
|
||||
# Bell (U+1F514)
|
||||
prefix="🔔"
|
||||
;;
|
||||
DOWNTIMECANCELLED)
|
||||
# Bell (U+1F514)
|
||||
prefix="🔔"
|
||||
;;
|
||||
*)
|
||||
prefix="$notiftype - "
|
||||
;;
|
||||
esac
|
||||
|
||||
# Read a message from STDIN
|
||||
# NOTE: This is dangerous and stupid and unsanitized
|
||||
read message
|
||||
while read line; do
|
||||
message="${message}\n${line}"
|
||||
done
|
||||
|
||||
# Push it to the channel
|
||||
curl -X PUT \
|
||||
--header 'Content-Type: application/json' \
|
||||
--header 'Accept: application/json' \
|
||||
-d "{
|
||||
\"msgtype\": \"m.text\",
|
||||
\"body\": \"$prefix $message\"
|
||||
}" \
|
||||
"$MX_SERVER/_matrix/client/unstable/rooms/$MX_ROOM/send/m.room.message/$MX_TXN?access_token=$MX_TOKEN"
|
Loading…
x
Reference in New Issue
Block a user