Skip to content

Commit

Permalink
Merge branch 'main' into release/2.9.4_preview
Browse files Browse the repository at this point in the history
  • Loading branch information
marcschier committed Jan 2, 2024
2 parents 6a56240 + cf5d93e commit 3ac7da7
Show file tree
Hide file tree
Showing 67 changed files with 1,024 additions and 356 deletions.
19 changes: 19 additions & 0 deletions deploy/k3s/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
services:
nginx-proxy:
image: nginxproxy/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
autok3s:
image: cnrancher/autok3s:v0.9.1
init: true
ports:
- 8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- $HOME/.autok3s/:$HOME/.autok3s/
environment:
- AUTOK3S_CONFIG=$HOME/.autok3s/
- VIRTUAL_HOST=autok3s.vcap.me
22 changes: 21 additions & 1 deletion docs/opc-publisher/commandline.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ When both environment variable and CLI argument are provided, the command line o
██║ ██║██╔═══╝ ██║ ██╔═══╝ ██║ ██║██╔══██╗██║ ██║╚════██║██╔══██║██╔══╝ ██╔══██╗
╚██████╔╝██║ ╚██████╗ ██║ ╚██████╔╝██████╔╝███████╗██║███████║██║ ██║███████╗██║ ██║
╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
2.9.4
2.9.4 (.NET 8.0.0/win-x64/OPC Stack 1.4.372.106)
General
-------
Expand Down Expand Up @@ -250,6 +251,7 @@ Messaging configuration
`Dapr`
`Http`
`FileSystem`
`Null`
Default: `IoTHub` or the first configured
transport of the allowed value list.
Expand Down Expand Up @@ -522,6 +524,7 @@ Subscription settings
`PeriodicLKV`
`PeriodicLKG`
`WatchdogLKVWithUpdatedTimestamps`
`WatchdogLKVDiagnosticsOnly`
Default: `WatchdogLKV` (Sending LKV in a
watchdog fashion).
--hb, --heartbeatinterval, --DefaultHeartbeatInterval=VALUE
Expand Down Expand Up @@ -611,6 +614,14 @@ OPC UA Client configuration
The port to use when accepting inbound reverse
connect requests from servers.
Default: `4840`.
--mpr, --minpublishrequests, --MinPublishRequests=VALUE
Minimum number of publish requests to queue once
subscriptions are created in the session.
Default: `3`.
--ppr, --percentpublishrequests, --PublishRequestsPerSubscriptionPercent=VALUE
Percentage ratio of publish requests per
subscriptions in the session in percent.
Default: `100`% (1 request per subscription).
--smi, --subscriptionmanagementinterval, --SubscriptionManagementInterval=VALUE
The interval in seconds after which the publisher
re-applies the desired state of the subscription
Expand Down Expand Up @@ -845,6 +856,15 @@ Diagnostic options
metrics directly on the standard path.
Default: `disabled` if Otlp collector is
configured, otherwise `enabled`.
--cap, --capturedevice, --CaptureDevice=VALUE
The capture device to use to capture network
traffic.
Network capture is not supported on this system.
--cpf, --capturefile, --CaptureFileName=VALUE
The file name to capture traffic to.
A device must be selected using `--cd` if
capture capability is supported on this system.
Default: `opcua.pcap`.
```

Currently supported combinations of `--mm` snd `--me` can be found [here](./messageformats.md).
55 changes: 32 additions & 23 deletions docs/opc-publisher/observability.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,32 +40,41 @@ The following table describes the instruments that are collected per writer grou

| Log line item name | Diagnostic info property name | Description |
|-----------------------------------------|-------------------------------------|-------------|
| # OPC Publisher Version (Runtime) | n/a | The full version and runtime used by the publisher |
| # Time | timestamp | The timestamp of the diagnostics information |
| # Ingestion duration | ingestionDuration | How long the data flow inside the publisher has been executing after it was created (either from file or API) |
| # Ingress DataChanges (from OPC) | ingressDataChanges | The number of OPC UA subscription notification messages with data value changes that have been received by publisher inside this data flow |
| # Ingress ValueChanges (from OPC) | ingressValueChanges | The number of value changes inside the OPC UA subscription notifications processed by the data flow. |
| # of which are Heartbeats | ingressHeartbeats | The number of heartbeats inside the published value changes. |
| # of which are Cyclic reads | ingressCyclicReads | The number of cyclic reads of the total number of value changes. |
| # Ingress EventData (from OPC) | ingressEventNotifications | The number of OPC UA subscription notification messages with events that have been received by publisher so far inside this data flow |
| # Ingress Events (from OPC) | ingressEvents | The number of events that were part of these OPC UA subscription notifications that were so far processed by the data flow. |
| # Ingress BatchBlock buffer size | ingressBatchBlockBufferSize | The number of messages awaiting encoding and sending tot he telemetry message destination inside the data flow pipeline. |
| # Encoding Block input / output size | encodingBlockInputSize | The number of messages awaiting encoding into the output format. |
| # Encoding Block input / output size | encodingBlockOutputSize | The number of messages already encoded and waiting to be sent to the telemetry message destination. |
| # Encoder Notifications processed | encoderNotificationsProcessed | The total number of subscription notifications processed by the encoder stage of the data flow pipeline since the pipeline started. |
| # Encoder Notifications dropped | encoderNotificationsDropped | The total number of subscription notifications that were dropped because they could not be encoded, e.g., due to their size being to large to fit into the message. |
| # Encoder IoT Messages processed | encoderIoTMessagesProcessed | The total number of encoded messages produced by the encoder since the start of the pipeline. |
| # Encoder avg Notifications/Message | encoderAvgNotificationsMessage | The average number of subscription notifications that were pressed into a message. |
| # Encoder avg IoT Message body size | encoderAvgIoTMessageBodySize | The average size of the message body produced over the course of the pipeline run. |
| # Encoder avg IoT Chunk (4 Kb) usage | encoderAvgIoTChunkUsage | The average use of IoT Hub chunks (4k). |
| # Estimated IoT Chunks (4 KB) per day | estimatedIoTChunksPerDay | An estimate of how many chunks are used per day by publisher which enables correct sizing of the IoT Hub to avoid data loss due to throttling. |
| # Outgress Batch Block buffer size | outgressBatchBlockBufferSize | The number of messages that are waiting to be sent to all configured telemetry message destination via the message sink. |
| # Outgress input bufffer count | outgressInputBufferCount | The aggregated number of messages waiting in the input buffer of the configured telemetry message destination sinks. |
| # Outgress input buffer dropped | outgressInputBufferDropped | The aggregated number of messages that were dropped in any of the configured telemetry message destination sinks. |
| # Outgress IoT message count | outgressIoTMessageCount | The aggregated number of messages that were sent by all configured telemetry message destination sinks. |
| | sentMessagesPerSec | Publisher throughput meaning the number of messages sent to the telemetry message destination (e.g., IoT Hub / Edge Hub) per second |
| # Connection retries | connectionRetries | How many times connections to the OPC UA server broke and needed to be reconnected as it pertains to the data flow. |
| # Opc endpoint connected? | opcEndpointConnected | Whether the pipeline is currently connected to the OPC UA server endpoint or in a reconnect attempt. |
| # Connection retries | connectionRetries | How many times connections to the OPC UA server broke and needed to be reconnected as it pertains to the data flow. |
| # Monitored Opc nodes succeeded count | monitoredOpcNodesSucceededCount | How many of the configured monitored items have been established successfully inside the data flow's OPC UA subscription and should be producing data. |
| # Monitored Opc nodes failed count | monitoredOpcNodesFailedCount | How many of the configured monitored items inside the data flow failed to be created in the subscription (the logs will provide more information). |
| # Subscriptions count | subscriptionsCount (*) | How many subscriptions were created that contain above monitored items. |
| # Queued/Minimum request count | publishRequestsRatio (*) | The ratio of currently queued requests to the server as a percentage of the subscription count measured here vs. the overall number of subscriptions in the underlying session (e.g., if the session is shared). |
| | minPublishRequestsRatio (*) | The ratio of minimum number of publish requests that should always be queued to the server. |
| # Good/Bad Publish request count | goodPublishRequestsRatio (*) | The ratio of currently queued publish requests that are in progress in the server and awaiting a response. |
| | badPublishRequestsRatio (*) | The ratio of defunct publish requests which have not been resulting in a publish response from the server. |
| # Ingress value changes | ingressValueChanges | The number of value changes inside the OPC UA subscription notifications processed by the data flow. |
| # Ingress Events | ingressEvents | The number of events that were part of these OPC UA subscription notifications that were so far processed by the data flow. |
| # Received Data Change Notifications | ingressDataChanges | The number of OPC UA subscription notification messages with data value changes that have been received by publisher inside this data flow |
| # Received Event Notifications | ingressEventNotifications | The number of OPC UA subscription notification messages with events that have been received by publisher so far inside this data flow |
| # Received Keep Alive Notifications | ingressEventNotifications | The number of received OPC UA subscription notification messages that were keep alive messages |
| # Generated Cyclic read Notifications | ingressCyclicReads | The number of cyclic read notifications generated from sampling nodes on the client side. Each notification contains the changed value. |
| # Generated Heartbeats Notifications | ingressHeartbeats | The number of notifications that contain heartbeats. Each notification contains the heartbeat value. |
| # Notification batch buffer size | ingressBatchBlockBufferSize | The number of messages awaiting encoding and sending tot he telemetry message destination inside the data flow pipeline. |
| # Encoder input / output size | encodingBlockInputSize | The number of messages awaiting encoding into the output format. |
| | encodingBlockOutputSize | The number of messages already encoded and waiting to be sent to the telemetry message destination. |
| # Encoder Notif. processed/dropped | encoderNotificationsProcessed | The total number of subscription notifications processed by the encoder stage of the data flow pipeline since the pipeline started. |
| | encoderNotificationsDropped | The total number of subscription notifications that were dropped because they could not be encoded, e.g., due to their size being to large to fit into the message. |
| # Encoder Network Messages produced | encoderIoTMessagesProcessed | The total number of encoded messages produced by the encoder since the start of the pipeline. |
| # Encoder avg Notifications/Message | encoderAvgNotificationsMessage | The average number of subscription notifications that were pressed into a message. |
| # Encoder avg Message body size | encoderAvgIoTMessageBodySize | The average size of the message body produced over the course of the pipeline run. |
| # Encoder avg Chunk (4 Kb) usage | encoderAvgIoTChunkUsage | The average use of IoT Hub chunks (4k). |
| # Estimated Chunks (4 KB) per day | estimatedIoTChunksPerDay | An estimate of how many chunks are used per day by publisher which enables correct sizing of the IoT Hub to avoid data loss due to throttling. |
| # Egress Messages queued/dropped | outgressInputBufferCount | The aggregated number of messages waiting in the input buffer of the configured telemetry message destination sinks. |
| | outgressInputBufferDropped | The aggregated number of messages that were dropped in any of the configured telemetry message destination sinks. |
| # Egress Messages successfully sent | outgressIoTMessageCount | The aggregated number of messages that were sent by all configured telemetry message destination sinks. |
| | sentMessagesPerSec | Publisher throughput meaning the number of messages sent to the telemetry message destination (e.g., IoT Hub / Edge Hub) per second |

(*) Not exposed through the API

## Available metrics

Expand Down Expand Up @@ -308,7 +317,7 @@ In this tutorial two pre-configured docker images (for Prometheus and Grafana) m
- <http://{edge> host IP or name}:3000
- When prompted for a user name and password enter the values entered in the environment variables
- **Note**: When using a VM, make sure to add an inbound rule for port 3000

- Prometheus has already been configured as a data source and can now be directly accessed. Prometheus is scraping EdgeHub and OPC Publisher metrics.

- Select the dashboards option to view the available dashboards and select “Publisher” to view the pre-configured dashboard as shown below.
Expand Down
2 changes: 2 additions & 0 deletions docs/opc-publisher/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,8 @@ The behavior of heartbeat can be fine tuned using the `--hbb, --heartbeatbehavio
Option of the node entry. The behavior can be set to watch dog behavior with Last Known Value (`WatchdogLKV`, which is the default) or Last Known Good (`WatchdogLKG`) semantics. A last known good value has either a status code of `Good` or a valid value (!= Null) and not a bad status code (which covers other Good or Uncertain status codes). Bad values are not causing heartbeat messages in LKG mode. A continuous periodic sending of the last known value (`PeriodicLKV`) or last good value (`PeriodicLKG`) can also be selected.
The hearbeat behavior `WatchdogLKVDiagnosticsOnly` is special, it allows you to log heartbeat in the diagnostics output without sending heartbeats as part of the outgoing messages.
##### Timestamps
The OPC UA data value contains a source and server timestamp. These are reported by the server and are based on the OPC UA server clock. The server is free to send whatever timestamp it wants, including none even though the OPC Publisher is setting up all monitored items to report both timestamps.
Expand Down
13 changes: 11 additions & 2 deletions docs/release-announcement.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Table Of Contents <!-- omit in toc -->

