diff --git a/README.md b/README.md index 6160bd5c8e4b1f2df88a87494b0410387a926ca1..18c70e9c772defbaec39e8f5adef251388e52e4f 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,6 @@ Hosts from the following groups added to monitoring : * docker_privatebin * gitlab * odoo_server -* owncloud_server Dependencies ------------ diff --git a/templates/nagios.yaml.j2 b/templates/nagios.yaml.j2 index 21cd21d9f9121f22620ad047546f0f51038b6a05..84d951cb31b17cf0a8cc6348df2abab09ec1de9e 100644 --- a/templates/nagios.yaml.j2 +++ b/templates/nagios.yaml.j2 @@ -15,11 +15,6 @@ services: public: ipv4_address: 192.168.239.2 inverseproxy_shared: -{% if inventory_hostname in groups.docker_auth %} - auth_default: - labels: - co.elastic.logs/enabled: "false" -{% else %} labels: co.elastic.logs/enabled: "false" traefik.enable: "true" @@ -27,13 +22,8 @@ services: traefik.http.routers.nagios.rule: "Host(`{{ nagios_url }}`)" traefik.http.routers.nagios.service: "nagios" traefik.http.services.nagios.loadbalancer.server.port: "80" -{% endif %} networks: -{% if inventory_hostname in groups.docker_auth %} - auth_default: - external: true -{% endif %} inverseproxy_shared: external: true public: diff --git a/templates/templates.cfg.j2 b/templates/templates.cfg.j2 index 0dc98d731d9d3cc889c54e5d30977013f0557e75..7979f4600fba8f1f5dc8b81deb56f300447435e8 100644 --- a/templates/templates.cfg.j2 +++ b/templates/templates.cfg.j2 @@ -90,77 +90,89 @@ define host{ define servicegroup{ servicegroup_name web-services alias Services Web - members {% for host in groups['odoo_server'] | sort %}{{ host }},Odoo {{ hostvars[host].odoo_url }},{% endfor %}{% for host in groups['owncloud_server'] | sort %}{{ host }},OwnCloud {{ hostvars[host].cloud_url }},{% endfor %}{% for host in groups['docker_odoo'] | sort %}{% for name, values in hostvars[host].odoo_instances.items() | default([]) %}{% if values.url is defined %}{{ host }},{{ name }} server {{ values.url }},{% endif %}{% if values.domains is defined and values.domains is string %}{{ host }},{{ name }} server {{ values.domains }},{% else %}{% for domain in values.domains | default([]) %}{{ host }},{{ name }} server {{ domain }},{% endfor %}{% endif %}{% endfor %}{% endfor %}{% for host in groups['docker_nextcloud'] | sort %}{{ host }},Cloud Server {{ hostvars[host].cloud_url }}{% if not loop.last %},{% endif %}{% endfor %} + members {% for host in groups.odoo_server | default([])| sort %}{{ host }},Odoo {{ hostvars[host].odoo_url }},{% endfor %}{% for host in groups.docker_odoo | default([])| sort %}{% for name, values in hostvars[host].odoo_instances.items() | default([]) %}{% if values.url is defined %}{{ host }},{{ name }} server {{ values.url }},{% endif %}{% if values.domains is defined and values.domains is string %}{{ host }},{{ name }} server {{ values.domains }},{% else %}{% for domain in values.domains | default([]) %}{{ host }},{{ name }} server {{ domain }},{% endfor %}{% endif %}{% endfor %}{% endfor %}{% for host in groups.docker_nextcloud | default([]) | sort %}{{ host }},Cloud Server {{ hostvars[host].cloud_url }}{% if hostvars[host].cloud_onlyoffice is defined %}{{ host }},OnlyOffice Server {{ hostvars[host].cloud_onlyoffice_url }}{% endif %}{% if not loop.last %},{% endif %}{% endfor %} } +{% if 'all' in groups %} define servicegroup{ servicegroup_name linux-version alias Versions Linux - members {{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Linux Version,') }},Linux Version + members {{ groups.all | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Linux Version,') }},Linux Version } define servicegroup{ servicegroup_name disk-utilisation alias Utilisation du disque - members {{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Espace Disque,') }},Espace Disque + members {{ groups.all | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Espace Disque,') }},Espace Disque } define servicegroup{ servicegroup_name cpu-utilisation alias Utilisation CPU - members {{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Charge CPU,') }},Charge CPU + members {{ groups.all | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Charge CPU,') }},Charge CPU } define servicegroup{ servicegroup_name ram-utilisation alias Utilisation RAM - members {{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Charge RAM,') }},Charge RAM + members {{ groups.all | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Charge RAM,') }},Charge RAM } +{% endif %} +{% if 'full_maintenance' in groups %} define servicegroup{ servicegroup_name fail2ban alias FAIL2BAN - members {{ groups['full_maintenance'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Fail2ban,') }},Fail2ban + members {{ groups.full_maintenance | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Fail2ban,') }},Fail2ban } +{% endif %} define servicegroup{ servicegroup_name services alias Services - members {{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',SSHD Service,') }},SSHD Service,{{ groups['odoo_server'] | union(groups['owncloud_server']) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Nginx Service,') }},Nginx Service,{{ groups['odoo_server'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Odoo Service,') }},Odoo Service,{{ groups['owncloud_server'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Owncloud Service,') }},Owncloud Service,{% for host in groups['full_maintenance'] | sort %}{% if hostvars[host].log_collection %}{{ host }},Filebeat Service,{% endif %}{% endfor %}{{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Services en cours,') }},Services en cours,Nagios Server,Nagios Service + members {{ groups.all | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',SSHD Service,') }},SSHD Service,{{ groups.odoo_server | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Nginx Service,') }},Nginx Service,{{ groups.odoo_server | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Odoo Service,') }},Odoo Service,{% for host in groups.full_maintenance | default([]) | sort %}{% if hostvars[host].log_collection %}{{ host }},Filebeat Service,{% endif %}{% endfor %}{{ groups.all | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Services en cours,') }},Services en cours,Nagios Server,Nagios Service } +{% if 'all' in groups %} define servicegroup{ servicegroup_name ssh alias SSH - members {{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',SSH,') }},SSH + members {{ groups.all | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',SSH,') }},SSH } define servicegroup{ servicegroup_name connected-users alias Utilisateurs Connectes - members {{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Utilisateurs Connectes,') }},Utilisateurs Connectes + members {{ groups.all | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Utilisateurs Connectes,') }},Utilisateurs Connectes } +{% endif %} +{% if 'docker' in groups %} define servicegroup{ servicegroup_name docker_proxy alias Proxy Dockers - members {{ groups['docker'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Docker Proxy,') }},Docker Proxy + members {{ groups.docker | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Docker Proxy,') }},Docker Proxy } +{% endif %} +{% if 'docker_odoo' in groups %} define servicegroup{ servicegroup_name docker_odoo alias Odoo Dockers - members {% for host in groups['docker_odoo'] | sort %}{% set outer_loop = loop %}{% for name in hostvars[host].odoo_instances.keys() | default([]) %}{{ host }},Docker {{ name }}{% if not (outer_loop.last and loop.last) %},{% endif %}{% endfor %}{% if hostvars[host].restrict_internet_access and hostvars[host].whitelisted_urls is defined %}{% if loop.last %},{% endif %}{{ host }},Docker Odoo Whitelists{% if not loop.last %},{% endif %}{% endif %}{% endfor %} + members {% for host in groups.docker_odoo | default([]) | sort %}{% set outer_loop = loop %}{% for name in hostvars[host].odoo_instances.keys() | default([]) %}{{ host }},Docker {{ name }}{% if not (outer_loop.last and loop.last) %},{% endif %}{% endfor %}{% if hostvars[host].restrict_internet_access and hostvars[host].whitelisted_urls is defined %}{% if loop.last %},{% endif %}{{ host }},Docker Odoo Whitelists{% if not loop.last %},{% endif %}{% endif %}{% endfor %} } +{% endif %} +{% if 'docker_nextcloud' in groups %} define servicegroup{ servicegroup_name docker_cloud alias Cloud Dockers - members {{ groups['docker_nextcloud'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Docker Cloud,') }},Docker Cloud + members {{ groups.docker_nextcloud | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',Docker Cloud,') }},Docker Cloud } +{% endif %} # Generic service definition template - This is NOT a real service, just a template! define service{ diff --git a/templates/vps.cfg.j2 b/templates/vps.cfg.j2 index c87798afb5a73d7f27fe6e8541f45abda2ccef5a..6964e2655a9e89028b22d4d6cf5e72408bc9c679 100644 --- a/templates/vps.cfg.j2 +++ b/templates/vps.cfg.j2 @@ -7,7 +7,7 @@ ############################################################################### # Define a host for the local machine -{% for host in groups['all'] | sort %} +{% for host in groups['all'] | default([]) | sort %} {% if host != inventory_hostname %} define host{ use linux-server @@ -35,24 +35,30 @@ define host{ # Define an optional hostgroup for Linux machines +{% if 'all' in groups and 'docker' in groups %} define hostgroup{ hostgroup_name servers_no_docker alias Serveurs Sans Docker members {{ groups['all'] | difference(groups['docker']) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} } +{% endif %} +{% if 'docker_direct_internet_access' in groups %} define hostgroup{ hostgroup_name servers_docker_internet_access alias Serveurs Dockers avec accès à Internet members {{ groups['docker_direct_internet_access'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} } +{% endif %} +{% if 'docker_restrict_internet_access' in groups %} define hostgroup{ hostgroup_name servers_docker_no_internet_access alias Serveurs Dockers sans accès à Internet members {{ groups['docker_restrict_internet_access'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} } +{% endif %} ############################################################################### @@ -63,6 +69,7 @@ define hostgroup{ ############################################################################### ############################################################################### +{% if 'all' in groups %} # Define a service to check the Linux version define service{ @@ -72,6 +79,8 @@ define service{ check_command check_nrpe!check_version } +{% endif %} +{% if 'full_maintenance' in groups %} # Define a service to check the Linux packages to be installed define service{ @@ -82,6 +91,8 @@ define service{ notifications_enabled 0 } +{% endif %} +{% if 'all' in groups %} # Define a service to check the disk space of the root partition # on the local machine. @@ -92,7 +103,8 @@ define service{ check_command check_nrpe!check_hda1 } -{% for host in groups['all'] | sort %} +{% endif %} +{% for host in groups['all'] | default([]) | sort %} {% if hostvars[host].raid_config is defined %} {% for device in hostvars[host].raid_config.devices %} define service{ @@ -105,6 +117,7 @@ define service{ {% endfor %} {% endif %} {% endfor %} +{% if 'backup_server' in groups %} define service{ use daily-service host_name {{ groups['backup_server'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} @@ -126,6 +139,8 @@ define service{ check_command check_nrpe!check_cloud_storage } +{% endif %} +{% if 'all' in groups %} # Define a service to check the number of currently logged in # users on the local machine. @@ -147,14 +162,18 @@ define service{ check_command check_nrpe!check_total_procs } +{% endif %} +{% if 'odoo_server' in groups %} # Define services to check for running processes define service{ use generic-service - host_name {{ groups['odoo_server'] | union(groups['owncloud_server']) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} + host_name {{ groups['odoo_server'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} service_description Nginx Service check_command check_nrpe!check_procs_nginx } +{% endif %} +{% if 'all' in groups %} define service{ use generic-service host_name {{ groups['all'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} @@ -162,7 +181,8 @@ define service{ check_command check_nrpe!check_procs_sshd } -{% for host in groups['full_maintenance'] | sort %} +{% endif %} +{% for host in groups['full_maintenance'] | default([]) | sort %} {% if hostvars[host].log_collection %} define service{ use generic-service @@ -174,6 +194,7 @@ define service{ {% endif %} {% endfor %} +{% if 'all' in groups %} # Define a service to check the load on the local machine. define service{ use generic-service,graphed-service @@ -198,6 +219,8 @@ define service{ check_command check_ssh_port!{{ default_sshd_port }} } +{% endif %} +{% if 'full_maintenance' in groups %} # FAIL2BAN define service{ use generic-service,graphed-service @@ -206,6 +229,8 @@ define service{ check_command check_nrpe!check_fail2ban } +{% endif %} +{% if 'docker' in groups %} # Docker Proxy define service{ use generic-service,graphed-service @@ -214,14 +239,18 @@ define service{ check_command check_nrpe!check_docker_proxy } +{% endif %} +{% if 'docker_nextcloud' in groups %} # Docker Cloud define service{ use generic-service,graphed-service - host_name {{ groups['docker_nextcloud'] | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} + host_name {{ groups.docker_nextcloud | default([]) | map('extract', hostvars, ['inventory_hostname']) | sort | join(',') }} service_description Docker Cloud check_command check_nrpe!check_docker_cloud } +{% endif %} +{% if 'docker_drawio' in groups %} # Docker Draw.io define service{ use generic-service,graphed-service @@ -230,6 +259,8 @@ define service{ check_command check_nrpe!check_docker_drawio } +{% endif %} +{% if 'docker_etherpad' in groups %} # Docker Etherpad define service{ use generic-service,graphed-service @@ -238,6 +269,8 @@ define service{ check_command check_nrpe!check_docker_etherpad } +{% endif %} +{% if 'docker_framadate' in groups %} # Docker Framadate define service{ use generic-service,graphed-service @@ -246,6 +279,8 @@ define service{ check_command check_nrpe!check_docker_framadate } +{% endif %} +{% if 'docker_privatebin' in groups %} # Docker PrivateBin define service{ use generic-service,graphed-service @@ -254,6 +289,8 @@ define service{ check_command check_nrpe!check_docker_privatebin } +{% endif %} +{% if 'gitlab' in groups %} # Gitlab define service{ use generic-service,graphed-service @@ -269,9 +306,10 @@ define service{ check_command check_nrpe!check_gitlab_health } +{% endif %} # Definition des services HTTP -{% for host in groups['docker_odoo'] | sort %} +{% for host in groups['docker_odoo'] | default([]) | sort %} # {{ host }} Docker Odoo {% if hostvars[host].restrict_internet_access and hostvars[host].whitelisted_urls is defined %} # Docker Odoo Whitelists @@ -342,7 +380,7 @@ define service{ {% endif %} {% endfor %} -{% for host in groups['docker_nagios'] | sort %} +{% for host in groups['docker_nagios'] | default([]) | sort %} define service{ use daily-service host_name {{ host }} @@ -352,7 +390,7 @@ define service{ {% endfor %} -{% for host in groups['docker_drawio'] | sort %} +{% for host in groups['docker_drawio'] | default([]) | sort %} # {{ host }} Docker Draw.io define service{ use generic-service @@ -363,7 +401,7 @@ define service{ {% endfor %} -{% for host in groups['docker_etherpad'] | sort %} +{% for host in groups['docker_etherpad'] | default([]) | sort %} # {{ host }} Docker Etherpad define service{ use generic-service @@ -374,7 +412,7 @@ define service{ {% endfor %} -{% for host in groups['docker_framadate'] | sort %} +{% for host in groups['docker_framadate'] | default([]) | sort %} # {{ host }} Docker Framadate define service{ use generic-service @@ -385,7 +423,7 @@ define service{ {% endfor %} -{% for host in groups['gitlab'] | sort %} +{% for host in groups['gitlab'] | default([]) | sort %} # {{ host }} GitLab define service{ use generic-service @@ -396,7 +434,7 @@ define service{ {% endfor %} -{% for host in groups['docker_privatebin'] | sort %} +{% for host in groups['docker_privatebin'] | default([]) | sort %} # {{ host }} Docker PrivateBin define service{ use generic-service @@ -407,7 +445,7 @@ define service{ {% endfor %} -{% for host in groups['odoo_server'] | sort %} +{% for host in groups['odoo_server'] | default([]) | sort %} # {{ host }} Odoo define service{ use generic-service @@ -424,21 +462,3 @@ define service{ } {% endfor %} - -{% for host in groups['owncloud_server'] | sort %} -# {{ host }} Owncloud -define service{ - use generic-service - host_name {{ host }} - service_description OwnCloud {{ hostvars[host].cloud_url }} - check_command check_https!'{{ hostvars[host].cloud_url }}'!/index.php/login - } - -define service{ - use generic-service - host_name {{ host }} - service_description Owncloud Service - check_command check_nrpe!check_procs_owncloud - } - -{% endfor %}