npm i @sakuli/forwarder-gearman
Sakuli transmits performance data to a Gearman result queue rather than to OMD directly. For that we require a gearman-enabled monitoring system in an OMD environment.
It takes a few steps to set up the monitoring system in order to process Sakuli’s performance data correctly.
Use the Makefile located in OMD_ROOT/share/sakuli/omd/
to configure mod-gearman:
0.0.0.0:4730
; overwrite with e.g. export GEARMAN_PORT=192.168.130.10:4731
)sakuli_secret
; overwrite with e.g. export GEARMAN_SECRET=mykey
)Then run:
su - <SITE_USER>
cd ~/share/sakuli/setup/omd
make gearman
Due to security reasons, the Makefile will only configure mod-gearman if it is not enabled yet. If it is already enabled inspect the Makefile, read the instruction carefully and execute the steps by hand.
For PRODUCTION usage please use individual encryption keys!
If you do not want to use encryption at all, enable accept_clear_results
and disable sakuli.forwarder.gearman.encryption
:
vim ~/etc/mod-gearman/server.cfg
...
accept_clear_results=yes
testsuite.properties
sakuli.forwarder.gearman.encryption=false
Use the Sakuli gearman proxy script if you want to intervene between the communication of Sakuli and Naemon/Nagios.
Possible use cases:
Use the Makefile located in $OMD_ROOT/share/sakuli/
to enable the feature:
su - <SITE_USER>
cd n/share/sakuli/setup/omd
make gearman_proxy
Edit etc/mod-gearman/sakuli_gearman_proxy.cfg
:
$remoteHost="172.17.0.2"; #1
$remotePort="4730"; #1
$localHost="172.17.0.2"; #2
$localPort="4730"; #2
$queues = {
"$remoteHost:$remotePort/check_results_sakuli" => "$localHost:$localPort/check_results",
}; #3 + 4
$err_h = 'error_host'; #5
$err_s = 'eror_svc';
$err_r = '2'; #6
gearman_proxy.pl
is running on another systemcheck_results_sakuli
⇒ queue name to receive Sakuli results. Make sure this queue name is defined in property sakuli.forwarder.gearman.server.queue
on all Sakuli clients (see Sakuli Client Configuration)check_results
⇒ default queue of mod-gearman where gearman workers write back their results (no need to change that)su - <SITE_USER>
omd start sakuli_gearman_proxy
# Starting sakuli_gearman_proxy...OK
Check that the queue check_results_sakuli
is running in addition to the default queue check_results
.
OMD[demo]:~$ gearman_top
2017-06-09 13:37:28 - localhost:4730 - v0.33
Queue Name | Worker Available | Jobs Waiting | Jobs Running
-----------------------------------------------------------------------
check_results | 1 | 0 | 0
check_results_sakuli | 1 | 0 | 0
-----------------------------------------------------------------------
This change does affect other monitoring checks executed with mod-gearman, because only Sakuli will send results into the queue check_results_sakuli
.
Create a service which should receive Sakuli test results. Host/service names derive from the following properties:
sakuli.forwarder.gearman.nagios.hostname
(defined globally or via suite)testsuite.id
(defined in testsuite.properties
)OMD configuration:
define host {
host_name sakuli_client
alias sakuli_client
address __SAKULI_CLIENT_IP__
use generic-host
}
define service {
service_description example_xfce
host_name sakuli_client
use tpl_s_sakuli_gearman
freshness_threshold 180
}
The
freshness_threshold
should be slightly higher than the interval during which Sakuli tests are executed.
The check is waiting now for check results from a Sakuli client.
You must set the global properties for the gearman receiver on the Sakuli client. For doing this, edit sakuli.properties
in the folder containing the testsuites:
Property | Default | Effect |
---|---|---|
sakuli.forwarder.gearman.enabled |
false |
Enable forwarding to OMD |
sakuli.forwarder.gearman.encryption |
true |
Enable encryption and set the key only if you did not activate accept_clear_results in mod-gearman. Otherwise, set encryption to false |
sakuli.forwarder.gearman.secret.key |
secret-password |
The password configured in enable and configure mod-gearman |
sakuli.forwarder.gearman.server.host |
The host where OMD is running | |
sakuli.forwarder.gearman.server.port |
4730 |
The port where gearman is listing (configured in enable and configure mod-gearman) |
sakuli.forwarder.gearman.server.queue |
check_results |
The default queue for Sakuli |