This repository demonstrates Apache Pinot's capabilities in handling IoT data ingestion, performing real-time anomaly detection, functioning as a vector store, and providing recommendations for restoring proper functioning of IoT devices in real-time.
The Continuous Intelligence Demo showcases a system where simulated Roof Top Unit (RTU) data is ingested, processed, and analyzed in real-time to detect anomalies and provide actionable recommendations. Apache Pinot serves as the central data store, enabling efficient querying and analysis of large-scale time-series data.
anomaly_detection/
: Contains scripts and configurations for detecting anomalies in RTU data.control_panel/
: Hosts the web-based interface for monitoring and interacting with the system.mqtt_proxy/
: Implements the MQTT bridge for ingesting MQTT data into the system.pinot_config/
: Includes configurations for setting up Apache Pinot.vector_data/
: Manages vector embeddings and similarity search functionalities.docker-compose.yml
: Defines the Docker services for orchestrating the application components.README.md
: This file.
Before running the application, set the following environment variables:
AWS_PROFILE
: AWS profile name for authentication.AWS_DEFAULT_REGION
: AWS region for services.PINOT_API_KEY
: API key for accessing Apache Pinot.PINOT_CONTROLLER
: URL of the Pinot controller.PINOT_BROKER
: URL of the Pinot broker.
These variables can be set in your shell or within a .env
file.
-
Clone the Repository:
git clone https://github.com/tdenton8772/continuous_intelligence_demo.git cd continuous_intelligence_demo
-
Set Environment Variables:
Ensure all required environment variables are set as described above.
- Start the Application Using Docker Compose:
docker-compose up --build
This command will build and start all services defined in the docker-compose.yml file, including the MQTT bridge, anomaly detection service, control panel, and Apache Pinot.
The MQTT bridge simulates RTU data and publishes it to an MQTT broker. This data is then ingested into Apache Pinot for real-time analysis.
The anomaly detection component runs predefined queries against the ingested data to identify anomalies in RTU performance metrics. Detected anomalies trigger alerts and recommendations for corrective actions.
The vector data component manages vector embeddings of troubleshooting information. It enables similarity searches to provide relevant recommendations based on the current state and detected anomalies of the RTUs.