pentaho/pentaho-kettle · error · KettleException
JobSendNagiosPassiveCheck.Error.TargetServerMissing
Error message
JobSendNagiosPassiveCheck.Error.TargetServerMissing
What it means
This KettleException is thrown in execute() when the Nagios target server name (after environment substitution) is empty. The job entry cannot send a passive check without knowing which Nagios server to send it to. The message text comes from the localized message key JobSendNagiosPassiveCheck.Error.TargetServerMissing.
Solutions
- Set the server name field in the job entry dialog to the Nagios server host
- If it uses a variable, define that variable in kettle.properties, the job's 'Set Variables', or pass it as a named parameter at runtime
- Add a preceding 'Check if file/connection' style validation or abort path that verifies the variable is set before this entry runs
Example fix
// before (kettle.properties missing the value)
# NAGIOS_HOST not set -> ${NAGIOS_HOST} resolves to empty
// after
NAGIOS_HOST=nagios.example.com Defensive patterns
Strategy: validation
Validate before calling
// before executing the job
String host = job.getVariable("NAGIOS_HOST");
if (host == null || host.trim().isEmpty()) {
throw new IllegalStateException("NAGIOS_HOST must be set before running the Nagios passive check job");
} Type guard
boolean isNonEmpty(String s) { return s != null && !s.trim().isEmpty(); } Try / catch
try {
result = jobEntry.execute(result, nr);
} catch (KettleException e) {
if (e.getMessage().contains("TargetServerMissing")) {
logError("Configure the Nagios server name or define its variable");
}
} Prevention
- Define all host variables in kettle.properties or via Set Variables early in the job
- Pass required named parameters in Kitchen/Scheduler launches
- Use a validation job entry before Nagios sends
- Avoid blank server fields when copying jobs between environments
When it happens
Trigger: Executing the SendNagiosPassiveCheck job entry when the 'Server name' field is blank, or it contains only a variable/parameter that resolves to empty (e.g. ${NAGIOS_HOST} unset at runtime).
Common situations: Job copied from another environment where the environment variable defining the host no longer exists; parameter not passed on the command line or by the scheduler; field simply left blank in the dialog.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- JobSendNagiosPassiveCheck.Error.MessageMissing
- MailInput.Error.ReceivedDateSearchTermEmpty
- MailInput.Error.ReceivedDatesSearchTermEmpty
- A connection of type PALO is expected
- A server socket allocation always has to accompanied by…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/f7591bd6ae4bf8d8.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/sendnagiospassivecheck/JobEntrySendNagiosPassiveCheck.java:465
Result result = previousResult;
result.setNrErrors( 1 );
result.setResult( false );
// Target
String realServername = environmentSubstitute( serverName );
String realPassword = Utils.resolvePassword( variables, password );
int realPort = Const.toInt( environmentSubstitute( port ), DEFAULT_PORT );
int realResponseTimeOut = Const.toInt( environmentSubstitute( responseTimeOut ), DEFAULT_RESPONSE_TIME_OUT );
int realConnectionTimeOut =
Const.toInt( environmentSubstitute( connectionTimeOut ), DEFAULT_CONNECTION_TIME_OUT );
// Sender
String realSenderServerName = environmentSubstitute( senderServerName );
String realSenderServiceName = environmentSubstitute( senderServiceName );
try {
if ( Utils.isEmpty( realServername ) ) {
throw new KettleException( BaseMessages.getString(
PKG, "JobSendNagiosPassiveCheck.Error.TargetServerMissing" ) );
}
String realMessageString = environmentSubstitute( message );
if ( Utils.isEmpty( realMessageString ) ) {
throw new KettleException( BaseMessages.getString( PKG, "JobSendNagiosPassiveCheck.Error.MessageMissing" ) );
}
Level level = Level.UNKNOWN;
switch ( getLevel() ) {
case LEVEL_TYPE_OK:
level = Level.OK;
break;
case LEVEL_TYPE_CRITICAL:
level = Level.CRITICAL;
break;
case LEVEL_TYPE_WARNING:View on GitHub (pinned to f3058517a1)