influxdata / telegraf

Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.
https://influxdata.com/telegraf
MIT License
14.53k stars 5.56k forks source link

inputs.opcua : panicked : runtime error #15174

Closed vova292 closed 5 months ago

vova292 commented 5 months ago

Relevant telegraf.conf

# Telegraf Configuration
#
# Telegraf is entirely plugin driven. All metrics are gathered from the
# declared inputs, and sent to the declared outputs.
#
# Plugins must be declared in here to be active.
# To deactivate a plugin, comment out the name and any variables.
#
# Use 'telegraf -config telegraf.conf -test' to see what metrics a config
# file would generate.
#
# Environment variables can be used anywhere in this config file, simply surround
# them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"),
# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR})
# Global tags can be specified here in key="value" format.
[global_tags]
# dc = "us-east-1" # will tag all metrics with dc=us-east-1
# rack = "1a"
## Environment variables can be used as tags, and throughout the config file
# user = "$USER"
spiroApp = "$APP_NAME"

# Configuration for telegraf agent
[agent]
## Default data collection interval for all inputs
interval = "10s"
## Rounds collection interval to 'interval'
## ie, if interval="10s" then always collect on :00, :10, :20, etc.
round_interval = true
## Telegraf will send metrics to outputs in batches of at most
## metric_batch_size metrics.
## This controls the size of writes that Telegraf sends to output plugins.
metric_batch_size = 1000
## Maximum number of unwritten metrics per output.  Increasing this value
## allows for longer periods of output downtime without dropping metrics at the
## cost of higher maximum memory usage.
metric_buffer_limit = 10000
## Collection jitter is used to jitter the collection by a random amount.
## Each plugin will sleep for a random time within jitter before collecting.
## This can be used to avoid many plugins querying things like sysfs at the
## same time, which can have a measurable effect on the system.
collection_jitter = "0s"
## Collection offset is used to shift the collection by the given amount.
## This can be be used to avoid many plugins querying constraint devices
## at the same time by manually scheduling them in time.
# collection_offset = "0s"
## Default flushing interval for all outputs. Maximum flush_interval will be
## flush_interval + flush_jitter
flush_interval = "10s"
## Jitter the flush interval by a random amount. This is primarily to avoid
## large write spikes for users running a large number of telegraf instances.
## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
flush_jitter = "0s"
## Collected metrics are rounded to the precision specified. Precision is
## specified as an interval with an integer + unit (e.g. 0s, 10ms, 2us, 4s).
## Valid time units are "ns", "us" (or "µs"), "ms", "s".
##
## By default or when set to "0s", precision will be set to the same
## timestamp order as the collection interval, with the maximum being 1s:
##   ie, when interval = "10s", precision will be "1s"
##       when interval = "250ms", precision will be "1ms"
##
## Precision will NOT be used for service inputs. It is up to each individual
## service input to set the timestamp at the appropriate precision.
precision = "0s"
## Log at debug level.
# debug = false
## Log only error level messages.
# quiet = false
## Log target controls the destination for logs and can be one of "file",
## "stderr" or, on Windows, "eventlog".  When set to "file", the output file
## is determined by the "logfile" setting.
# logtarget = "file"
## Name of the file to be logged to when using the "file" logtarget.  If set to
## the empty string then logs are written to stderr.
# logfile = ""
## The logfile will be rotated after the time interval specified.  When set
## to 0 no time based rotation is performed.  Logs are rotated only when
## written to, if there is no log activity rotation may be delayed.
# logfile_rotation_interval = "0h"
## The logfile will be rotated when it becomes larger than the specified
## size.  When set to 0 no size based rotation is performed.
# logfile_rotation_max_size = "0MB"
## Maximum number of rotated archives to keep, any older logs are deleted.
## If set to -1, no archives are removed.
# logfile_rotation_max_archives = 5
## Pick a timezone to use when logging or type 'local' for local time.
## Example: America/Chicago
# log_with_timezone = ""
## Override default hostname, if empty use os.Hostname()
hostname = ""
## If set to true, do no set the "host" tag in the telegraf agent.
omit_hostname = false

[outputs]

[[outputs.file]]
#   ## Files to write to, "stdout" is a specially handled file.
files = ["stdout"]

