...
We will need to add a reporting docker-compose
file file and templates for the specific service to the openlmis-ref-distro repository that stands up the reporting stack.
We would like to implement the reporting stack without creating new Docker images where ever possible, therefore we propose to create one repository for each component of the reporting stack:
...
creating a reporting
folder in the openlmis-ref-distro
repo that will contain the docker-compose.yml
file and associated template files. Tooling that we build to load templates into the reporting stack will exist elsewhere in separate tool repo(s).
The docker-compose
file will need to reference Docker files for the following services and the repository will need to contain templates for them:
- NiFi
- Description: Contain all code related to running a production quality, versioned Nifi environment. This repository will include Nifi specific templates and API calls to auto-load those templates when the docker container is running.
- Official Website: https://nifi.apache.org/
- Docker Container(s):
- Nifi: https://hub.docker.com/r/apache/nifi/
- Note: This docker container is unofficial and supports running the container in standalone mode either unsecured or with user authentication provided through two-way SSL with client certificates or LDAP.
- Nifi-Registry: https://hub.docker.com/r/apache/nifi-registry/
- (Possibly a data storage docker container)
- Nifi: https://hub.docker.com/r/apache/nifi/
- openlmis-kafkaKafka
- Description: This repository will contain all code related to running a production quality, versioned Kafka cluster deployed for a single node. This repository will include Kafka topics and API calls to auto-load them the first time it's run. Note Note that Docker configuration is well documented on this website.
- Official Website: https://kafka.apache.org/ | Heavily Supported by https://confluent.io
- Docker Container(s):
- openlmis-druidDruid
- Description: This repository will contain all code related to running a production quality, versioned druid cluster that's used for the reporting storage engine. The linked Docker container acts as an example single node cluster.
- Official Website: http://druid.io/
- Docker Container(s):
- Druid Cluster: https://hub.docker.com/r/druidio/example-cluster/
- openlmis-postgresqlPostgreSQL
- Description: This repository will contain all code related to running a production quality, versioned PostgreSQL database that's used for storage in the reporting platform.
- Official Website: https://www.postgresql.org/
- Docker Container(s):
- openlmis-supersetSuperset
- Description: This repository will contain all code related to running a production quality, versioned SuperSet environment. This repository will include scripts that load in dashboard templates through the SuperSet API.
- Official Website: https://superset.apache.org/
- No Official Docker Container(s) were found, but the following is well supported by an individual: https://github.com/amancevice/superset / https://hub.docker.com/r/amancevice/superset/
- openlmis-zookeeperZookeeper
- Description: Apache Zookeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. This repository will contain all code related to running a production quality version of Apache Zookeeper.
- Official Website: https://zookeeper.apache.org/
- Docker Container(s):
- Zookeeper (Confluent): https://hub.docker.com/r/confluentinc/cp-zookeeper/
Configuration
- We may need to load NiFi flow templates and execute other API calls to set values in these templates.
- We may need to create and configure Kafka topics using command line calls, alternatively we may do this via NiFi.
- We may need to load in dashboard templates through the SuperSet API.
OpenLMIS Reporting Repository Template
...