Docker-Nagios provide Nagios service running on the docker container and a series of solution for Nagios: Adagios for Web Based Nagios Configuration, Grafana for monitor metric & dashboards, Ndoutils for transfer monitor data to MySQL Database, NCPA&NRDP for nagios passive checks.
As the docker-image contains a large number of software, the following describes the various components of the version and the basic information:
phusion/baseimage:latest
Docker baseimageNagios Core 4.4.6
Nagios core - the community versionNagios Plugins 2.2.1
Nagios pluginsGraphios 2.0.3
Send Nagios spool data to graphiteGraphite 1.1.3
Grafana's datasourceGrafana 5.1.3
The tool for beautiful monitoring and metric analytics & dashboards for Graphite, InfluxDB & Prometheus & MoreNDOUtils 2.1.3
Allow you save all the data to MySQL databasePyNag 0.9.1-1
A command line tool for managing nagios configuration and provides a framework to write pluginsOkconfig 1.3.2-1
Provides a templated Nagios configuration, Adagios can use okconfig to quickly and easily configure NagiosMK-livestatus 1.2.8p20
MK-livestatus can get Nagios status information, loaded as broker module into Nagios configuration, and Adagios uses mk-livestatus to get status informationAdagios 1.6.3-2
A web based Nagios configuration interface built to be simple and intuitive in design, exposing less of the clutter under the hood of nagios. Adagios is more lighter UI than Check_MK, based on mod_wsgi(so it cannot be used with Check_MK, Check_MK based on mod_python, already deprecated and conflict with mod_wsgi)NRDP 1.5.2
A flexible data transport mechanism and processor for Nagios. It uses standard ports protocols (HTTP(S) and XML for api response) and can be implemented as a replacement for NSCA. Used with NCPA, omg, those bloody names(nrpe,ncpa,nrds,nrdp,nsti...).NCPA 2.1.3
The Nagios Cross-Platform Agent; a single monitoring agent that installs on all major operating systems. NCPA with a built-in web GUI, we will use ncpa for passive checks.
Ad-hoc run nagios in docker.
$ docker run --name nagios -p 80:80 -p 3000:3000 -d ethnchao/nagios
Accessing nagios and Adagios:
-
Nagios http://127.0.0.1/
User
:nagiosadmin
Password
:nagios
-
Adagios http://127.0.0.1/adagios
-
Grafana http://127.0.0.1:3000/
User
:admin
Password
:admin
-
NCPA (Client) https://ncpa-agent-address:5693/
If you need to use a custom login user name and password, you can run the container with the environment variables: NAGIOSADMIN_USER
and NAGIOSADMIN_PASS
.
$ docker run --name nagios -p 9001:80 -p 3000:3000 \
-e NAGIOSADMIN_USER=john \
-e NAGIOSADMIN_PASS=secret_code \
-d ethnchao/nagios
We recommend that you use docker-compose to run Nagios with MySQL containers, check this docker-compose.yml 。
In some features, such as using the Adagios - Okconfig - Install Agent, you need to configure the NRDP server address in the remote client. The IP + port of the address is also the address of the Nagios server, but when you use the Docker to run the container, Nagios Do not know what their own server address, so when we run the container, passing the server address to it.
$ docker run --name nagios -p 9001:80 -p 3000:3000 -d ethnchao/nagios --server-url http://172.17.242.190:9001
You can choose to mount additional configuration files, plugin, okconfig-example to the container, such as the additional configuration file on /data/conf, plugin on /data/plugin, okconfig-example on /data/example.
$ docker run --name nagios -p 80:80 -p 3000:3000 \
-v /data/conf:/usr/local/nagios/etc/mount \
-v /data/plugin:/data/plugin \
-v /data/example:/data/example \
-d ethnchao/nagios
If you need to store the monitoring information in MySQL database, you need to enable Ndoutils, which there are two cases:
- If you already executed the Ndoutils database initialization script in the MySQL database, then run this container with option:
--enable-ndo
.
$ docker run --name nagios -p 80:80 -p 3000:3000 \
-e MYSQL_USER=nagios -e MYSQL_PASSWORD=nagios \
-e MYSQL_ADDRESS=172.17.242.178 -e MYSQL_DATABASE=nagios \
-d ethnchao/nagios --enable-ndo
- If you did not execute the Ndoutils initalization script in the MySQL database, you can run this container with option:
--enable-ndo --create-db
$ docker run --name nagios -p 80:80 -p 3000:3000 \
-e MYSQL_USER=nagios -e MYSQL_PASSWORD=nagios \
-e MYSQL_ADDRESS=172.17.242.178 -e MYSQL_DATABASE=nagios \
-d ethnchao/nagios --enable-ndo --create-db
By setting heirloom-mailx, you'll be able to send email with s-nail command in nagios/adagios interface.
- Set /etc/s-nail.rc, adding these line:
set from=your-email@demo.com
set smtp=smtps://demo.com:465
set smtp-auth-user=your-email@demo.com
set smtp-auth-password=your-email-password
set smtp-auth=login
Build the Nagios image from github source.
$ docker build -t nagios .
Software | Config file location |
---|---|
Nagios | /usr/local/nagios/etc |
Adagios | /etc/adagios |
Okconfig | /etc/okconfig.conf |
NRDP | /usr/local/nrdp |
Graphios | /etc/graphios/graphios.cfg |
Graphite | /opt/graphite/conf/ |
To reduce the size of the docker-image, we use the apt and pip to install a lot of packages in the same RUN
instruction, each software(like adagios/nagios-plugins) only depends on some of the packages, the following records the software depends on which packages, dependencies all come from official documents of the software, some from the actual operation of the adjustment.
Nagioscore needs the following dependencies: (The software list is less than the official documents, some of the official website of the software has been dependent on each other, no need to write)
apache2 \
apache2-utils \
autoconf \
bc \
build-essential \
dc \
gawk \
gettext \
gperf \
libapache2-mod-php \
libgd2-xpm-dev \
libmcrypt-dev \
libssl-dev \
unzip
Nagios command: notify-by-mail
bsd-mailx
The following dependencies are required for the Nagios-Plugin compilation installation:
m4 \
gettext \
automake \
autoconf
The dependencies that may be used when the Nagios plugin is running:
iputils-ping \
fping \
postfix \
libnet-snmp-perl \
smbclient \
snmp \
snmpd \
snmp-mibs-downloader \
netcat
Software installation related:
python-pip
、 git
、 python-dev
System services:
runit
、 sudo
、 parallel
The following dependencies are required for the Graphite installation:
apache2 \
apache2-utils \
build-essential \
libcairo2-dev \
libffi-dev \
libapache2-mod-wsgi
The following dependencies are required for the Graphios installation:
sudo
The following dependencies are required for the Ndoutils installation:
mysql-client \
libmysql++-dev \
libmysqlclient-dev
The following dependencies are required for the Nrpe installation:
build-essential
The following dependencies are required when the NRDP is running:
php7.0-xml