Configure Alerts in Time Series Analytics Microservice#
This section provides instructions for setting up alerts in Time Series Analytics Microservice.
Docker Compose Deployment#
Publish MQTT Alerts#
Configure MQTT Alerts#
By default, the following MQTT alerts is configured in edge-ai-suites/manufacturing-ai-suite/industrial-edge-insights-time-series/apps/wind-turbine-anomaly-detection/time-series-analytics-config/config.json file.
"alerts": {
"mqtt": {
"mqtt_broker_host": "ia-mqtt-broker",
"mqtt_broker_port": 1883,
"name": "my_mqtt_broker"
}
}
Configure MQTT Alert in TICK Script#
The following snippet shows how to add the MQTT if not
already added. By default, the edge-ai-suites/manufacturing-ai-suite/industrial-edge-insights-time-series/apps/wind-turbine-anomaly-detection/time-series-analytics-config/tick_scripts/windturbine_anomaly_detector.tick TICK Script has the following configuration done by default.
@windturbine_anomaly_detector()
|alert()
.crit(lambda: "anomaly_status" > 0)
.message('Anomaly detected: Wind Speed: {{ index .Fields "wind_speed" }}, Grid Active Power: {{ index .Fields "grid_active_power" }}, Anomaly Status: {{ index .Fields "anomaly_status" }}')
.mqtt('my_mqtt_broker')
.topic('alerts/wind_turbine')
.qos(1)
Similarly, the Weld Anomaly Detection sample app is preconfigured to publish MQTT alerts. You can find its default MQTT alert configuration in the edge-ai-suites/manufacturing-ai-suite/industrial-edge-insights-time-series/apps/weld-anomaly-detection/time-series-analytics-config/tick_scripts/weld_anomaly_detector.tick file.
Note: Setting QoS to
1ensures messages are delivered at least once. Alerts are preserved and resent if the MQTT broker reconnects after downtime.
Subscribing to MQTT Alerts#
Follow the steps to subscribe to the published MQTT alerts.
To subscribe to all MQTT topics, execute the following command:
docker exec -ti ia-mqtt-broker mosquitto_sub -h localhost -v -t '#' -p 1883
To subscribe to a specific MQTT topic, such as
alerts/wind_turbine, use the following command. Note that the topic information can be found in the TICKScript:
# Wind Turbine Anomaly Detection
docker exec -ti ia-mqtt-broker mosquitto_sub -h localhost -v -t alerts/wind_turbine -p 1883
# Weld Anomaly Detection
docker exec -ti ia-mqtt-broker mosquitto_sub -h localhost -v -t alerts/weld_defects -p 1883
Publishing OPC-UA Alerts#
Note: This section is applicable to Wind Turbine Anomaly Dection sample app only.
Prerequisite#
Ensure that make up_opcua_ingestion has been executed by following the steps
in the getting started guide for the docker compose deployment
To enable OPC-UA alerts in Time Series Analytics Microservice, use the following steps.
Note: OPC UA alerts are not supported for Weld Anomaly Detection sample app.
Configuration#
1. Configure OPC-UA Alert in TICK Script#
The following details shows the snippet on how to add the OPC-UA alert if not
already added, replace this in place of MQTT alert section at
edge-ai-suites/manufacturing-ai-suite/industrial-edge-insights-time-series/apps/wind-turbine-anomaly-detection/time-series-analytics-config/tick_scripts/windturbine_anomaly_detector.tick.
data0
|alert()
.crit(lambda: "anomaly_status" > 0)
.message('Anomaly detected: Wind Speed: {{ index .Fields "wind_speed" }}, Grid Active Power: {{ index .Fields "grid_active_power" }}, Anomaly Status: {{ index .Fields "anomaly_status" }}')
.noRecoveries()
.post('http://localhost:5000/opcua_alerts')
.timeout(30s)
Note:
The
noRecoveries()method suppresses recovery alerts, ensuring only critical alerts are sent.If doing a Helm-based deployment on a Kubernetes cluster, after making changes to the tick script, copy the UDF deployment package using step.
2. Configuring OPC-UA Alert in config.json#
Make the following REST API call to the Time Series Analytics microservice. Note that the mqtt alerts key is replaced with the opcua key and its specific details:
curl -k -X 'POST' \
'https://<HOST_IP>:3000/ts-api/config' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"udfs": {
"name": "windturbine_anomaly_detector",
"models": "windturbine_anomaly_detector.pkl",
"device": "cpu"
},
"alerts": {
"opcua": {
"opcua_server": "opc.tcp://ia-opcua-server:4840/freeopcua/server/",
"namespace": 1,
"node_id": 2004
}
}
}'
Subscribe to OPC UA Alerts using Sample OPCUA Subscriber#
Install python packages
asyncioandasyncuato run the sample opc ua subscriberpip install asyncio asyncua
Run the following sample OPC UA subscriber by updating the
<IP-Address of OPCUA Server>to read the alerts published to server on tagns=1;i=2004from Time Series Analytics Microservice.import asyncio from asyncua import Client, Node class SubscriptionHandler: def datachange_notification(self, node: Node, val, data): print(val) async def main(): client = Client(url="opc.tcp://<IP-Address of OPCUA Server>:30003/freeopcua/server/") async with client: handler = SubscriptionHandler() subscription = await client.create_subscription(50, handler) myvarnode = client.get_node("ns=1;i=2004") await subscription.subscribe_data_change(myvarnode) await asyncio.sleep(100) await subscription.delete() await asyncio.sleep(1) if __name__ == "__main__": asyncio.run(main())
Helm Deployment#
Publish MQTT Alerts
For detailed instructions on configuring and publishing MQTT alerts, refer to the Publish MQTT Alerts section.
Subscribe to MQTT Alerts
Follow the steps to subscribe to the published MQTT alerts.
To subscribe to MQTT topics in a Helm deployment, execute the following command:
Identify the MQTT broker pod name by running:
kubectl get pods -n ts-sample-app | grep mqtt-broker
Use the pod name from the output of the above command to subscribe to all topics:
kubectl exec -it -n ts-sample-app <mqtt_broker_pod_name> -- mosquitto_sub -h localhost -v -t '#' -p 1883
To subscribe to the
alerts/wind_turbinetopic, use the following command:
kubectl exec -it -n ts-sample-app <mqtt_broker_pod_name> -- mosquitto_sub -h localhost -v -t alerts/wind_turbine -p 1883
Publish OPC-UA Alerts
Note: Ensure the Wind Turbine Anomaly Detection sample app is deployed using the installation step for OPC-UA ingestion.
To enable OPC-UA alerts in Time Series Analytics Microservice, please follow below steps.
Configuration
Configuring OPC-UA Alert in TICK Script
Configure the tick script by following these instructions.
Copying the TICK script
Copy the TICK script using the following command:
cd edge-ai-suites/manufacturing-ai-suite/industrial-edge-insights-time-series/apps/wind-turbine-anomaly-detection # path relative to git clone folder
cd time-series-analytics-config
export SAMPLE_APP="wind-turbine-anomaly-detection"
mkdir -p $SAMPLE_APP
cp -r models tick_scripts udfs $SAMPLE_APP/.
POD_NAME=$(kubectl get pods -n ts-sample-app -o jsonpath='{.items[*].metadata.name}' | tr ' ' '\n' | grep deployment-time-series-analytics-microservice | head -n 1)
kubectl cp $SAMPLE_APP $POD_NAME:/tmp/ -n ts-sample-app
Configuring OPC-UA Alert in config.json
Make the following REST API call to the Time Series Analytics microservice. Note that the mqtt alerts key is replaced with the opcua key and its specific details:
curl -k -X 'POST' \
'https://<HOST_IP>:30001/ts-api/config' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"udfs": {
"name": "windturbine_anomaly_detector",
"models": "windturbine_anomaly_detector.pkl",
"device": "cpu"
},
"alerts": {
"opcua": {
"opcua_server": "opc.tcp://ia-opcua-server:4840/freeopcua/server/",
"namespace": 1,
"node_id": 2004
}
}
}'
Subscribe to OPC UA Alerts using Sample OPCUA Subscriber
To subscribe to OPC-UA alerts, follow these steps.