[aggregators]

[[aggregators.merge]]
#   ## If true, the original metric will be dropped by the
#   ## aggregator and will not get sent to the output plugins.
drop_original = true

[inputs]

[[inputs.opcua]]
#   ## Metric name
name = "value"
#   #
#   ## OPC UA Endpoint URL
endpoint = "opc.tcp://localhost:4840"
#   #
#   ## Maximum time allowed to establish a connect to the endpoint.
#   # connect_timeout = "10s"
#   #
#   ## Maximum time allowed for a request over the established connection.
#   # request_timeout = "5s"
#   #
#   ## Security policy, one of "None", "Basic128Rsa15", "Basic256",
#   ## "Basic256Sha256", or "auto"
security_policy = "None"
#   #
#   ## Security mode, one of "None", "Sign", "SignAndEncrypt", or "auto"
security_mode = "None"
#   #
#   ## Path to cert.pem. Required when security mode or policy isn't "None".
#   ## If cert path is not supplied, self-signed cert and key will be generated.
#   # certificate = "/etc/telegraf/cert.pem"
#   #
#   ## Path to private key.pem. Required when security mode or policy isn't "None".
#   ## If key path is not supplied, self-signed cert and key will be generated.
#   # private_key = "/etc/telegraf/key.pem"
#   #
#   ## Authentication Method, one of "Certificate", "UserName", or "Anonymous".  To
#   ## authenticate using a specific ID, select 'Certificate' or 'UserName'
#   # auth_method = "Anonymous"
#   #
#   ## Username. Required for auth_method = "UserName"
#   # username = ""
#   #
#   ## Password. Required for auth_method = "UserName"
#   # password = ""
#   #
#   ## Option to select the metric timestamp to use. Valid options are:
#   ##     "gather" -- uses the time of receiving the data in telegraf
#   ##     "server" -- uses the timestamp provided by the server
#   ##     "source" -- uses the timestamp provided by the source
#   # timestamp = "gather"
#   #
#   ## Client trace messages
#   ## When set to true, and debug mode enabled in the agent settings, the OPCUA
#   ## client's messages are included in telegraf logs. These messages are very
#   ## noisey, but essential for debugging issues.
#   # client_trace = false
#   #
#   ## Include additional Fields in each metric
#   ## Available options are:
#   ##   DataType -- OPC-UA Data Type (string)
#   # optional_fields = []
#   #
#   ## Node ID configuration
#   ## name              - field name to use in the output
#   ## namespace         - OPC UA namespace of the node (integer value 0 thru 3)
#   ## identifier_type   - OPC UA ID type (s=string, i=numeric, g=guid, b=opaque)
#   ## identifier        - OPC UA ID (tag as shown in opcua browser)
#   ## tags              - extra tags to be added to the output metric (optional); deprecated in 1.25.0; use default_tags
#   ## default_tags      - extra tags to be added to the output metric (optional)
#   ##
#   ## Use either the inline notation or the bracketed notation, not both.
#   #
#   ## Inline notation (default_tags not supported yet)
#   # nodes = [
#   #   {name="", namespace="", identifier_type="", identifier="", tags=[["tag1", "value1"], ["tag2", "value2"]},
#   #   {name="", namespace="", identifier_type="", identifier=""},
#   # ]
#   #
#   ## Bracketed notation
#   # [[inputs.opcua.nodes]]
#   #   name = "node1"
#   #   namespace = ""
#   #   identifier_type = ""
#   #   identifier = ""
#   #   default_tags = { tag1 = "value1", tag2 = "value2" }
#   #
#   # [[inputs.opcua.nodes]]
#   #   name = "node2"
#   #   namespace = ""
#   #   identifier_type = ""
#   #   identifier = ""
#   #
#   ## Node Group
#   ## Sets defaults so they aren't required in every node.
#   ## Default values can be set for:
#   ## * Metric name
#   ## * OPC UA namespace
#   ## * Identifier
#   ## * Default tags
#   ##
#   ## Multiple node groups are allowed
fieldexclude = ["Quality"]
tagexclude = ["id"]

