Depuis un petit moment je recherche le composant Centreon en mode Docker, mais je n’en ai pas trouvé vraiment à jour.
J’ai donc commencé à créer mon paquet d’installation dont voici le début de réflexion
docker-compose.yml
centreon:
build: centreon-docker/
ports:
- "222:22"
- "2443:443"
- "280:8080"
volumes:
- /var/log/centreon:/var/log/centreon
links:
- mariadb
privileged: true
phpmyadmin:
#build: ./phpmyadmin
image: phpmyadmin
hostname: phpmyadmin
env_file:
- env/config.env
ports:
- "281:80"
links:
- mariadb
mariadb:
build: ./mariadb
hostname: mariadb
env_file:
- env/config.env
ports:
- "23306:3306"
volumes:
- "./var/lib/centreon/mysql:/var/lib/mysql"
- "./var/log/mysqld.log:/var/log/centreon/mysqld.log"
Dockerfile
FROM centos:6.8
MAINTAINER hcornet
###########################################
#
# Mise à jour lib
#
###########################################
RUN yum -y update
RUN yum -y upgrade
RUN yum -y update
RUN yum -y install wget
###########################################
#
# Installation du repository centreon
#
###########################################
RUN mkdir /tmp/centron
WORKDIR /tmp/centron
RUN wget http://yum.centreon.com/standard/3.0/stable/noarch/RPMS/ces-release-3.0-1.noarch.rpm
RUN yum -y install --nogpgcheck ces-release-3.0-1.noarch.rpm
RUN rm -f ces-release-3.0-1.noarch.rpm
RUN yum -y update
RUN yum clean all
###########################################
#
# Installation des modules complémentaire
#
###########################################
RUN yum -y install tofrodos bsd-mailx python-software-properties software-properties-common gcc gcc-c++ make make python2.7 python-dev libperl-dev mysql-client libapache2-mod-php5 python-setuptools nano mc vim-tiny
RUN yum -y install php5-memcached php5-geoip php5-gd php5-ldap php5-imap php5-pgsql php5-mcrypt sudo heirloom-mailx lsb-release build-essential cmake gsoap zlib1g-dev libxerces-c-dev apache2 apache2-mpm-prefork php5
RUN yum -y install php5-sqlite php-pear php5-snmp php5-gd php5-intl libmysqlclient-dev rrdtool librrds-perl libconfig-inifiles-perllibcrypt-des-perl libdigest-hmac-perl libdigest-sha-perl snmp snmpd libnet-snmp-perl
RUN yum -y install libsnmp-perl libpng12-dev exim4 wget iputils-ping smbclient libssl-dev dnsutils fping less vim net-tools rsyslogsupervisor libjson-perl cron libqt4-network libqtcore4 libqt4-dev libqt4-sql-mysql
RUN yum -y install librrd-dev dialog telnet netcat libevent-2.0-5 python-pip git libffi-dev curl libssh2-1-dev libgcrypt11-dev postgresql-server-dev-all openssh-server openssh-client libmysqlclient18
RUN yum -y install qt4-devel qt4-mysql rrdtool-devel gnutls-devel perl-devel perl-ExtUtils-Embed mailutils mail crontabs php-pear* snmp* snmptrapd snmp-mibs-downloader libdatetime-perl libgd-perl php5-curl
RUN yum -y install libcgsi-gsoap-dev libkrb5-dev libldap2-dev libsnmp-dev gawk libwrap0-dev libmcrypt-dev gettext libconfig-inifiles-perl libcrypt-des-perl libgd-gd2-perl libgnutls28-dev php5-mysql
RUN yum clean all
###########################################
#
# Installation de centreon lib
#
###########################################
WORKDIR /root/centreon
ENV CENTREON_CLIB 1.4.2
RUN wget https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-clib/centreon-clib-${CENTREON_CLIB}.tar.gz
RUN tar zxf centreon-clib-${CENTREON_CLIB}.tar.gz
WORKDIR /root/centreon/centreon-clib-${CENTREON_CLIB}/build
RUN cmake -DWITH_TESTING=0 -DWITH_PREFIX=/usr -DWITH_PREFIX_LIB=/usr/lib -DWITH_PREFIX_INC=/usr/include/centreon-clib -DWITH_SHARED_LIB=1 -DWITH_STATIC_LIB=0 -DWITH_PKGCONFIG_DIR=/usr/lib/pkgconfig .
RUN make
RUN make install
###########################################
#
# Installation centreon connector
#
###########################################
WORKDIR /root/centreon
ENV CENTREON_CONN 1.1.2
RUN wget https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-connectors/centreon-connector-${CENTREON_CONN}.tar.gz
RUN tar zxf centreon-connector-${CENTREON_CONN}.tar.gz
WORKDIR /root/centreon/centreon-connector-${CENTREON_CONN}/perl/build
RUN cmake -DWITH_PREFIX=/usr -DWITH_PREFIX_BINARY=/usr/lib/centreon-connector -DWITH_CENTREON_CLIB_INCLUDE_DIR=/usr/include -DWITH_TESTING=0 .
RUN make
RUN make install
WORKDIR /root/centreon/centreon-connector-${CENTREON_CONN}/ssh/build
RUN cmake -DWITH_PREFIX=/usr -DWITH_PREFIX_BINARY=/usr/lib/centreon-connector -DWITH_CENTREON_CLIB_INCLUDE_DIR=/usr/include -DWITH_TESTING=0 .
RUN make
RUN make install
###########################################
#
# Installation centreon engine
#
###########################################
WORKDIR /root/centreon
RUN groupadd -g 6001 centreon-engine
RUN useradd -u 6001 -g centreon-engine -m -r -d /var/lib/centreon-engine -c "Centreon-engine Admin" centreon-engine
WORKDIR /root/centreon
ENV CENTREON_ENG 1.7.2
RUN wget https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-engine/centreon-engine-${CENTREON_ENG}.tar.gz
RUN tar zxf centreon-engine-${CENTREON_ENG}.tar.gz
WORKDIR /root/centreon/centreon-engine-${CENTREON_ENG}/build
RUN cmake -DWITH_CENTREON_CLIB_INCLUDE_DIR=/usr/include -DWITH_CENTREON_CLIB_LIBRARY_DIR=/usr/lib -DWITH_PREFIX=/usr -DWITH_PREFIX_BIN=/usr/sbin -DWITH_PREFIX_CONF=/etc/centreon-engine -DWITH_USER=centreon-engine -DWITH_GROUP=centreon-engine -DWITH_LOGROTATE_SCRIPT=1 -DWITH_VAR_DIR=/var/log/centreon-engine -DWITH_RW_DIR=/var/lib/centreon-engine/rw -DWITH_STARTUP_DIR=/etc/init.d -DWITH_PKGCONFIG_SCRIPT=1 -DWITH_PKGCONFIG_DIR=/usr/lib/pkgconfig -DWITH_TESTING=0 .
RUN make
RUN make install
RUN chmod +x /etc/init.d/centengine
RUN update-rc.d centengine defaults
###########################################
#
# Installation monitoring PLUGIN
#
###########################################
WORKDIR /root/centreon
ENV CENTREON_PLUGIN 2.2
RUN wget https://www.monitoring-plugins.org/download/monitoring-plugins-${CENTREON_PLUGIN}.tar.gz
RUN tar zxf monitoring-plugins-${CENTREON_PLUGIN}.tar.gz
WORKDIR /root/centreon/monitoring-plugins-${CENTREON_PLUGIN}
RUN ./configure --with-nagios-user=centreon-engine --with-nagios-group=centreon-engine --prefix=/usr/lib/centreon/plugins --libexecdir=/usr/lib/centreon/plugins --enable-perl-modules --with-openssl=/usr/bin/openssl --enable-extra-opts
RUN make
RUN make install
###########################################
#
# Installation Centreon PLUGIN
#
###########################################
WORKDIR /root/centreon
DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes libxml-libxml-perl libjson-perl libwww-perl libxml-xpath-perl libnet-telnet-perl libnet-ntp-perl libnet-dns-perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl git-core
git clone https://github.com/centreon/centreon-plugins.git
cd centreon-plugins
chmod +x centreon_plugins.pl
chown -R centreon-engine:centreon-engine ${DL_DIR}/centreon-plugins
cp -Rp * /usr/lib/centreon/plugins/
###########################################
#
# Installation centreon broker
#
###########################################
WORKDIR /root/centreon
RUN groupadd -g 6002 centreon-broker
RUN useradd -u 6002 -g centreon-broker -m -r -d /var/lib/centreon-broker -c "Centreon-broker Admin" -s /bin/bash centreon-broker
RUN usermod -aG centreon-broker centreon-engine
RUN export PATH="$PATH:$(dirname $(locate /bin/qmake | head -n 1))"
WORKDIR /root/centreon
ENV CENTREON_BRK 3.0.8
RUN wget https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-broker/centreon-broker-${CENTREON_BRK}.tar.gz
RUN tar zxf centreon-broker-${CENTREON_BRK}.tar.gz
WORKDIR /root/centreon/centreon-broker-${CENTREON_BRK}/build
RUN cmake -DWITH_DAEMONS='central-broker;central-rrd' -DWITH_GROUP=centreon-broker -DWITH_PREFIX=/usr -DWITH_PREFIX_BIN=/usr/sbin -DWITH_PREFIX_CONF=/etc/centreon-broker -DWITH_PREFIX_LIB=/usr/lib/centreon-broker -DWITH_PREFIX_VAR=/var/lib/centreon-broker -DWITH_PREFIX_MODULES=/usr/share/centreon/lib/centreon-broker -DWITH_STARTUP_DIR=/etc/init.d -DWITH_STARTUP_SCRIPT=auto -DWITH_TESTING=0 -DWITH_USER=centreon-broker .
RUN make
RUN make install
RUN mkdir /var/log/centreon-broker
RUN chown centreon-broker:centreon-engine /var/log/centreon-broker
RUN chmod 775 /var/log/centreon-broker
RUN chmod 775 /var/lib/centreon-broker
RUN update-rc.d cbd defaults
###########################################
#
# Installation SNMP
#
###########################################
#RUN ln -s /usr/share/mibs/ /usr/share/snmp/mibs
RUN echo "export MIBDIRS=/usr/share/snmp/mibs" >> /etc/default/snmpd
RUN echo "export MIBS=ALL" >> /etc/default/snmpd
###########################################
#
# Installation centreon web
#
###########################################
RUN groupadd -g 6000 centreon
RUN useradd -u 6000 -g $centreon -m -r -d /usr/share/centreon -c "Centreon Web user" -s /bin/bash centreon
RUN usermod -aG centreon centreon
RUN ln -s /usr/share/mibs/ /usr/share/snmp/mibs
ADD files/ /etc/default/snmpd
ADD files/ /etc/default/snmptrapd
RUN sed -i -e "s/view systemonly/#view systemonly/g" /etc/snmp/snmpd.conf;
RUN sed -i -e "s/#rocommunity public localhost/rocommunity public localhost/g" /etc/snmp/snmpd.conf;
RUN sed -i -e "s/rocommunity public default -V systemonly/# rocommunity public default -V systemonly/g" /etc/snmp/snmpd.conf;
RUN sed -i -e "s/defaultMonitors/#defaultMonitors/g" /etc/snmp/snmpd.conf;
RUN sed -i -e "s/linkUpDownNotifications/#linkUpDownNotifications/g" /etc/snmp/snmpd.conf;
RUN sed -i -e "s/mibs/#mibs/g" /etc/snmp/snmp.conf;
RUN service snmpd restart
RUN service snmptrapd restart
WORKDIR /root/centreon
ENV CENTREON_UI 2.8.9
ADD files/centreon-silent-install.txt /root/centreon/centreon-silent-install.txt
RUN wget https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon/centreon-web-${CENTREON_UI}.tar.gz
RUN mkdir -p /usr/local/nagios/libexec
RUN chown centreon:centreon /usr/local/nagios/libexec
RUN tar xzf centreon-web-${CENTREON_UI}.tar.gz
WORKDIR /root/centreon/centreon-web-${CENTREON_UI}
RUN ./install.sh -i -f ../centreon-silent-install.txt
###########################################
#
# Installation finalisation
#
###########################################
#Modify default config
# Monitoring engine information
sed -i -e "s/share\/centreon-engine/sbin/g" /usr/share/centreon/www/install/var/engines/centreon-engine;
sed -i -e "s/lib64/lib/g" /usr/share/centreon/www/install/var/engines/centreon-engine;
# sed -i -e "s/CENTREONPLUGINS/CENTREON_PLUGINS/g" /usr/share/centreon/www/install/var/engines/centreon-engine;
# Broker module information
sed -i -e "s/lib64\/nagios\/cbmod.so/lib\/centreon-broker\/cbmod.so/g" /usr/share/centreon/www/install/var/brokers/centreon-broker;
# bug Centreon_plugin
# sed -i -e "s/CENTREONPLUGINS/CENTREON_PLUGINS/g" /usr/share/centreon/www/install/steps/functions.php;
sed -i -e "s/centreon_plugins'] = \"\"/centreon_plugins'] = \"\/usr\/lib\/centreon\/plugins\"/g" /usr/share/centreon/www/install/install.conf.php;
# Add mysql config for Centreon
echo '[mysqld]
innodb_file_per_table=1
open_files_limit=32000' > /etc/mysql/conf.d/centreon.cnf
service mysql restart
RUN sed -i -e "s/;date.timezone =/date.timezone = `echo Europe/Paris | sed 's:\/:\\\/:g' `/g" /etc/php5/apache2/php.ini;
# reload conf apache
a2enconf centreon.conf
service apache2 reload
RUN chmod 775 /var/lib/centreon-broker/
RUN usermod -aG centreon-engine www-data
RUN usermod -aG centreon-engine centreon
RUN usermod -aG centreon-engine centreon-broker
RUN chown centreon-engine:centreon-engine /var/lib/centreon-engine/
###########################################
#
# Installation widgets
#
###########################################
ENV WIDGET_HOST 1.5.2
ENV WIDGET_HOSTGROUP 1.3.0
ENV WIDGET_SERVICE 1.5.3
ENV WIDGET_SERVICEGROUP 1.3.1
ENV WIDGET_GRID_MAP 1.0.0
ENV WIDGET_TOP_CPU 1.1.1
ENV WIDGET_TOP_MEMORY 1.1.1
ENV WIDGET_TACTICAL_OVERVIEW 1.0.1
ENV WIDGET_HTTP_LOADER 1.0.0
ENV WIDGET_ENGINE_STATUS 1.0.0
ENV WIDGET_GRAPH 1.5.2
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-host-monitoring/centreon-widget-host-monitoring-${WIDGET_HOST}.tar.gz | tar -C /usr/share/centreon/www/widgets --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-hostgroup-monitoring/centreon-widget-hostgroup-monitoring-${WIDGET_HOSTGROUP}.tar.gz | tar -C /usr/share/centreon/www/widgets/ --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-service-monitoring/centreon-widget-service-monitoring-${WIDGET_SERVICE}.tar.gz | tar -C /usr/share/centreon/www/widgets --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-grid-map/centreon-widget-grid-map-${WIDGET_GRID_MAP}.tar.gz | tar -C /usr/share/centreon/www/widgets/ --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-live-top10-cpu/centreon-widget-live-top10-cpu-usage-${WIDGET_TOP_CPU}.tar.gz | tar -C /usr/share/centreon/www/widgets/ --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-live-top10-memory/centreon-widget-live-top10-memory-usage-${WIDGET_TOP_MEMORY}.tar.gz | tar -C /usr/share/centreon/www/widgets/ --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-tactical-overview/centreon-widget-tactical-overview-${WIDGET_TACTICAL_OVERVIEW}.tar.gz| tar -C /usr/share/centreon/www/widgets/ --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-httploader/centreon-widget-httploader-${WIDGET_HTTP_LOADER}.tar.gz | tar -C /usr/share/centreon/www/widgets/ --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-engine-status/centreon-widget-engine-status-${WIDGET_ENGINE_STATUS}.tar.gz | tar -C /usr/share/centreon/www/widgets/ --strip-components 1 -xzv
RUN wget -qO- https://s3-eu-west-1.amazonaws.com/centreon-download/public/centreon-widgets/centreon-widget-servicegroup-monitoring/centreon-widget-servicegroup-monitoring-${WIDGET_SERVICEGROUP}.tar.gz| tar -C /usr/share/centreon/www/widgets/ --strip-components 1 -xzv
/usr/bin/git clone -b ${WIDGET_GRAPH} https://github.com/Centreon-Widgets/centreon-widget-graph-monitoring.git
mv centreon-widget-graph-monitoring/graph-monitoring /usr/share/centreon/www/widgets/
chown -R centreon:centreon/usr/share/centreon/www/widgets
ADD files/centreon-engine_install /usr/local/centreon/centreon-core/www/install/var/engines/centreon-engine
ADD files/centreon-broker_install /usr/local/centreon/centreon-core/www/install/var/brokers/centreon-broker
ADD files/install_conf_php /usr/local/centreon/centreon-core/www/install/install.conf.php
#RUN a2enconf centreon.conf
#RUN service httpd reload
RUN service centcore start
RUN service cbd start
RUN service centreontrapd start
#add pagerduty flush cron, by default the cron is disabled in the cron file
ADD files/pagerduty.cron /etc/cron.d/pagerduty
#add check_by_ssh master
WORKDIR /root/centreon
RUN git clone https://github.com/osklil/nagios-misc.git && cd nagios-misc/check_by_ssh_master/ && make && mv check_by_ssh_master /usr/local/nagios/libexec/
ADD files/widgets.tgz /usr/local/centreon/centreon-core/www/widgets
RUN chown -R centreon:centreon /usr/local/centreon/centreon-core/www/widgets
#fix exim4 smarthost, edit files/start.sh to set the right smarthost and redirect_to
COPY files/exim4.conf.tpl /etc/exim4/exim4.conf.tpl
#fix sshd locales overwrite, this to allow ssh into the docker container, controversial, but useful to test checks
RUN sed -i -e"s/^AcceptEnv LANG LC_\*/#AcceptEnv LANG LC_*/" /etc/ssh/sshd_config
#add ssl to apache
#RUN cd /etc/apache2/mods-enabled/ && ln -sf ../mods-available/ssl* .
#RUN mkdir /etc/apache2/ssl
#ADD files/sslcert.crt /etc/apache2/ssl/
#ADD files/sslcert.key /etc/apache2/ssl/
#ADD files/sslcert_chain.crt /etc/apache2/ssl/
#RUN chown -R www-data:www-data /etc/apache2/ssl/ && chmod 600 /etc/apache2/ssl/sslcert.key
#ADD files/default-ssl /etc/apache2/sites-enabled/default-ssl
ADD files/start.sh /start.sh
ADD files/foreground.sh /etc/apache2/foreground.sh
ADD files/supervisord.conf /etc/supervisord.conf
RUN chmod 755 /start.sh
RUN chmod 755 /etc/apache2/foreground.sh
RUN mkdir -p /usr/local/centreon/status/www/
ADD files/naglite/* /usr/local/centreon/status/www/
#add basic auth to naglite
#ADD files/status_access /usr/local/centreon/status/www/.htaccess
#ADD files/status_access.htpasswd /etc/centreon/status_access
ADD files/apache2_ports.conf /etc/apache2/ports.conf
ADD files/000-default /etc/apache2/sites-available/000-default.conf
ADD files/apache_centreon /etc/apache2/conf-enabled/centreon.conf
#ADD a private/pub key for check_by_ssh
#RUN mkdir /home/centreon/.ssh && chmod 700 /home/centreon/.ssh && chown centreon:centreon /home/centreon/.ssh
#ADD files/id_dsa /home/centreon/.ssh/id_dsa
#ADD files/id_dsa.pub /home/centreon/.ssh/id_dsa.pub
#RUN chmod 600 /home/centreon/.ssh/id_dsa
RUN mkdir /root/.ssh && chmod 700 /root/.ssh
ADD files/authorized_keys /root/.ssh/authorized_keys
RUN mkdir /var/run/sshd
EXPOSE 8080
EXPOSE 22
CMD ["/bin/bash", "/start.sh"]