This container it's used to provide workers for Mod Gearman using the Distribute Monitoring approach as you can see in the picture above:
To be able to use this container you need to specify two environment variables at docker run:
- Variable
HOSTGROUP
define which Nagios hostgroup this worker will use - Variable
SERVER
define ip:port of your Gearman server
docker run -d --name gearman-worker \
-e HOSTGROUP=MYHOSTGROUP \
-e SERVER=GEARMANSERVER:GEARMAN_PORT \
bernardovale/mod-gearman-worker
Tag latest
will be always same as minimum
. This tag it's the minimal setup required to make this container usable.
Tag oracle
increments tag minimum
adding Oracle Instant Client and check_oracle_health script
- mod_gearman_worker
- check_nrpe
- check_icmp
- check_nt
- mod_gearman_worker
- check_nrpe
- check_icmp
- check_nt
- mod_gearman_worker
- check_nrpe
- check_icmp
- check_nt
- check_oracle_health
- Oracle Instant Client 11g
Container tag oracle
has an Oracle Instant Client 11.2 installed whithout tnsnames.ora.
You can provide it as a volume at docker run
On your docker host start a folder to keep your tnsnames.ora
mkdir -p /appliance/oracle
tee /appliance/oracle/tnsnames.ora <<EOF
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)
EOF
Lauch your container and map your tnsnames.ora folder pointing to TNS_ADMIN
which is:
/usr/local/instantclient/network/admin
docker run -d --name gearman-worker \
-e HOSTGROUP=APP \
-e SERVER=GEARMANSERVER:4730 \
-v /appliance/oracle:/usr/local/instantclient/network/admin \
mod-gearman-worker:oracle
Use the command docker exec
to make a quick connection test with an Oracle database.
docker exec gearman-worker bash -c \
"/usr/local/nagios/libexec/check_oracle_health --connect '192.168.0.1:1521/test' \
--username 'system' --password 'mypassword' \
--mode connection-time --warning 1 --critical 5"
OK - 0.07 seconds to connect as SYSTEM | connection_time=0.0676;1;5
Error:
CRITICAL: Return code of 127 is out of bounds. Make sure the plugin
you're trying to run actually exists. (worker: APP)
[/usr/bin/env: /usr/local/nagios/libexec/check_custom_script
: No such file or directory]
```
**Cause**
You're using a Nagios script that doesn't exists inside the container.
**Solution**
Send the script from your Docker host to the container via [docker cp] (https://docs.docker.com/engine/reference/commandline/cp/).
`docker cp check_custom_script my-container-name:/usr/local/nagios/libexec/check_custom_script`
**OR**
If you think the script it's really important and others may also benefit from it please send my a PR.