- [Azure Industrial IoT OPC Publisher 2.9.4](#azure-industrial-iot-opc-publisher-294)
- [Breaking changes in 2.9.4](#breaking-changes-in-294)
- [Changes in 2.9.4](#changes-in-294)
- [Azure Industrial IoT OPC Publisher 2.9.3](#azure-industrial-iot-opc-publisher-293)
- [Breaking changes in 2.9.3](#breaking-changes-in-293)
Expand Down Expand Up @@ -42,7 +43,14 @@

## Azure Industrial IoT OPC Publisher 2.9.4

We are pleased to announce the release of version 2.9.4 of OPC Publisher and the companion web api. This release comes with several bug and security fixes and is the latest supported release.
We are pleased to announce the release of version 2.9.4 of OPC Publisher and the companion web api service. This release comes with several bug and security fixes and is the latest supported release.

### Breaking changes in 2.9.4

> IMPORTANT. Please read when updating from previous versions of OPC Publisher
- Arm64 and AMD64 container images are published now with Mariner (Azure) Linux (distroless) as base images instead of Alpine.
- Arm32 (v7) images of OPC Publisher continue to use Alpine as base image. Support transitions to the same model as for "preview" features. Security updates are released as a result of updates to the AMD64 and ARM64 version of OPC Publisher.

### Changes in 2.9.4

Expand All @@ -64,7 +72,8 @@ We are pleased to announce the release of version 2.9.3 of OPC Publisher and the

> IMPORTANT. Please read when updating from previous versions of OPC Publisher
- All container images published now use Mariner Linux (distroless) base images instead of Alpine.
- Arm64 and AMD64 container images are published now with (Azure) Mariner Linux (distroless) as base images instead of Alpine.
- Arm32 (v7) images of OPC Publisher continue to use Alpine as base image. Support transitions to the same model as for "preview" features. Security updates are released as a result of updates to the AMD64 and ARM64 version of OPC Publisher.
- Metadata collection has shown to be very taxing on OPC UA servers. When 2.9 was dropped in to replace 2.8 in production, memory consumption was too large and connections would drop. OPC Publisher now defaults to `--dm=true` in 2.9.3 to disable metadata messages to be compatible with 2.8 when `--strict` / `-c` is not specified. If you need meta data messages but do not use strict mode (not recommended) you must explicitly enable it using `--dm=false`.

### New features in 2.9.3
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Furly.Extensions.Abstractions" Version="1.0.15" />
<PackageReference Include="Furly.Extensions.Abstractions" Version="1.0.18" />
</ItemGroup>
</Project>
Loading

0 comments on commit 3ac7da7

Please sign in to comment.