...
If opConfig encounters invalid plugins it will ignore these and log a message about the problem.
The global configuration option 'opconfig_plugin_timeout
' (default: 20 seconds) sets the maximum execution time for any opConfig plugin function.
...
Code Block |
---|
%hash = ( 'collect_with_plugin' => { 'os_info' => { 'os' => '/some special device/', }, # ...omitted scheduling info etc. 'commands' => [ { 'command' => "external command", use_collection_plugin => "SpecialDeviceHelper", }, # ... ], } ); |
...
What is expected of a plugin for configuration data collection
...
Here is a minimal collection plugin which uses an external program and reports its output as configuration data back to opConfig:
Code Block |
---|
sub collect_configuration { my (%args) = @_; my ($node, $node_info, $command, $credential_set, $logger, $opconfig) = @args{qw(node node_info command credential_set logger opconfig)}; $logger->info("Plugin ".__PACKAGE__." about to collect data for $node, command $command->{command}"); # maybe we need to shell out to some program? open(P, "-|", "/usr/local/bin/complicated_operation", $command->{command}, $node_info->{host}) or return { error => "failed to start complicated_operation: $!" }; my $goodies = <P>; close P; return { error => "complicated_operation failed: $?" } if ($?); return { success => 1, configuration_data => $goodies }; } 1; |
...
The alerts
response structure must be a hashref if it is present at all.
In the simplest case, the key is the alert/event name, and the value is 0 or 1. In this case opConfig raises (value 1) or closes (value 0) an event in NMIS with the given event name and for the current node.
Requires opCommon.nmis configuraiton 'opconfig_raise_alert_events' => 'true', This is the default value as set by the installer.
As a more precise alternative, the value may be a hash with the following supported keys:
...
Code Block |
---|
package RaiseAlerts; our $VERSION = "0.0.0"; use strict; sub process_configuration { my (%args) = @_; my ($node, $node_info, $command, $configuration_data, $derived, $alerts, $conditions, $logger, $opconfig) = @args{qw(node node_info command configuration_data derived_info alerts conditions logger opconfig)}; # ...insert logic that looks at context of command, configuration_data, node etc # to determine what alerts to raise return { success => 1, alerts => { "Node Unhappy" => 1, # raise event "Node Unreachable" => 0, # clear event elsewhere => { event => "Node Not Cooperating", node => "some_other_node", details => "this alert applies to another node", level => "Minor", }, }, }; } 1; |
How to use a plugin to report conditions to opConfig
...
please consult the opConfig API documentation for details.