[[inputs.opcua.group]]
#   ## Group Metric name. Overrides the top level name.  If unset, the
#   ## top level name is used.
name = "CV"
#   #
#   ## Group default namespace. If a node in the group doesn't set its
#   ## namespace, this is used.
namespace = "4"
#   #
#   ## Group default identifier type. If a node in the group doesn't set its
#   ## namespace, this is used.
identifier_type = "s"
#   #
#   ## Default tags that are applied to every node in this group. Can be
#   ## overwritten in a node by setting a different value for the tag name.
#   ##   example: default_tags = { tag1 = "value1" }
default_tags = { type = "CV", var_idx = "0", yTagName = "I11902" }

#   #
#   ## Node ID Configuration.  Array of nodes with the same settings as above.
#   ## Use either the inline notation or the bracketed notation, not both.
#   #
#   ## Inline notation (default_tags not supported yet)
nodes = [ { name = "yProcess", identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.CVs[0].yProcess" },
          { name = "yTagName", identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.CVs[0].yTagName" } ]
[[inputs.opcua.group]]
#   ## Group Metric name. Overrides the top level name.  If unset, the
#   ## top level name is used.
name = "CV"
#   #
#   ## Group default namespace. If a node in the group doesn't set its
#   ## namespace, this is used.
namespace = "4"
#   #
#   ## Group default identifier type. If a node in the group doesn't set its
#   ## namespace, this is used.
identifier_type = "s"
#   #
#   ## Default tags that are applied to every node in this group. Can be
#   ## overwritten in a node by setting a different value for the tag name.
#   ##   example: default_tags = { tag1 = "value1" }
default_tags = { type = "CV", var_idx = "1", yTagName = "I11018" }

#   #
#   ## Node ID Configuration.  Array of nodes with the same settings as above.
#   ## Use either the inline notation or the bracketed notation, not both.
#   #
#   ## Inline notation (default_tags not supported yet)
nodes = [ { name = "yProcess", identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.CVs[1].yProcess" },
          { name = "yTagName", identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.CVs[1].yTagName" },
          { name = "yLimitL", identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.CVs[1].yLimitL" } ]
[[inputs.opcua.group]]
name = "MV"
namespace = "4"
identifier_type = "s"

[inputs.opcua.group.default_tags]
type = "MV"
var_idx = "0"
uTagName = "FIC1063SP"
id = "FIC1063SP"
description = "DeEthanizer Feed Flow Control SP"
units = " "
instrument = " "
parameter = " "

[[inputs.opcua.group.nodes]]
name = "uMpc"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uMpc"
[[inputs.opcua.group.nodes]]
name = "uSimMpc"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uSimMpc"
[[inputs.opcua.group.nodes]]
name = "uHor"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uHor"
[[inputs.opcua.group.nodes]]
name = "uRef"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uRef"
[[inputs.opcua.group.nodes]]
name = "uLastMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uLastMove"
[[inputs.opcua.group.nodes]]
name = "uSimMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uSimMove"
[[inputs.opcua.group.nodes]]
name = "uSS"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uSS"
[[inputs.opcua.group.nodes]]
name = "uStatus"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uStatus"
[[inputs.opcua.group.nodes]]
name = "uWrite"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uWrite"
[[inputs.opcua.group.nodes]]
name = "uCon"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uCon"
[[inputs.opcua.group.nodes]]
name = "uProcess"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[0].uProcess"
[[inputs.opcua.group.nodes]]
name = "uLimitL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uLimitL"
[[inputs.opcua.group.nodes]]
name = "uLimitH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uLimitH"
[[inputs.opcua.group.nodes]]
name = "uCritical"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uCritical"
[[inputs.opcua.group.nodes]]
name = "uCost"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uCost"
[[inputs.opcua.group.nodes]]
name = "uPenalty"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uPenalty"
[[inputs.opcua.group.nodes]]
name = "uWeight"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uWeight"
[[inputs.opcua.group.nodes]]
name = "uObjective"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uObjective"
[[inputs.opcua.group.nodes]]
name = "uRestingValue"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uRestingValue"
[[inputs.opcua.group.nodes]]
name = "uRvSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uRvSwitch"
[[inputs.opcua.group.nodes]]
name = "uEngL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uEngL"
[[inputs.opcua.group.nodes]]
name = "uEngH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uEngH"
[[inputs.opcua.group.nodes]]
name = "uEngSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uEngSwitch"
[[inputs.opcua.group.nodes]]
name = "uSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uSwitch"
[[inputs.opcua.group.nodes]]
name = "uScaleL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uScaleL"
[[inputs.opcua.group.nodes]]
name = "uScaleH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uScaleH"
[[inputs.opcua.group.nodes]]
name = "uMaxMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uMaxMove"
[[inputs.opcua.group.nodes]]
name = "uAutoTest"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uAutoTest"
[[inputs.opcua.group.nodes]]
name = "uStepLenH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uStepLenH"
[[inputs.opcua.group.nodes]]
name = "uStepLenL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uStepLenL"
[[inputs.opcua.group.nodes]]
name = "uTestStep"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uTestStep"
[[inputs.opcua.group.nodes]]
name = "uTol"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uTol"
[[inputs.opcua.group.nodes]]
name = "uSubController"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[0].uSubController"
[[inputs.opcua.group]]
name = "MV"
namespace = "4"
identifier_type = "s"

[inputs.opcua.group.default_tags]
type = "MV"
var_idx = "1"
uTagName = "FIC1078SP"
id = "FIC1078SP"
description = "DeEthanizer Reflux Flow to Tower  SP"
units = " "
instrument = " "
parameter = " "

[[inputs.opcua.group.nodes]]
name = "uMpc"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uMpc"
[[inputs.opcua.group.nodes]]
name = "uSimMpc"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uSimMpc"
[[inputs.opcua.group.nodes]]
name = "uHor"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uHor"
[[inputs.opcua.group.nodes]]
name = "uRef"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uRef"
[[inputs.opcua.group.nodes]]
name = "uLastMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uLastMove"
[[inputs.opcua.group.nodes]]
name = "uSimMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uSimMove"
[[inputs.opcua.group.nodes]]
name = "uSS"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uSS"
[[inputs.opcua.group.nodes]]
name = "uStatus"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uStatus"
[[inputs.opcua.group.nodes]]
name = "uWrite"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uWrite"
[[inputs.opcua.group.nodes]]
name = "uCon"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uCon"
[[inputs.opcua.group.nodes]]
name = "uProcess"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[1].uProcess"
[[inputs.opcua.group.nodes]]
name = "uLimitL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uLimitL"
[[inputs.opcua.group.nodes]]
name = "uLimitH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uLimitH"
[[inputs.opcua.group.nodes]]
name = "uCritical"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uCritical"
[[inputs.opcua.group.nodes]]
name = "uCost"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uCost"
[[inputs.opcua.group.nodes]]
name = "uPenalty"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uPenalty"
[[inputs.opcua.group.nodes]]
name = "uWeight"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uWeight"
[[inputs.opcua.group.nodes]]
name = "uObjective"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uObjective"
[[inputs.opcua.group.nodes]]
name = "uRestingValue"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uRestingValue"
[[inputs.opcua.group.nodes]]
name = "uRvSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uRvSwitch"
[[inputs.opcua.group.nodes]]
name = "uEngL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uEngL"
[[inputs.opcua.group.nodes]]
name = "uEngH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uEngH"
[[inputs.opcua.group.nodes]]
name = "uEngSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uEngSwitch"
[[inputs.opcua.group.nodes]]
name = "uSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uSwitch"
[[inputs.opcua.group.nodes]]
name = "uScaleL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uScaleL"
[[inputs.opcua.group.nodes]]
name = "uScaleH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uScaleH"
[[inputs.opcua.group.nodes]]
name = "uMaxMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uMaxMove"
[[inputs.opcua.group.nodes]]
name = "uAutoTest"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uAutoTest"
[[inputs.opcua.group.nodes]]
name = "uStepLenH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uStepLenH"
[[inputs.opcua.group.nodes]]
name = "uStepLenL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uStepLenL"
[[inputs.opcua.group.nodes]]
name = "uTestStep"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uTestStep"
[[inputs.opcua.group.nodes]]
name = "uTol"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uTol"
[[inputs.opcua.group.nodes]]
name = "uSubController"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[1].uSubController"
[[inputs.opcua.group]]
name = "MV"
namespace = "4"
identifier_type = "s"

[inputs.opcua.group.default_tags]
type = "MV"
var_idx = "2"
uTagName = "TIC1080SP"
id = "TIC1080SP"
description = "DeEthanizer Reboiler H.O Flow SP"
units = " "
instrument = " "
parameter = " "

[[inputs.opcua.group.nodes]]
name = "uMpc"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uMpc"
[[inputs.opcua.group.nodes]]
name = "uSimMpc"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uSimMpc"
[[inputs.opcua.group.nodes]]
name = "uHor"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uHor"
[[inputs.opcua.group.nodes]]
name = "uRef"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uRef"
[[inputs.opcua.group.nodes]]
name = "uLastMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uLastMove"
[[inputs.opcua.group.nodes]]
name = "uSimMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uSimMove"
[[inputs.opcua.group.nodes]]
name = "uSS"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uSS"
[[inputs.opcua.group.nodes]]
name = "uStatus"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uStatus"
[[inputs.opcua.group.nodes]]
name = "uWrite"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uWrite"
[[inputs.opcua.group.nodes]]
name = "uCon"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uCon"
[[inputs.opcua.group.nodes]]
name = "uProcess"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.result.MVs[2].uProcess"
[[inputs.opcua.group.nodes]]
name = "uLimitL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uLimitL"
[[inputs.opcua.group.nodes]]
name = "uLimitH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uLimitH"
[[inputs.opcua.group.nodes]]
name = "uCritical"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uCritical"
[[inputs.opcua.group.nodes]]
name = "uCost"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uCost"
[[inputs.opcua.group.nodes]]
name = "uPenalty"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uPenalty"
[[inputs.opcua.group.nodes]]
name = "uWeight"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uWeight"
[[inputs.opcua.group.nodes]]
name = "uObjective"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uObjective"
[[inputs.opcua.group.nodes]]
name = "uRestingValue"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uRestingValue"
[[inputs.opcua.group.nodes]]
name = "uRvSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uRvSwitch"
[[inputs.opcua.group.nodes]]
name = "uEngL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uEngL"
[[inputs.opcua.group.nodes]]
name = "uEngH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uEngH"
[[inputs.opcua.group.nodes]]
name = "uEngSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uEngSwitch"
[[inputs.opcua.group.nodes]]
name = "uSwitch"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uSwitch"
[[inputs.opcua.group.nodes]]
name = "uScaleL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uScaleL"
[[inputs.opcua.group.nodes]]
name = "uScaleH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uScaleH"
[[inputs.opcua.group.nodes]]
name = "uMaxMove"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uMaxMove"
[[inputs.opcua.group.nodes]]
name = "uAutoTest"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uAutoTest"
[[inputs.opcua.group.nodes]]
name = "uStepLenH"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uStepLenH"
[[inputs.opcua.group.nodes]]
name = "uStepLenL"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uStepLenL"
[[inputs.opcua.group.nodes]]
name = "uTestStep"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uTestStep"
[[inputs.opcua.group.nodes]]
name = "uTol"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uTol"
[[inputs.opcua.group.nodes]]
name = "uSubController"
identifier = "|var|CODESYS Control Win V3 x64.fired_heater.server.currentTuning.MVs[2].uSubController"

Logs from Telegraf

C:\Program Files\InfluxData\telegraf\telegraf-1.30.0>telegraf --config-directory C:\Users\jojo\ConfigEditor\bin\Debug\output\FRAC1_11-08-23_delete_this\o2i\ --debug
2024-04-17T08:51:03Z I! Loading config: C:\Users\shabr\Documents\Backedup\WorkTopicwise\SpiroRepo\MatlabMPC\matlab-mpc\Scripting\MPCConfigEditor\bin\Debug\output\FRAC1_11-08-23_delete_this\o2i\telegraf.conf
2024-04-17T08:51:03Z I! Starting Telegraf 1.30.0 brought to you by InfluxData the makers of InfluxDB
2024-04-17T08:51:03Z I! Available plugins: 233 inputs, 9 aggregators, 31 processors, 24 parsers, 60 outputs, 5 secret-stores
2024-04-17T08:51:03Z I! Loaded inputs: opcua
2024-04-17T08:51:03Z I! Loaded aggregators: merge
2024-04-17T08:51:03Z I! Loaded processors:
2024-04-17T08:51:03Z I! Loaded secretstores:
2024-04-17T08:51:03Z I! Loaded outputs: file
2024-04-17T08:51:03Z I! Tags enabled: host=DARSHAN spiroApp=$APP_NAME
2024-04-17T08:51:03Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"DARSHAN", Flush Interval:10s
2024-04-17T08:51:03Z D! [agent] Initializing plugins
2024-04-17T08:51:03Z D! [inputs.opcua] Initialising OpcUAInputClient
2024-04-17T08:51:03Z D! [inputs.opcua] Initialising OpcUAClient
2024-04-17T08:51:03Z D! [inputs.opcua] Initialising node to metric mapping
2024-04-17T08:51:03Z D! [agent] Connecting outputs
2024-04-17T08:51:03Z D! [agent] Attempting connection to [outputs.file]
2024-04-17T08:51:03Z D! [agent] Successfully connected to outputs.file
2024-04-17T08:51:03Z D! [agent] Starting service inputs
2024-04-17T08:51:03Z D! [aggregators.merge] Updated aggregation range [2024-04-17 10:51:00 +0200 CEST, 2024-04-17 10:51:30 +0200 CEST]
2024-04-17T08:51:10Z D! [inputs.opcua] Connecting OPC UA Client to server
2024-04-17T08:51:10Z D! [inputs.opcua] Configuring OPC UA connection options
2024-04-17T08:51:10Z W! [inputs.opcua] Failed to load certificate: open /etc/telegraf/cert.pem: The system cannot find the path specified.
2024-04-17T08:51:10Z D! [inputs.opcua] security policy from configuration http://opcfoundation.org/UA/SecurityPolicy#None
2024-04-17T08:51:10Z D! [inputs.opcua] User cares about both the policy (http://opcfoundation.org/UA/SecurityPolicy#None) and security mode (MessageSecurityModeNone)
2024-04-17T08:51:10Z D! [inputs.opcua] Server has 10 endpoints
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://DARSHAN:4840, policy http://opcfoundation.org/UA/SecurityPolicy#None, mode MessageSecurityModeNone, level 0
2024-04-17T08:51:10Z D! [inputs.opcua] Security policy and mode found. Using server endpoint opc.tcp://DARSHAN:4840 for security. Policy http://opcfoundation.org/UA/SecurityPolicy#None
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://DARSHAN:4840, policy http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256, mode MessageSecurityModeSignAndEncrypt, level 32
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://DARSHAN:4840, policy http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256, mode MessageSecurityModeSign, level 31
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://DARSHAN:4840, policy http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss, mode MessageSecurityModeSignAndEncrypt, level 2
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://DARSHAN:4840, policy http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss, mode MessageSecurityModeSign, level 1
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://localhost:4840, policy http://opcfoundation.org/UA/SecurityPolicy#None, mode MessageSecurityModeNone, level 0
2024-04-17T08:51:10Z D! [inputs.opcua] Security policy and mode found. Using server endpoint opc.tcp://localhost:4840 for security. Policy http://opcfoundation.org/UA/SecurityPolicy#None
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://localhost:4840, policy http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256, mode MessageSecurityModeSignAndEncrypt, level 32
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://localhost:4840, policy http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256, mode MessageSecurityModeSign, level 31
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://localhost:4840, policy http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss, mode MessageSecurityModeSignAndEncrypt, level 2
2024-04-17T08:51:10Z D! [inputs.opcua] Evaluating endpoint opc.tcp://localhost:4840, policy http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss, mode MessageSecurityModeSign, level 1
2024-04-17T08:51:10Z D! [inputs.opcua] Connected to OPC UA Server
2024-04-17T08:51:10Z E! [inputs.opcua] Error in plugin: registering nodes failed: The request could not be processed because it specified too many operations. StatusBadTooManyOperations (0x80100000)
2024-04-17T08:51:13Z D! [outputs.file] Buffer fullness: 0 / 10000 metrics
2024-04-17T08:51:20Z E! FATAL: [inputs.opcua] panicked: runtime error: invalid memory address or nil pointer dereference, Stack:
goroutine 42 [running]:
github.com/influxdata/telegraf/agent.panicRecover(0xc001b8e600)
        /go/src/github.com/influxdata/telegraf/agent/agent.go:1199 +0x70
panic({0x703d800?, 0xd994330?})
        /usr/local/go/src/runtime/panic.go:770 +0x132
github.com/gopcua/opcua.(*Client).Read(0xc00227c380, {0x8bb8be8, 0xe0de900}, 0x0)
        /go/pkg/mod/github.com/gopcua/opcua@v0.5.3/client.go:1042 +0x65
github.com/influxdata/telegraf/plugins/inputs/opcua.(*ReadClient).read(0xc002426960)
        /go/src/github.com/influxdata/telegraf/plugins/inputs/opcua/read_client.go:139 +0x35
github.com/influxdata/telegraf/plugins/inputs/opcua.(*ReadClient).CurrentValues(0xc002426960)
        /go/src/github.com/influxdata/telegraf/plugins/inputs/opcua/read_client.go:115 +0xce
github.com/influxdata/telegraf/plugins/inputs/opcua.(*OpcUA).Gather(0x0?, {0x8bec520, 0xc0018ef540})
        /go/src/github.com/influxdata/telegraf/plugins/inputs/opcua/opcua.go:38 +0x25
github.com/influxdata/telegraf/models.(*RunningInput).Gather(0xc001b8e600, {0x8bec520, 0xc0018ef540})
        /go/src/github.com/influxdata/telegraf/models/running_input.go:149 +0x54
github.com/influxdata/telegraf/agent.(*Agent).gatherOnce.func1()
        /go/src/github.com/influxdata/telegraf/agent/agent.go:583 +0x5e
created by github.com/influxdata/telegraf/agent.(*Agent).gatherOnce in goroutine 60
        /go/src/github.com/influxdata/telegraf/agent/agent.go:581 +0xf7

goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc0024269b0?)
        /usr/local/go/src/runtime/sema.go:62 +0x25
sync.(*WaitGroup).Wait(0x75b7de0?)
        /usr/local/go/src/sync/waitgroup.go:116 +0x48
github.com/influxdata/telegraf/agent.(*Agent).Run(0xc001fee720, {0x8bb8de0, 0xc0024268c0})
        /go/src/github.com/influxdata/telegraf/agent/agent.go:197 +0xa2c
main.(*Telegraf).runAgent(0xc00257a280, {0x8bb8de0, 0xc0024268c0}, 0x37e19f8?, 0xe0?)
        /go/src/github.com/influxdata/telegraf/cmd/telegraf/telegraf.go:386 +0x173c
main.(*Telegraf).reloadLoop(0xc00257a280)
        /go/src/github.com/influxdata/telegraf/cmd/telegraf/telegraf.go:173 +0x24c
main.(*Telegraf).Run(0xc00257a280)
        /go/src/github.c
2024-04-17T08:51:20Z E! PLEASE REPORT THIS PANIC ON GITHUB with stack trace, configuration, and OS information: https://github.com/influxdata/telegraf/issues/new/choose

System info

Windows 10 , telegraf 1.30.0

Docker

No response

Steps to reproduce

  1. Just running telegraf with the given config file will give the error.
  2. You will need to point it it an existing opc server, it should not matter if the given tags donot exist on that server. But there should be a server to connect to for it to hit this error.
  3. ...

Expected behavior

Just using one or 2 groups of opc ua nodes, it works fine. But if we use the config file as it is with all the node groups then it crashes. It seems there is some limit on the number of nodes that you can connect to.

Actual behavior

Using the config file as it is crashes telegraf

Additional info

No response

vova292 commented 5 months ago

In the server that i am using there is a restriction on the number of tags that can be read in one call, so that explains the registering nodes error. But the i think it should not crash.

srebhan commented 5 months ago

@vova292 please test the binary in PR #15178, available after CI finished the tests, and let me know if this prevents the panic!