Get Started#

  • Time to Complete: 30 minutes

  • Programming Language: Python 3

Configure Docker#

To configure Docker:

  1. Run Docker as Non-Root: Follow the steps in Manage Docker as a non-root user.

  2. Configure Proxy (if required):

    • Set up proxy settings for Docker client and containers as described in Docker Proxy Configuration.

    • Example ~/.docker/config.json:

      {
        "proxies": {
          "default": {
            "httpProxy": "http://<proxy_server>:<proxy_port>",
            "httpsProxy": "http://<proxy_server>:<proxy_port>",
            "noProxy": "127.0.0.1,localhost"
          }
        }
      }
      
    • Configure the Docker daemon proxy as per Systemd Unit File.

  3. Enable Log Rotation:

    • Add the following configuration to /etc/docker/daemon.json:

      {
        "log-driver": "json-file",
        "log-opts": {
          "max-size": "10m",
          "max-file": "5"
        }
      }
      
    • Reload and restart Docker:

      sudo systemctl daemon-reload
      sudo systemctl restart docker
      

Clone source code#

Go to the target directory of your choice and clone the suite. If you want to clone a specific release branch, replace main with the desired tag. To learn more on partial cloning, check the Repository Cloning guide.

git clone --filter=blob:none --sparse --branch release-2026.1.0 https://github.com/open-edge-platform/edge-ai-suites.git
cd edge-ai-suites
git sparse-checkout set manufacturing-ai-suite
cd manufacturing-ai-suite/industrial-edge-insights-time-series

Deploy with Docker Compose#

  1. Update the following fields in .env:

    • INFLUXDB_USERNAME

    • INFLUXDB_PASSWORD

    • VISUALIZER_GRAFANA_USER

    • VISUALIZER_GRAFANA_PASSWORD

  2. Deploy the sample app, use only one of the following options:

NOTE:

  • The below make up_opcua_ingestion or make up_mqtt_ingestion fails if the above required fields are not populated as per the rules called out in .env file.

  • The sample app is deployed by pulling the pre-built container images of the sample app from the docker hub OR from the internal container registry (login to the docker registry from cli and configure DOCKER_REGISTRY env variable in .env file at edge-ai-suites/manufacturing-ai-suite/industrial-edge-insights-time-series)

  • The CONTINUOUS_SIMULATOR_INGESTION variable in the .env file (for Docker Compose) and in helm/values.yaml (for Helm deployments) is set to true by default, enabling continuous looping of simulator data. To ingest the simulator data only once (without looping), set this variable to false.

  • If CONTINUOUS_SIMULATOR_INGESTION is set to false, you may see the [inputs.opcua] status not OK for node message in the telegraf logs for OPC-UA ingestion after a single data ingestion loop. This message can be ignored.

  • make up_opcua_ingestion is supported only for Wind Turbine Anomaly Detection sample app

  • Using OPC-UA ingestion:

    make up_opcua_ingestion app="wind-turbine-anomaly-detection"
    
  • Using MQTT ingestion:

    make up_mqtt_ingestion app="wind-turbine-anomaly-detection"
    
make up_mqtt_ingestion app="weld-defect-detection"

Running User Defined Function(UDF) inference on GPU#

By default, UDF for both the sample apps is configured to run on CPU.

To trigger the UDF inference on GPU in Time Series Analytics Microservice, run the following command:

  • For Wind Turbine Anomaly Detection:

cd edge-ai-suites/manufacturing-ai-suite/industrial-edge-insights-time-series/apps/wind-turbine-anomaly-detection/time-series-analytics-config
curl -k -X 'POST' \
 'https://localhost:3000/ts-api/config' \
 -H 'accept: application/json' \
 -H 'Content-Type: application/json' \
 -d "$(sed 's/"device": "CPU"/"device": "GPU"/' config.json)"
  • For Weld Defect Detection:

cd edge-ai-suites/manufacturing-ai-suite/industrial-edge-insights-time-series/apps/weld-defect-detection/time-series-analytics-config
curl -k -X 'POST' \
 'https://localhost:3000/ts-api/config' \
 -H 'accept: application/json' \
 -H 'Content-Type: application/json' \
 -d "$(sed 's/"device": "CPU"/"device": "GPU"/' config.json)"

Verify the Output Results#

  1. Get into the InfluxDB* container:

    Note: Use kubectl exec -it <influxdb-pod-name> -n <namespace> -- /bin/bash for the Helm deployment where for replace with namespace name where the application was deployed and for replace with InfluxDB pod name.

     docker exec -it ia-influxdb bash
    
  2. Run the following commands to see the data in InfluxDB*:

    NOTE: Please ignore the error message There was an error writing history file: open /.influx_history: read-only file system happening in the InfluxDB shell. This does not affect any functionality while working with the InfluxDB commands

    # For below command, the INFLUXDB_USERNAME and INFLUXDB_PASSWORD needs to be fetched from `.env` file
    # for docker compose deployment and `values.yml` for helm deployment
    influx -username <username> -password <passwd>
    use datain # database access
    show measurements
    # Run below query to check and output measurement processed
    # by Time Series Analytics microservice
    select * from "wind-turbine-anomaly-data"
    
  3. To check the output in Grafana:

    • Use link https://<host_ip>:3000/ to launch Grafana from browser (preferably Chrome browser)

      Note:: Use link https://<host_ip>:30001 to launch Grafana from browser (preferably Chrome browser) for the Helm deployment

    • Login to the Grafana with values set for VISUALIZER_GRAFANA_USER and VISUALIZER_GRAFANA_PASSWORD in .env file.

      Grafana login

    • After login, click on Dashboard Menu view

    • Select the Wind Turbine Dashboard. Windturbine dashboard

    • You will see the below output.

      Anomaly prediction in grid active power

  1. Get into the InfluxDB* container:

    Note: Use kubectl exec -it <influxdb-pod-name> -n <namespace> -- /bin/bash for the Helm deployment where for replace with namespace name where the application was deployed and for replace with InfluxDB pod name.

     docker exec -it ia-influxdb bash
    
  2. Run following commands to see the data in InfluxDB*:

    NOTE: Please ignore the error message There was an error writing history file: open /.influx_history: read-only file system happening in the InfluxDB shell. This does not affect any functionality while working with the InfluxDB commands

    # For below command, the INFLUXDB_USERNAME and INFLUXDB_PASSWORD needs to be fetched from `.env` file
    # for docker compose deployment and `values.yml` for helm deployment
    influx -username <username> -password <passwd>
    use datain # database access
    show measurements
    # Run below query to check and output measurement processed
    # by Time Series Analytics microservice
    select * from "weld-sensor-anomaly-data"
    
  3. To check the output in Grafana:

    • Use link https://<host_ip>:3000/ to launch Grafana from browser (preferably Chrome browser)

      Note: Use link https://<host_ip>:30001 to launch Grafana from browser (preferably Chrome browser) for the Helm deployment

    • Login to the Grafana with values set for VISUALIZER_GRAFANA_USER and VISUALIZER_GRAFANA_PASSWORD in .env file.

      Grafana login

    • After login, click on Dashboard Menu view

    • Select the Weld Defect Detection Dashboard. Weld Defect Detection dashboard

    • One will see the below output.

      Anomaly prediction in weld sensor data

Bring down the sample app#

make down

Check logs - troubleshooting#

Check container logs to catch any failures:

docker ps
docker logs -f <container_name>
docker logs -f <container_name> | grep -i error

Other Deployment options#

See How to Deploy with Helm guide to learn how to deploy the sample application on a k8s cluster using Helm.

Advanced setup#