nagios/Dockerfile

264 lines
13 KiB
Docker

FROM ubuntu:16.04
MAINTAINER Jason Rivers <jason@jasonrivers.co.uk>
ENV NAGIOS_HOME /opt/nagios
ENV NAGIOS_USER nagios
ENV NAGIOS_GROUP nagios
ENV NAGIOS_CMDUSER nagios
ENV NAGIOS_CMDGROUP nagios
ENV NAGIOS_FQDN nagios.example.com
ENV NAGIOSADMIN_USER nagiosadmin
ENV NAGIOSADMIN_PASS nagios
ENV APACHE_RUN_USER nagios
ENV APACHE_RUN_GROUP nagios
ENV NAGIOS_TIMEZONE UTC
ENV DEBIAN_FRONTEND noninteractive
ENV NG_NAGIOS_CONFIG_FILE ${NAGIOS_HOME}/etc/nagios.cfg
ENV NG_CGI_DIR ${NAGIOS_HOME}/sbin
ENV NG_WWW_DIR ${NAGIOS_HOME}/share/nagiosgraph
ENV NG_CGI_URL /cgi-bin
ENV NAGIOS_BRANCH nagios-4.4.4
ENV NAGIOS_PLUGINS_BRANCH release-2.2.1
ENV NRPE_BRANCH nrpe-3.2.1
RUN echo postfix postfix/main_mailer_type string "'Internet Site'" | debconf-set-selections && \
echo postfix postfix/mynetworks string "127.0.0.0/8" | debconf-set-selections && \
echo postfix postfix/mailname string ${NAGIOS_FQDN} | debconf-set-selections && \
apt-get update && apt-get install -y \
apache2 \
apache2-utils \
autoconf \
automake \
bc \
bsd-mailx \
build-essential \
dnsutils \
fping \
gettext \
git \
gperf \
iputils-ping \
jq \
libapache2-mod-php \
libcache-memcached-perl \
libcgi-pm-perl \
libdbd-mysql-perl \
libdbi-dev \
libdbi-perl \
libfreeradius-client-dev \
libgd2-xpm-dev \
libgd-gd2-perl \
libjson-perl \
libldap2-dev \
libmysqlclient-dev \
libnagios-object-perl \
libnagios-plugin-perl \
libnet-snmp-perl \
libnet-snmp-perl \
libnet-tftp-perl \
libnet-xmpp-perl \
libpq-dev \
libredis-perl \
librrds-perl \
libssl-dev \
libswitch-perl \
libwww-perl \
m4 \
netcat \
parallel \
php-cli \
php-gd \
postfix \
python-pip \
rsyslog \
runit \
smbclient \
snmp \
snmpd \
snmp-mibs-downloader \
unzip \
python \
&& \
apt-get clean && rm -Rf /var/lib/apt/lists/*
RUN ( egrep -i "^${NAGIOS_GROUP}" /etc/group || groupadd $NAGIOS_GROUP ) && \
( egrep -i "^${NAGIOS_CMDGROUP}" /etc/group || groupadd $NAGIOS_CMDGROUP )
RUN ( id -u $NAGIOS_USER || useradd --system -d $NAGIOS_HOME -g $NAGIOS_GROUP $NAGIOS_USER ) && \
( id -u $NAGIOS_CMDUSER || useradd --system -d $NAGIOS_HOME -g $NAGIOS_CMDGROUP $NAGIOS_CMDUSER )
RUN cd /tmp && \
git clone https://github.com/multiplay/qstat.git && \
cd qstat && \
./autogen.sh && \
./configure && \
make && \
make install && \
make clean && \
cd /tmp && rm -Rf qstat
RUN cd /tmp && \
git clone https://github.com/NagiosEnterprises/nagioscore.git -b $NAGIOS_BRANCH && \
cd nagioscore && \
./configure \
--prefix=${NAGIOS_HOME} \
--exec-prefix=${NAGIOS_HOME} \
--enable-event-broker \
--with-command-user=${NAGIOS_CMDUSER} \
--with-command-group=${NAGIOS_CMDGROUP} \
--with-nagios-user=${NAGIOS_USER} \
--with-nagios-group=${NAGIOS_GROUP} \
&& \
make all && \
make install && \
make install-config && \
make install-commandmode && \
make install-webconf && \
#make clean && \
cd /tmp && rm -Rf nagioscore
RUN cd /tmp && \
git clone https://github.com/nagios-plugins/nagios-plugins.git -b $NAGIOS_PLUGINS_BRANCH && \
cd nagios-plugins && \
./tools/setup && \
./configure \
--prefix=${NAGIOS_HOME} \
--with-ipv6 \
--with-ping6-command="/bin/ping6 -n -U -W %d -c %d %s" \
&& \
make && \
make install && \
make clean && \
mkdir -p /usr/lib/nagios/plugins && \
ln -sf ${NAGIOS_HOME}/libexec/utils.pm /usr/lib/nagios/plugins && \
cd /tmp && rm -Rf nagios-plugins
RUN wget -O ${NAGIOS_HOME}/libexec/check_ncpa.py https://raw.githubusercontent.com/NagiosEnterprises/ncpa/v2.0.5/client/check_ncpa.py && \
chmod +x ${NAGIOS_HOME}/libexec/check_ncpa.py
RUN cd /tmp && \
git clone https://github.com/NagiosEnterprises/nrpe.git -b $NRPE_BRANCH && \
cd nrpe && \
./configure \
--with-ssl=/usr/bin/openssl \
--with-ssl-lib=/usr/lib/aarch64-linux-gnu \
&& \
make check_nrpe && \
cp src/check_nrpe ${NAGIOS_HOME}/libexec/ && \
make clean && \
cd /tmp && rm -Rf nrpe
RUN cd /tmp && \
git clone https://git.code.sf.net/p/nagiosgraph/git nagiosgraph && \
cd nagiosgraph && \
./install.pl --install \
--prefix /opt/nagiosgraph \
--nagios-user ${NAGIOS_USER} \
--www-user ${NAGIOS_USER} \
--nagios-perfdata-file ${NAGIOS_HOME}/var/perfdata.log \
--nagios-cgi-url /cgi-bin \
&& \
cp share/nagiosgraph.ssi ${NAGIOS_HOME}/share/ssi/common-header.ssi && \
echo
# cd /tmp && rm -Rf nagiosgraph
RUN cd /opt && \
# pip install pymssql && \
git clone https://github.com/willixix/naglio-plugins.git WL-Nagios-Plugins && \
git clone https://github.com/JasonRivers/nagios-plugins.git JR-Nagios-Plugins && \
git clone https://github.com/justintime/nagios-plugins.git JE-Nagios-Plugins && \
git clone https://github.com/nagiosenterprises/check_mssql_collection.git nagios-mssql && \
chmod +x /opt/WL-Nagios-Plugins/check* && \
chmod +x /opt/JE-Nagios-Plugins/check_mem/check_mem.pl && \
cp /opt/JE-Nagios-Plugins/check_mem/check_mem.pl ${NAGIOS_HOME}/libexec/ && \
cp /opt/nagios-mssql/check_mssql_database.py ${NAGIOS_HOME}/libexec/ && \
cp /opt/nagios-mssql/check_mssql_server.py ${NAGIOS_HOME}/libexec/
RUN sed -i.bak 's/.*\=www\-data//g' /etc/apache2/envvars
RUN export DOC_ROOT="DocumentRoot $(echo $NAGIOS_HOME/share)" && \
sed -i "s,DocumentRoot.*,$DOC_ROOT," /etc/apache2/sites-enabled/000-default.conf && \
sed -i "s,</VirtualHost>,<IfDefine ENABLE_USR_LIB_CGI_BIN>\nScriptAlias /cgi-bin/ ${NAGIOS_HOME}/sbin/\n</IfDefine>\n</VirtualHost>," /etc/apache2/sites-enabled/000-default.conf && \
ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
RUN mkdir -p -m 0755 /usr/share/snmp/mibs && \
mkdir -p ${NAGIOS_HOME}/etc/conf.d && \
mkdir -p ${NAGIOS_HOME}/etc/monitor && \
mkdir -p -m 700 ${NAGIOS_HOME}/.ssh && \
chown ${NAGIOS_USER}:${NAGIOS_GROUP} ${NAGIOS_HOME}/.ssh && \
touch /usr/share/snmp/mibs/.foo && \
ln -s /usr/share/snmp/mibs ${NAGIOS_HOME}/libexec/mibs && \
ln -s ${NAGIOS_HOME}/bin/nagios /usr/local/bin/nagios && \
download-mibs && echo "mibs +ALL" > /etc/snmp/snmp.conf
RUN cp /etc/services /var/spool/postfix/etc/ && \
echo "smtp_address_preference = ipv4" >> /etc/postfix/main.cf
RUN rm -rf /etc/rsyslog.d /etc/rsyslog.conf
RUN rm -rf /etc/sv/getty-5
ADD overlay /
RUN echo "use_timezone=${NAGIOS_TIMEZONE}" >> ${NAGIOS_HOME}/etc/nagios.cfg
# Copy example config in-case the user has started with empty var or etc
RUN mkdir -p /orig/var && mkdir -p /orig/etc && \
cp -Rp ${NAGIOS_HOME}/var/* /orig/var/ && \
cp -Rp ${NAGIOS_HOME}/etc/* /orig/etc/
RUN a2enmod session && \
a2enmod session_cookie && \
a2enmod session_crypto && \
a2enmod auth_form && \
a2enmod request
RUN chmod +x /usr/local/bin/start_nagios && \
chmod +x /etc/sv/apache/run && \
chmod +x /etc/sv/nagios/run && \
chmod +x /etc/sv/postfix/run && \
chmod +x /etc/sv/rsyslog/run && \
chmod +x /opt/nagiosgraph/etc/fix-nagiosgraph-multiple-selection.sh
RUN cd /opt/nagiosgraph/etc && \
sh fix-nagiosgraph-multiple-selection.sh
RUN rm /opt/nagiosgraph/etc/fix-nagiosgraph-multiple-selection.sh
# enable all runit services
RUN ln -s /etc/sv/* /etc/service
ENV APACHE_LOCK_DIR /var/run
ENV APACHE_LOG_DIR /var/log/apache2
#Set ServerName and timezone for Apache
RUN echo "ServerName ${NAGIOS_FQDN}" > /etc/apache2/conf-available/servername.conf && \
echo "PassEnv TZ" > /etc/apache2/conf-available/timezone.conf && \
ln -s /etc/apache2/conf-available/servername.conf /etc/apache2/conf-enabled/servername.conf && \
ln -s /etc/apache2/conf-available/timezone.conf /etc/apache2/conf-enabled/timezone.conf
EXPOSE 80
RUN pip install speedtest-cli
#COPY overlay/etc ${NAGIOS_HOME}/etc
COPY overlay/opt/nagios/libexec/* ${NAGIOS_HOME}/libexec/
COPY overlay/opt/nagios/share/stylesheets/* ${NAGIOS_HOME}/share/stylesheets/
COPY overlay/opt/nagios/share/index.php ${NAGIOS_HOME}/share/
COPY overlay/opt/nagios/share/side.php ${NAGIOS_HOME}/share/
COPY overlay/opt/nagios/share/dashboard ${NAGIOS_HOME}/share/
#COPY overlay/usr ${NAGIOS_HOME}/usr
RUN cd /opt/nagios/etc/objects && \
rm -f commands.cfg printer.cfg switch.cfg templates.cfg windows.cfg
RUN sed -i 's,/bin/mail,/usr/bin/mail,' ${NAGIOS_HOME}/etc/objects/000-commands.cfg && \
sed -i 's,/usr/usr,/usr,' ${NAGIOS_HOME}/etc/objects/000-commands.cfg
RUN cp /opt/nagios/libexec/utils.pm /usr/lib/aarch64-linux-gnu/perl-base/
#VOLUME "${NAGIOS_HOME}/var" "${NAGIOS_HOME}/etc" "/var/log/apache2" "/opt/Custom-Nagios-Plugins" "/opt/nagiosgraph/var" "/opt/nagiosgraph/etc"
CMD [ "/usr/local/bin/start_nagios" ]