Skip to content

Execution Modes

LMDA Composer supports four execution modes, each designed for different LogicModule scripting scenarios. The selected mode determines how output is parsed and validated.

Toolbar showing mode dropdown with all options
Freeform

General Scripting & Testing

Best for: Testing, debugging, and exploration without output validation.

Freeform mode runs your script without any output format requirements. Use it when:

  • Testing API calls or data retrieval
  • Debugging script logic step-by-step
  • Running maintenance or utility scripts
  • Exploring collector capabilities
// Freeform example - just print output
def devices = Snmp.walk("192.168.1.1", "1.3.6.1.2.1.1")
devices.each { oid, value ->
println "${oid} = ${value}"
}
return 0

In Freeform mode:

  • Parsed and Validation tabs are disabled
  • Only Raw Output is available
  • No format requirements apply

Active Discovery

Instance Discovery

Best for: Writing and testing Active Discovery (AD) scripts for DataSources.

Active Discovery scripts return instance data that LogicMonitor uses to create monitoring instances.

Each line represents one discovered instance:

instance_id##instance_name
instance_id##instance_name##description
instance_id##instance_name##description####prop1=value1&prop2=value2
FieldRequiredMax LengthRules
Instance IDRequired1024 charsNo spaces, =, :, \, or #
Instance NameRequired255 charsDisplay name for the instance
DescriptionOptionalOptional description text
PropertiesOptionalAuto-properties as key=value&key=value
// Discover network interfaces
def host = hostProps.get("system.hostname")
def interfaces = Snmp.walk(host, "1.3.6.1.2.1.2.2.1.2")
interfaces.each { oid, name ->
def index = oid.tokenize('.')[-1]
// Format: id##name##description####auto.props
println "${index}##${name}##Interface ${index}####auto.interface.index=${index}"
}
return 0

The Validation tab reports:

  • Valid — Instances with all required fields
  • Error — Invalid instance IDs (empty, too long, invalid characters)
  • Warning — Instance names exceeding 255 characters
  • Total instance count in the tab header

Collection

Single-Instance Metrics

Best for: Writing collection scripts for single-instance DataSources.

Collection scripts output datapoint values as simple key-value pairs:

datapoint_name=numeric_value
// Collect CPU metrics
def host = hostProps.get("system.hostname")
def cpuOid = "1.3.6.1.2.1.25.3.3.1.2"
def cpuValues = Snmp.walk(host, cpuOid)
def total = 0
def count = 0
cpuValues.each { oid, value ->
total += value.toInteger()
count++
}
println "CpuUsage=${count > 0 ? total / count : 0}"
println "CpuCount=${count}"
return 0
RuleSeverity
Must be key=value formatError
Value must be numericError
Invalid datapoint name charactersWarning
Non-matching lines ignoredWarning

Batch Collection

Multi-Instance Metrics

Best for: Writing batch collection scripts that handle multiple instances in a single execution.

Batch scripts output data for all instances at once, prefixed with the instance ID (wildvalue):

wildvalue.datapoint=numeric_value
// Batch collect for all interfaces
def host = hostProps.get("system.hostname")
def instances = datasourceinstanceProps.keySet()
instances.each { wildvalue ->
def inOctets = Snmp.get(host, "1.3.6.1.2.1.2.2.1.10.${wildvalue}")
def outOctets = Snmp.get(host, "1.3.6.1.2.1.2.2.1.16.${wildvalue}")
println "${wildvalue}.InOctets=${inOctets}"
println "${wildvalue}.OutOctets=${outOctets}"
}
return 0

When running in Collection or Batch Collection mode, a dialog prompts for additional context:

  • Collection Mode: Enter the wildvalue (instance ID) to simulate
  • Batch Mode: Enter the datasourceId to load all instance properties

This populates instanceProps (Collection) or datasourceinstanceProps (Batch) for your script.

Same rules as Collection mode, plus:

  • Wildvalue prefix is required on each line
  • Wildvalue follows instance ID rules (no spaces, =, :, \, #)
  • Maximum 1024 characters for wildvalue

TaskRecommended Mode
Testing SNMP/WMI queriesFreeform
Building discovery logicActive Discovery
Single-instance DataSourceCollection
Multi-instance DataSourceBatch Collection
PropertySource scriptFreeform
Debugging any scriptFreeform

The current mode is displayed in multiple locations:

  • Toolbar — Mode selector dropdown shows the active mode with its icon
  • Status Bar — Mode badge displayed at the bottom of the editor window
  • Tab Bar — Each tab shows its mode; switching tabs switches the active mode context