diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index ee5921d1da..7f1aa2aa8e 100644 --- a/docker/base/Dockerfile.j2 +++ b/docker/base/Dockerfile.j2 @@ -67,6 +67,7 @@ COPY yum.conf /etc/yum.conf 'kibana.yum.repo', 'MariaDB.repo', 'opendaylight.repo', + 'sensu.repo', 'td.repo', 'zookeeper.repo' ] %} diff --git a/docker/base/sensu.repo b/docker/base/sensu.repo new file mode 100644 index 0000000000..f4880f553c --- /dev/null +++ b/docker/base/sensu.repo @@ -0,0 +1,6 @@ +[sensu] +name=sensu +baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/ +gpgcheck=1 +enabled=1 +gpgkey=https://sensu.global.ssl.fastly.net/yum/pubkey.gpg diff --git a/docker/sensu/sensu-api/Dockerfile.j2 b/docker/sensu/sensu-api/Dockerfile.j2 new file mode 100644 index 0000000000..f4cfdfdc6a --- /dev/null +++ b/docker/sensu/sensu-api/Dockerfile.j2 @@ -0,0 +1,11 @@ +FROM {{ namespace }}/{{ image_prefix }}sensu-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block sensu_api_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{% block sensu_api_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER sensu diff --git a/docker/sensu/sensu-base/Dockerfile.j2 b/docker/sensu/sensu-base/Dockerfile.j2 index f12e6f12f2..c816192beb 100644 --- a/docker/sensu/sensu-base/Dockerfile.j2 +++ b/docker/sensu/sensu-base/Dockerfile.j2 @@ -18,4 +18,7 @@ RUN echo '{{ image_name }} not yet available for {{ base_distro }}' \ {{ macros.install_packages(sensu_base_packages | customizable("packages")) }} +COPY extend_start.sh /usr/local/bin/kolla_extend_start +RUN chmod 755 /usr/local/bin/kolla_extend_start + {% block sensu_base_footer %}{% endblock %} diff --git a/docker/sensu/sensu-base/extend_start.sh b/docker/sensu/sensu-base/extend_start.sh new file mode 100644 index 0000000000..c67447e012 --- /dev/null +++ b/docker/sensu/sensu-base/extend_start.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Create log directory, with appropriate permissions +if [[ ! -d "/var/log/kolla/sensu" ]]; then + mkdir -p /var/log/kolla/sensu +fi +if [[ $(stat -c %a /var/log/kolla/sensu) != "755" ]]; then + chmod 755 /var/log/kolla/sensu +fi diff --git a/docker/sensu/sensu-client/Dockerfile.j2 b/docker/sensu/sensu-client/Dockerfile.j2 index 16abaa97f3..8557475018 100644 --- a/docker/sensu/sensu-client/Dockerfile.j2 +++ b/docker/sensu/sensu-client/Dockerfile.j2 @@ -6,9 +6,37 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% import "macros.j2" as macros with context %} {% if base_distro in ['centos', 'oraclelinux', 'rhel'] %} - {% set sensu_client_packages = ['docker-client', 'osops-tools-monitoring-oschecks'] %} + {% set sensu_client_packages = [ + 'MariaDB-client', + 'ceph-common', + 'cyrus-sasl-devel', + 'docker-client', + 'gcc-c++', + 'make', + 'ntp', + 'osops-tools-monitoring-oschecks', + 'python-pymongo', + 'ruby-devel' + ] %} {% elif base_distro in ['debian', 'ubuntu'] %} - {% set sensu_client_packages = ['docker.io'] %} + {% set sensu_client_packages = [ + 'build-essential', + 'ceph-common', + 'inetutils-ping', + 'libsasl2-dev', + 'mysql-client', + 'ntp', + 'python-pymongo' + ] %} + {% if base_distro in ['debian'] %} + {% set sensu_client_packages = sensu_client_packages + [ + 'docker-ce' + ] %} + {% else %} + {% set sensu_client_packages = sensu_client_packages + [ + 'docker.io' + ] %} + {% endif %} {% else %} RUN echo '{{ image_name }} not yet available for {{ base_distro }}' \ && /bin/false @@ -16,7 +44,37 @@ RUN echo '{{ image_name }} not yet available for {{ base_distro }}' \ {{ macros.install_packages(sensu_client_packages | customizable("packages")) }} +{% block sensu_clients_install %} + +{% set sensu_plugins = [ + 'ceph', + 'cpu-checks', + 'disk-checks', + 'dns', + 'docker', + 'elasticsearch', + 'filesystem-checks', + 'haproxy', + 'http', + 'io-checks', + 'load-checks', + 'memcached', + 'memory-checks', + 'mongodb', + 'mysql', + 'network-checks', + 'ntp', + 'openstack', + 'process-checks', + 'rabbitmq', + 'redis', + 'uptime-checks', + 'vmstats' +] %} + +RUN /opt/sensu/embedded/bin/gem install vmstat --no-rdoc --no-ri \ + && sensu-install --plugins {{ sensu_plugins | customizable('plugins') | join (',') }} +{% endblock %} + {% block sensu_client_footer %}{% endblock %} {% block footer %}{% endblock %} - -USER sensu diff --git a/docker/sensu/sensu-server/Dockerfile.j2 b/docker/sensu/sensu-server/Dockerfile.j2 new file mode 100644 index 0000000000..e64640923f --- /dev/null +++ b/docker/sensu/sensu-server/Dockerfile.j2 @@ -0,0 +1,37 @@ +FROM {{ namespace }}/{{ image_prefix }}sensu-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block sensu_server_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %} + {% set sensu_server_packages = [ + 'cyrus-sasl-devel', + 'gcc-c++', + 'make', + 'ruby-devel' + ] %} +{% elif base_distro in ['debian', 'ubuntu'] %} + {% set sensu_server_packages = [ + 'build-essential', + 'libsasl2-dev' + ] %} +{% endif %} + +{{ macros.install_packages(sensu_server_packages | customizable("packages")) }} + +{% block sensu_server_plugins_install %} + +{% set sensu_plugins = [ + 'mailer', + 'slack' +] %} + +RUN sensu-install --plugins {{ sensu_plugins | customizable('plugins') | join (',') }} +{% endblock %} + +{% block sensu_server_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER sensu diff --git a/releasenotes/notes/add-sensu-a763a155649e068d.yaml b/releasenotes/notes/add-sensu-a763a155649e068d.yaml new file mode 100644 index 0000000000..118463121a --- /dev/null +++ b/releasenotes/notes/add-sensu-a763a155649e068d.yaml @@ -0,0 +1,3 @@ +--- +features: + - Add sensu images for sensu-server, sensu-api and sensu-client