def _vs_burst_balance(): return ('burst_balance_levels_lower', Alternative( title=_("Lower levels for burst balance"), style="dropdown", elements=[ Tuple(title=_("Set levels"), elements=[ Percentage(title=_("Warning at or below")), Percentage(title=_("Critical at or below")), ]), Tuple(title=_("No levels"), elements=[ FixedValue(None, totext=""), FixedValue(None, totext=""), ]), ]))
def _vs_alternative_levels( # pylint: disable=redefined-builtin title: str, help: str, percent_levels: _Tuple[float, float] = (0., 0.), percent_detail: str = "", abs_detail: str = "", ) -> Alternative: return Alternative(title=title, help=help, elements=[ Dictionary( title="Provide one set of levels for in and out", elements=[("both", _vs_packet_levels( title="Levels", percent_levels=percent_levels, percent_detail=percent_detail, abs_detail=abs_detail, ))], optional_keys=False, ), Dictionary( title="Provide seperate levels for in and out", elements=[ ( "in", _vs_packet_levels( title="In levels", percent_levels=percent_levels, percent_detail=percent_detail, abs_detail=abs_detail, ), ), ( "out", _vs_packet_levels( title="Out levels", percent_levels=percent_levels, percent_detail=percent_detail, abs_detail=abs_detail, ), ), ], optional_keys=False, ), ])
def _parameter_valuespec_sap_hana_backup(): return Dictionary(elements=[ ('backup_age', Alternative(title=_("Upper levels for the backup age"), elements=[ Tuple(title=_("Set levels"), elements=[ Age(title=_("Warning at")), Age(title=_("Critical at")), ]), Tuple(title=_("No levels"), elements=[ FixedValue(None, totext=""), FixedValue(None, totext=""), ]), ])), ])
def _vs_sites(self): return Alternative( title=_("Authorized sites"), help=_("The sites the user is authorized to see in the GUI."), default_value=None, elements=[ FixedValue( None, title=_("All sites"), totext=_("May see all sites"), ), DualListChoice( title=_("Specific sites"), choices=config.site_choices, ), ], )
def _parameter_valuespec_netapp_volumes(): return Transform( valuespec=Dictionary( ignored_keys=["patterns"], elements=[ ( "levels", Alternative( title=_("Levels for volume"), show_alternative_title=True, default_value=(80.0, 90.0), match=match_dual_level_type, elements=[ get_free_used_dynamic_valuespec("used", "volume", maxvalue=None), Transform( valuespec=get_free_used_dynamic_valuespec( "free", "volume", default_value=(20.0, 10.0) ), forth=transform_filesystem_free, back=transform_filesystem_free, ), ], ), ), ( "perfdata", ListChoice( title=_("Performance data for protocols"), help=_("Specify for which protocol performance data should get recorded."), choices=[ ("", _("Summarized data of all protocols")), ("nfs", _("NFS")), ("cifs", _("CIFS")), ("san", _("SAN")), ("fcp", _("FCP")), ("iscsi", _("iSCSI")), ], ), ), ] + fs_magic_elements + fs_inodes_elements + size_trend_elements, ), forth=transform_trend_mb_to_trend_bytes, )
def _parameter_valuespec_general_flash_usage(): return Alternative(elements=[ Tuple(title=_("Specify levels in percentage of total Flash"), elements=[ Percentage(title=_("Warning at a usage of"), label=_("% of Flash"), maxvalue=None), Percentage(title=_("Critical at a usage of"), label=_("% of Flash"), maxvalue=None) ]), Tuple(title=_("Specify levels in absolute usage values"), elements=[ Integer(title=_("Warning at"), unit=_("MB")), Integer(title=_("Critical at"), unit=_("MB")) ]), ])
def valuespec(self): return Alternative( title=_("User interface theme"), style="dropdown", orientation="horizontal", elements=[ FixedValue( None, title=_("Use the default theme"), totext="", ), DropdownChoice( title=_("Set custom theme"), choices=theme_choices(), ), ], )
def _vs_fortinet_signatures(title): return Alternative(title=title, style="dropdown", elements=[ Tuple(title=_("Set levels"), elements=[ Age(title=_("Warning at"), default_value=86400), Age(title=_("Critical at"), default_value=2 * 86400), ]), Tuple(title=_("No levels"), elements=[ FixedValue(None, totext=""), FixedValue(None, totext=""), ]), ])
def parameter_valuespec(self): return Alternative( help=_( "This rules sets the expected number of active paths for a multipath LUN " "on Linux and Solaris hosts"), title=_("Expected number of active paths"), elements=[ Integer(title=_("Expected number of active paths")), Tuple( title=_("Expected percentage of active paths"), elements=[ Percentage(title=_("Warning if less then")), Percentage(title=_("Critical if less then")), ], ), ], )
def _parameter_valuespec_netapp_luns(): return Transform( Dictionary( title=_("Configure levels for used space"), elements=[ ("ignore_levels", FixedValue( title= _("Ignore used space (this option disables any other options)" ), help= _("Some luns, e.g. jfs formatted, tend to report incorrect used space values" ), totext=_("Ignore used space"), value=True, )), ("levels", Alternative( title=_("Levels for LUN"), show_alternative_title=True, default_value=(80.0, 90.0), match=match_dual_level_type, elements=[ get_free_used_dynamic_valuespec("used", "LUN"), Transform( get_free_used_dynamic_valuespec( "free", "LUN", default_value=(20.0, 10.0)), forth=transform_filesystem_free, back=transform_filesystem_free, ) ], )), ] + size_trend_elements + [ ("read_only", Checkbox( title=_("LUN is read-only"), help=_( "Display a warning if a LUN is not read-only. Without " "this setting a warning will be displayed if a LUN is " "read-only."), label=_("Enable"))), ], ), forth=transform_trend_mb_to_trend_bytes, )
def cgroup_match_options(): return Tuple( title=_("Operating system control group information"), elements=[ Alternative( elements=[ TextInput( title= _("Exact content of the operating system control group info" ), label=_("Control group:"), size=50, ), Transform( RegExp( size=50, mode=RegExp.prefix, ), title=_( "Regular expression matching control group info"), help=_( "This regex must match the <i>beginning</i> of the complete " "control group information"), forth=lambda x: x[1:], # remove ~ back=lambda x: "~" + x, # prefix ~ ), FixedValue( None, totext="", title=_("Match all control groups"), ), ], match=match_alt, help= _("<p>The control group information is currently only specified by the linux agent" " (cgroup). If it is present and this rule is set, the inventory will only trigger" " if the control group of the corresponding process matches." " For instance: you can use this rule to exclude all processes belonging to" ' a docker container by specifying the expression "%s" (without the quotes),' ' and selecting "%s".</p>') % (r".*/docker/", _("Invert matching")), ), Checkbox(label=_("Invert matching"), default_value=False), ], )
def _vs(self): return Dictionary(title=_("Read only mode"), optional_keys=False, render="form", elements=[ ("enabled", Alternative(title=_("Enabled"), elements=[ FixedValue( False, title=_("Disabled "), totext="Not enabled", ), FixedValue( True, title=_("Enabled permanently"), totext=_("Enabled until disabling"), ), Tuple(title=_("Enabled in time range"), elements=[ AbsoluteDate( title=_("Start"), include_time=True, ), AbsoluteDate( title=_("Until"), include_time=True, default_value=time.time() + 3600, ), ]) ])), ("rw_users", ListOf( userdb.UserSelection(), title=_("Can still edit"), help=_("Users listed here are still allowed to modify things."), movable=False, add_label=_("Add user"), default_value=[config.user.id], )), ("message", TextAreaUnicode( title=_("Message"), rows=3, )), ])
def _parameter_valuespec_mssql_file_sizes(): return Dictionary( title=_("File Size Levels"), elements=[ ( "data_files", Tuple( title=_("Total data file size: Absolute upper levels"), elements=[ Filesize(title=_("Warning at")), Filesize(title=_("Critical at")), ], ), ), ( "log_files", Tuple( title=_("Total log file size: Absolute upper levels"), elements=[Filesize(title=_("Warning at")), Filesize(title=_("Critical at"))], ), ), ( "log_files_used", Alternative( title=_("Used log files: Absolute or relative upper levels"), elements=[ Tuple( title=_("Upper absolute levels"), elements=[ Filesize(title=_("Warning at")), Filesize(title=_("Critical at")), ], ), Tuple( title=_("Upper percentage levels"), elements=[ Percentage(title=_("Warning at")), Percentage(title=_("Critical at")), ], ), ], ), ), ], )
def _parameter_valuespec_aws_rds_connections(): return Dictionary(elements=[ ('levels', Alternative(title=_("Upper levels for connections in use"), style="dropdown", elements=[ Tuple(title=_("Set levels"), elements=[ Integer(title=_("Warning at")), Integer(title=_("Critical at")), ]), Tuple(title=_("No levels"), elements=[ FixedValue(None, totext=""), FixedValue(None, totext=""), ]), ])), ])
def _parameter_valuespec_windows_multipath(): return Alternative( help= _("This rules sets the expected number of active paths for a multipath LUN." ), title=_("Expected number of active paths"), elements=[ Integer(title=_("Expected number of active paths")), Tuple( title=_("Expected percentage of active paths"), elements=[ Integer(title=_("Expected number of active paths")), Percentage(title=_("Warning if less then")), Percentage(title=_("Critical if less then")), ], ), ], )
def _parameter_valuespec_aws_rds_disk_usage(): return Dictionary(elements=[ ('levels', Alternative(title=_("Upper levels for disk usage"), style="dropdown", elements=[ Tuple(title=_("Set levels"), elements=[ Percentage(title=_("Warning at")), Percentage(title=_("Critical at")), ]), Tuple(title=_("No levels"), elements=[ FixedValue(None, totext=""), FixedValue(None, totext=""), ]), ])), ])
def _vs_mssql_backup_age(title): return Alternative( title=_("%s" % title), style="dropdown", elements=[ Tuple( title=_("Set levels"), elements=[ Age(title=_("Warning if older than")), Age(title=_("Critical if older than")), ]), Tuple( title=_("No levels"), elements=[ FixedValue(None, totext=""), FixedValue(None, totext=""), ]), ])
def _parameter_valuespec_oracle_sessions(): return Transform(Dictionary( elements=[ ("sessions_abs", Alternative( title=_("Absolute levels of active sessions"), style="dropdown", help= _("This check monitors the current number of active sessions on Oracle" ), elements=[ FixedValue(None, title=_("Do not use absolute levels"), totext=""), Tuple( title=_("Number of active sessions"), elements=[ Integer(title=_("Warning at"), unit=_("sessions"), default_value=100), Integer(title=_("Critical at"), unit=_("sessions"), default_value=200), ], ), ], )), ( "sessions_perc", Tuple( title=_("Relative levels of active sessions."), help= _("Set upper levels of active sessions relative to max. number of sessions. This is optional." ), elements=[ Percentage(title=_("Warning at")), Percentage(title=_("Critical at")), ], ), ), ], optional_keys=["sessions_perc"], ), forth=convert_oracle_sessions)
def _parameter_valuespec_postgres_maintenance(): return Dictionary( help=_("With this rule you can set limits for the VACUUM and ANALYZE operation of " "a PostgreSQL database. Keep in mind that each table within a database is checked " "with this limits."), elements=[ ("last_vacuum", Tuple( title=_("Time since the last VACUUM"), elements=[ Age(title=_("Warning if older than"), default_value=86400 * 7), Age(title=_("Critical if older than"), default_value=86400 * 14) ], )), ("last_analyze", Tuple( title=_("Time since the last ANALYZE"), elements=[ Age(title=_("Warning if older than"), default_value=86400 * 7), Age(title=_("Critical if older than"), default_value=86400 * 14) ], )), ("never_analyze_vacuum", Alternative( title=_("Never analyzed/vacuumed tables"), style="dropdown", elements=[ Tuple( title=_("Age of never analyzed/vacuumed tables"), elements=[ Age(title=_("Warning if older than"), default_value=0), Age(title=_("Critical if older than"), default_value=1000 * 365 * 24 * 3600) ], ), FixedValue( None, title=_("Do not check age of never analyzed/vacuumed tables"), totext="", ), ], )), ], )
def _vs_cisco_dom(which_levels): def _button_text_warn(which_levels): if which_levels == "upper": text = "Warning at" elif which_levels == "lower": text = "Warning below" else: raise ValueError return text def _button_text_crit(which_levels): if which_levels == "upper": text = "Critical at" elif which_levels == "lower": text = "Critical below" else: raise ValueError return text return ( "power_levels_%s" % which_levels, Alternative( title="%s levels for the signal power" % which_levels.title(), style="dropdown", default_value=True, # use device levels elements=[ FixedValue( True, title=_("Use device levels"), totext="", ), Tuple(title=_("Use the following levels"), elements=[ Float(title=_(_button_text_warn(which_levels)), unit=_("dBm")), Float(title=_(_button_text_crit(which_levels)), unit=_("dBm")), ]), FixedValue( False, title=_("No levels"), totext="", ), ]))
def _valuespec_inventory_solaris_services_rules(): return Dictionary( title=_("Solaris service discovery"), elements=[ ("descriptions", ListOfStrings(title=_("Descriptions"))), ("categories", ListOfStrings(title=_("Categories"))), ("names", ListOfStrings(title=_("Names"))), ("instances", ListOfStrings(title=_("Instances"))), ( "states", ListOf( valuespec=DropdownChoice(choices=[ ("online", _("online")), ("disabled", _("disabled")), ("maintenance", _("maintenance")), ("legacy_run", _("legacy run")), ], ), title=_("States"), ), ), ( "outcome", Alternative( title=_("Service name"), elements=[ FixedValue(value="full_descr", title=_("Full Description"), totext=""), FixedValue( value="descr_without_prefix", title=_("Description without type prefix"), totext="", ), ], ), ), ], help= _("This rule can be used to configure the discovery of the Solaris services check. " "You can configure specific Solaris services to be monitored by the Solaris check by " "selecting them by description, category, name, or current state during the discovery." ), )
def _parameter_valuespec_domino_tasks(): return Transform( Dictionary( elements=[ ( "process", Alternative( title=_("Name of the task"), elements=[ TextInput( title=_("Exact name of the task"), size=50, ), Transform( RegExp( size=50, mode=RegExp.prefix, ), title=_("Regular expression matching tasks"), help= _("This regex must match the <i>beginning</i> of the complete " "command line of the task including arguments" ), forth=lambda x: x[1:], # remove ~ back=lambda x: "~" + x, # prefix ~ ), FixedValue( None, totext="", title=_("Match all tasks"), ) ], match=lambda x: (not x and 2) or (x[0] == '~' and 1 or 0))), ("levels", _vs_levels( _("Specify levels on the minimum and maximum number of tasks." ), )), ], optional_keys=False, ), forth=_transform_valuespec_domino_tasks, )
def _parameter_valuespec_multipath_count(): return Alternative( help=_( "This rules sets the expected number of active paths for a multipath LUN " "on ESX servers"), title=_("Match type"), elements=[ FixedValue( None, title=_("OK if standby count is zero or equals active paths."), totext="", ), Dictionary( title=_("Custom settings"), elements=[( element, Transform( Tuple( title=description, elements=[ Integer(title=_("Critical if less than")), Integer(title=_("Warning if less than")), Integer(title=_("Warning if more than")), Integer(title=_("Critical if more than")), ], ), forth=lambda x: len(x) == 2 and ( 0, 0, x[0], x[1], ) or x, ), ) for (element, description) in [ ("active", _("Active paths")), ("dead", _("Dead paths")), ("disabled", _("Disabled paths")), ("standby", _("Standby paths")), ("unknown", _("Unknown paths")), ]], ), ], )
def _valuespec_if_groups(): node_name_elements: List[DictionaryEntry] = [ ("node_name", TextAscii(title=_("Node name"))) ] return Transform(Alternative( title=_('Network interface groups'), help= _('Normally the Interface checks create a single service for interface. ' 'By defining if-group patterns multiple interfaces can be combined together. ' 'A single service is created for this interface group showing the total traffic amount ' 'of its members. You can configure if interfaces which are identified as group interfaces ' 'should not show up as single service. You can restrict grouped interfaces by iftype and the ' 'item name of the single interface.'), style="dropdown", elements=[ ListOf( title=_("Groups on single host"), add_label=_("Add pattern"), valuespec=Dictionary( elements=vs_elements_if_groups_group + vs_elements_if_groups_matches, required_keys=["group_name", "group_presence"]), ), ListOf( magic="@!!", title=_("Groups on cluster"), add_label=_("Add pattern"), valuespec=Dictionary( elements=vs_elements_if_groups_group + [("node_patterns", ListOf( title=_("Patterns for each node"), add_label=_("Add pattern"), valuespec=Dictionary(elements=node_name_elements + vs_elements_if_groups_matches, required_keys=["node_name"]), allow_empty=False, ))], optional_keys=[])), ], ), forth=transform_if_groups_forth)
def _parameter_valuespec_volume_groups(): return Dictionary(elements=[ ("levels", Alternative( title=_("Levels for volume group"), show_alternative_title=True, default_value=(80.0, 90.0), match=match_dual_level_type, elements=[ get_free_used_dynamic_valuespec("used", "volume group"), Transform(get_free_used_dynamic_valuespec( "free", "volume group", default_value=(20.0, 10.0)), title=_("Levels for volume group free space"), allow_empty=False, forth=transform_filesystem_free, back=transform_filesystem_free) ], )), ], optional_keys=False)
def _vs_mssql_backup_age(title: str) -> Alternative: return Alternative( title=title, elements=[ Tuple( title=_("Set levels"), elements=[ Age(title=_("Warning if older than")), Age(title=_("Critical if older than")), ], ), Tuple( title=_("No levels"), elements=[ FixedValue(None, totext=""), FixedValue(None, totext=""), ], ), ], )
def _parameter_valuespec_statgrab_mem(): return Alternative(elements=[ Tuple( title=_("Specify levels in percentage of total RAM"), elements=[ Percentage(title=_("Warning at a usage of"), unit=_("% of RAM"), maxvalue=None), Percentage(title=_("Critical at a usage of"), unit=_("% of RAM"), maxvalue=None) ], ), Tuple( title=_("Specify levels in absolute usage values"), elements=[ Integer(title=_("Warning at"), unit=_("MB")), Integer(title=_("Critical at"), unit=_("MB")) ], ), ], )
def _parameter_valuespec_heartbeat_crm_resources(): return Transform( Dictionary(elements=[ ( "expected_node", Alternative( title=_("Expected node"), help= _("The hostname of the expected node to hold this resource." ), elements=[ FixedValue(value=None, totext="", title=_("Do not check the node")), TextInput(allow_empty=False, title=_("Expected node")), ], ), ), ], ), forth=_transform_opt_string, )
def _valuespec_agent_config_proxmox_provisioned(): return Alternative( title=_("Proxmox Provisioned Storage (Linux)"), help= _("This will deploy the agent plugin <tt>proxmox_provisioned</tt> for monitoring storage space." ), style="dropdown", elements=[ Dictionary( title=_("Deploy plugin for Proxmox Storage"), elements=[ ("interval", Age(title=_("Run asynchronously"), label=_("Interval for collecting data"), default_value=300)), ], ), FixedValue(None, title=_("Do not deploy plugin for Proxmox Storage"), totext=_("(disabled)")), ])
def parameter_valuespec(self): return Dictionary(elements=[ ("errors", Alternative( title=_("Levels for error rates"), help= _("These levels make the check go warning or critical whenever the " "<b>percentual error rate</b> or the <b>absolute error rate</b> of the monitored interface reaches " "the given bounds. The percentual error rate is computed by dividing number of " "errors by the total number of packets (successful plus errors)." ), elements=[ Tuple(title=_("Percentual levels for error rates"), elements=[ Percentage(title=_("Warning at"), unit=_("percent errors"), default_value=0.01, display_format='%.3f'), Percentage(title=_("Critical at"), unit=_("percent errors"), default_value=0.1, display_format='%.3f') ]), Tuple(title=_("Absolute levels for error rates"), elements=[ Integer(title=_("Warning at"), unit=_("errors")), Integer(title=_("Critical at"), unit=_("errors")) ]) ])), ("discards", Tuple( title=_("Absolute levels for discards rates"), elements=[ Integer(title=_("Warning at"), unit=_("discards")), Integer(title=_("Critical at"), unit=_("discards")) ], )), ], )