Internal Reference Guide
Technical deep dive into the MCM platform architecture, credentials, networking, and scripting internals for RevDau Ops.
MCM Platform — Internal Reference Guide
Confidential — For Internal Operations and RevDau DevOps Teams Only.
This document details the low-level architecture, container configuration, internal security layers, scripting engines, and credentials management of the MCM (Multi-Cloud Management) Platform.
1. Service Inventory
The table below lists all platform services, including internal core components, optional customer-facing modules, security SIEM (Wazuh), and infrastructure observability components.
| Service | Container Name | Profile | Host Port | Context Path | Technology | Description |
|---|---|---|---|---|---|---|
| MCM UI | mcm-ui | mcm-api | 3000 (internal) | / | Next.js 16, React 19 | Web interface |
| MCM API | mcm-api | mcm-api | 9091 (internal) | /api | Java 21, Spring Boot 3.4.5 | Core platform logic |
| APISIX | apisix | mcm-api | 80, 443 | — | Apache APISIX 3.12.0 | API gateway and reverse proxy |
| etcd | etcd | mcm-api | 2379 (internal) | — | etcd 3.5.11 | APISIX configuration registry |
| Keycloak | keycloak | mcm-api | 8080 (internal) | /keycloak | Keycloak 26.3.1 | Identity provider (IAM/SSO) |
| PostgreSQL | keycloak-postgres | mcm-api | 5432 (internal) | — | PostgreSQL 17.7 | Keycloak database |
| MongoDB | mongodb | mcm-api | 27018 | — | MongoDB 7.0.16 | Primary data store |
| Elasticsearch | elasticsearch | mcm-api | 9200 | — | Elasticsearch 8.19.3 | Search and analytics engine |
| Kibana | kibana | mcm-monitoring | 5601 (internal) | /kibana | Kibana 8.19.3 | Log dashboard visualization |
| Filebeat | filebeat | mcm-monitoring | — | — | Filebeat 8.19.3 | Host/container log shipper |
| Governance API | mcm-governance-api | mcm-governance | 9092 (internal) | /governance-api | Java 21, Spring Boot 3.4.5 | Governance & compliance engine |
| FinOps API | mcm-finops-api | mcm-finops | 9093 (internal) | /finops-api | Java 21, Spring Boot 3.4.5 | Financial cost analysis module |
| SecOps API | mcm-secops-api | mcm-secops | 9094 (internal) | /secops-api | Java 21, Spring Boot 3.4.5 | Security operations API |
| Orchestration API | mcm-orchestration-api | mcm-orchestration | 9095 (internal) | /orchestration-api | Java 21, Spring Boot 3.4.5 | IaC engine (OpenTofu) |
| AI API | mcm-ai-api | mcm-ai | 9096 (internal) | / | Python, FastAPI | Chatbot service (Ollama/qwen3) |
| Discovery API | mcm-discovery-api | mcm-discovery | 9097 (internal) | /discovery-api | Java 21, Spring Boot 3.4.5 | Asset discovery (Steampipe) |
| Observability API | mcm-observability-api | mcm-observability | 9098 (internal) | /observability-api | Java 21, Spring Boot 3.4.5 | APM & Agent metrics manager |
| Fleet Server | fleet-server | mcm-observability | 8220 | — | Elastic Agent 8.19.3 | Fleet metrics controller |
| APM Server | apm-server | mcm-observability | 8200 | — | Elastic Agent APM 8.19.3 | Application performance monitoring |
| Wazuh Manager | wazuh.manager | mcm-secops | 55000 | — | Wazuh Manager 4.14.1 | SIEM coordinator |
| Wazuh Indexer | wazuh.indexer | mcm-secops | 9000 | — | Wazuh Indexer 4.14.1 | SIEM datastore (OpenSearch) |
| Wazuh Dashboard | wazuh.dashboard | mcm-secops | 444 | — | Wazuh Dashboard 4.14.1 | SIEM visualization dashboard |
2. Internal Configuration Reference (internal_config.env)
Location: /opt/mcm/internal_config.env
This configuration file is generated during the CI packaging stage and contains image references, container tag details, and platform definitions. It should not be modified manually.
| Variable | Type | Description / Default Value |
|---|---|---|
DOCKER_REGISTRY | Hostname | URL of the Nexus container registry (e.g., nexus.revdau.internal:8082) |
MCM_UI_IMAGE | Image Tag | UI service image reference (e.g., revdau/mcm-ui:1.0.0-develop) |
MCM_API_IMAGE | Image Tag | Core API service image reference |
MCM_GOVERNANCE_API_IMAGE | Image Tag | Governance API image reference |
MCM_FINOPS_API_IMAGE | Image Tag | FinOps API image reference |
MCM_SECOPS_API_IMAGE | Image Tag | SecOps API image reference |
MCM_ORCHESTRATION_API_IMAGE | Image Tag | Orchestration API image reference |
MCM_DISCOVERY_API_IMAGE | Image Tag | Discovery API image reference |
MCM_OBSERVABILITY_API_IMAGE | Image Tag | Observability API image reference |
MCM_AI_API_IMAGE | Image Tag | AI API image reference |
APISIX_IMAGE | Image Tag | apache/apisix:3.12.0-debian |
ETCD_IMAGE | Image Tag | bitnami/etcd:3.5.11 |
POSTGRES_IMAGE | Image Tag | postgres:17.7-alpine |
KEYCLOAK_IMAGE | Image Tag | quay.io/keycloak/keycloak:26.3.1 |
ELASTICSEARCH_IMAGE | Image Tag | docker.elastic.co/elasticsearch/elasticsearch:8.19.3 |
MONGODB_IMAGE | Image Tag | mongo:7.0.16 |
YQ_IMAGE | Image Tag | mikefarah/yq:4.44.1 |
KIBANA_IMAGE | Image Tag | docker.elastic.co/kibana/kibana:8.19.3 |
FILEBEAT_IMAGE | Image Tag | docker.elastic.co/beats/filebeat:8.19.3 |
WAZUH_MANAGER_IMAGE | Image Tag | wazuh/wazuh-manager:4.14.1 |
WAZUH_INDEXER_IMAGE | Image Tag | wazuh/wazuh-indexer:4.14.1 |
WAZUH_DASHBOARD_IMAGE | Image Tag | wazuh/wazuh-dashboard:4.14.1 |
WAZUH_CERTS_GENERATOR_IMAGE | Image Tag | wazuh/wazuh-certs-generator:0.0.3 |
ELASTIC_AGENT_IMAGE | Image Tag | docker.elastic.co/beats/elastic-agent:8.19.3 |
ELASTIC_USERNAME | Username | Default Elasticsearch superuser (elastic) |
KIBANA_SYSTEM_USERNAME | Username | Kibana system process user (kibana_system) |
KIBANA_READ_ONLY_USERNAME | Username | Kibana read-only user (KibanaReadOnlyUser) |
TRUSTED_DOMAINS | CSV List | Domain list whose SSL certs are imported into service truststores |
HOST_SERVER_IP | IPv4 | Primary host server IP address (auto-detected on startup) |
3. Certificate Architecture Deep Dive
MCM uses a dual Certificate Authority model to secure both application-level traffic (via the MCM Root CA) and security monitoring telemetry (via the Wazuh CA).
3.1 Keystore and Truststore Internals
Java services require secure cryptographic storage formatted as PKCS12 archives:
keystore.p12: Holds the individual service's private key, certificate, and CA chain.- Alias:
mcm - Encryption Password: Read from
KEYSTORE_PASSWORDin/etc/mcm/secrets.env
- Alias:
truststore.p12: Holds trusted certificates representing entities the service can communicate with.- Alias
mcm: Points to the MCM Root CA (ca.crt). - Alias
wazuh-root-ca: Points to the Wazuh Root CA (root-ca.pem). - Aliases
<domain>-<index>: Points to certificates fetched recursively fromTRUSTED_DOMAINS(e.g.login.microsoftonline.com-0,login.microsoftonline.com-1). - Encryption Password: Read from
TRUSTSTORE_PASSWORDin/etc/mcm/secrets.env
- Alias
3.2 Configuration Fingerprint and Rotation
To prevent unnecessary certificate generation, the generate-certs.sh script tracks changes using /var/lib/mcm/.config_fingerprint.
The fingerprint is an MD5 hash calculated from:
Fingerprint = MD5(HOST_SERVER_IP | DOMAIN | TRUSTED_DOMAINS | MD5(secrets.env))If the fingerprint changes or is missing:
- The entire directory
/var/lib/mcm/is backed up to/var/backups/mcm/backup_<YYYYMMDD_HHMMSS>/. - A new MCM Root CA is generated at
/var/lib/mcm/certs/ca.keyandca.crt. - Each microservice's keystore, truststore, and self-signed certificate are regenerated.
- Wazuh certificates are regenerated using the generator container.
- A new
.config_fingerprintfile is written.
4. Wazuh SIEM Complete Reference
Wazuh operates as an independent security enclave using standard ports and configuration bindings.
4.1 Deployment Profile: mcm-secops
Wazuh components are deployed dynamically under the mcm-secops compose profile:
wazuh.manager: Central engine analyzing logs, auditing system files, and running active responses.wazuh.indexer: High-performance indexer storing and querying alerts.wazuh.dashboard: Kibana-derived security interface mapping compliance frameworks (PCI-DSS, CIS, GDPR).init-wazuh-security: Secures indexer REST endpoints with randomized passwords on first boot.
4.2 Certificate Generation & Distribution
Wazuh requires a strict directory structure of certificates under /var/lib/mcm/wazuh/certs/. The generator configuration (certs.yml) is generated dynamically:
nodes:
indexer:
- name: wazuh.indexer
ip: wazuh.indexer
root_ca: root-ca
server:
- name: wazuh.manager
ip:
- <HOST_SERVER_IP>
- 127.0.0.1
root_ca: root-ca
dashboard:
- name: wazuh.dashboard
ip: wazuh.dashboard
root_ca: root-caThe generator container (wazuh-certs-generator) writes a set of tar files, which are extracted, flattened, and permissions fixed to 755 for secure access.
5. Docker Compose Profiles & Full Architecture
The following diagram represents the complete networking architecture, profiles, and backend inter-dependencies, including the Wazuh (mcm-secops) and Elastic Agent (mcm-observability) services.
6. Script Internals Reference
6.1 Package Build Flow (build-and-publish.sh)
This script runs on the DevOps CI/CD pipeline server (e.g. Jenkins or GitHub Runner) to build and publish the deployment archive:
6.2 Installation Flow (install.sh)
This script is executed by the customer administrator during fresh installation:
6.3 Operation Scripts Summary
All scripts are located in /opt/mcm/scripts/:
start.sh:- Detects system IP via
set-public-ip.shand updatesinternal_config.env. - Generates credential file via
generate-secrets.sh. - Generates keystores and certs via
generate-certs.sh. - Extracts and distributes MongoDB field encryption keys (
MONGO_MASTER_KEY). - Starts docker compose services for active profiles.
- Detects system IP via
stop.sh: Stops and removes running containers under active docker compose profiles.restart.sh: Runsstop.sh, executesstart.shconfiguration pipeline, and performsdocker compose up -d --force-recreate.cleanup.sh: Highly Destructive. Stops all services, prunes all docker resources, deletes all persistent data volumes, and clears configurations.generate-secrets.sh: Generates random passwords viapwgenand writes to/etc/mcm/secrets.env. Injects secrets directly into APISIX, Keycloak JSON templates, and service-specific application YAML overrides.remove.sh: Prunes containers and optionally networks, volumes, and images from the host.
7. Container Networking
All containers communicate over an isolated Docker bridge network:
- Name:
apisix-net - Subnet: Managed by the Docker daemon (typically
172.18.0.0/16)
Containers are addressed internally by their service names defined in the docker-compose.yml file. APISIX resolves upstream services (e.g. http://mcm-api:9091/) using Docker's internal DNS server (127.0.0.11).
8. Complete Environment Variable Reference
8.1 User Configuration (/etc/mcm/user_config.env)
This file controls the global deployment variables and active modules:
| Variable | Values | Description |
|---|---|---|
DEPLOY_ENV | main | Deployment environment identifier. Set to main for production. Do not modify. |
GENERATE_SECRETS | true, false | When true, auto-generates all secrets in secrets.env. Automatically set to false after generation. |
GENERATE_SELF_SIGN_CERTS | true, false | When true, generates self-signed TLS certificates. Automatically set to false after generation. |
COMPOSE_PROFILES | Comma-separated profiles | Controls which modules start. E.g. mcm-api,mcm-monitoring,mcm-governance,mcm-finops,mcm-orchestration,mcm-discovery,mcm-ai,mcm-observability. |
DOMAIN | FQDN or empty | Custom domain (e.g., mcm.example.com). If empty, server's public IP is used. |
8.2 Secrets (/etc/mcm/secrets.env)
This file is auto-generated during the first installation if GENERATE_SECRETS=true. All passwords are randomly generated using pwgen:
| Variable | Auto-Generated Size | Description |
|---|---|---|
POSTGRES_KEYCLOAK_PASSWORD | 16 chars | Keycloak PostgreSQL database password |
KC_BOOTSTRAP_ADMIN_PASSWORD | 20 chars | Keycloak bootstrap admin (superuser) password |
KC_MCM_ADMIN_PASSWORD | 16 chars | MCM admin user password in Keycloak |
KC_MCM_CLIENT_SECRET | 32 chars | OAuth2 client secret for mcm-admin Keycloak client |
ELASTIC_PASSWORD | 16 chars | Elasticsearch elastic superuser password |
KIBANA_SYSTEM_PASSWORD | 16 chars | Elasticsearch kibana_system user password |
KIBANA_READ_ONLY_PASSWORD | 16 chars | Elasticsearch KibanaReadOnlyUser password |
MONGO_INITDB_ROOT_PASSWORD | 20 chars | MongoDB root user password |
MONGO_INITDB_MCM_PASSWORD | 20 chars | MongoDB mcm application user password |
KEYSTORE_PASSWORD | 12 chars | PKCS12 keystore password for Java TLS |
TRUSTSTORE_PASSWORD | 12 chars | PKCS12 truststore password for Java TLS |
APISIX_ADMIN_KEY | 32 chars | APISIX Admin API key |
MONGO_MASTER_KEY | 96 bytes (base64) | MongoDB field-level encryption master key |
STEAMPIPE_DB_PASSWORD | 16 chars | Steampipe PostgreSQL password (Discovery module) |
WAZUH_INDEXER_PASSWORD | Static | Wazuh Indexer admin password: SecretPassword |
WAZUH_API_PASSWORD | Static | Wazuh API password: MyS3cr37P450r.*- |
WAZUH_DASHBOARD_PASSWORD | Static | Wazuh Dashboard password: kibanaserver |
WAZUH_INDEXER_USERNAME | Static | Wazuh Indexer username: admin |
WAZUH_API_USERNAME | Static | Wazuh API username: wazuh-wui |
WAZUH_DASHBOARD_USERNAME | Static | Wazuh Dashboard username: kibanaserver |
8.3 Internal & System-managed Variables (/opt/mcm/internal_config.env)
These variables are immutable and set by the DevOps deployment process:
| Variable | Required | Default | Description |
|---|---|---|---|
DOCKER_REGISTRY | Yes | Sourced | Target Nexus registry domain |
MCM_*_IMAGE | Yes | Sourced | Image path/tag for MCM microservices |
TRUSTED_DOMAINS | Yes | Configured | List of domains imported to truststores |
HOST_SERVER_IP | Yes | Detected | Primary network interface IP |
9. Complete Port Reference
9.1 Host-Exposed Ports
| Port | Protocol | Service | Source Container | Direction | Description |
|---|---|---|---|---|---|
| 22 | TCP | SSH | Host OS | Inbound | System administration |
| 80 | TCP | APISIX | apisix | Inbound | HTTP Web (Redirects to HTTPS) |
| 443 | TCP | APISIX | apisix | Inbound | HTTPS Primary endpoint |
| 444 | TCP | Wazuh Dashboard | wazuh.dashboard | Inbound | Wazuh dashboard interface |
| 8200 | TCP | APM Server | apm-server | Inbound | APM metric collection port |
| 8220 | TCP | Fleet Server | fleet-server | Inbound | Elastic agent enrollment |
| 9000 | TCP | Wazuh Indexer | wazuh.indexer | Inbound | Wazuh database API |
| 9200 | TCP | Elasticsearch | elasticsearch | Inbound | Elasticsearch API port |
| 27018| TCP | MongoDB | mongodb | Inbound | External database connection |
| 55000| TCP | Wazuh Manager | wazuh.manager | Inbound | Wazuh REST API endpoint |
9.2 Internal-Only Ports (apisix-net Network)
| Port | Target Container | Protocol | Description |
|---|---|---|---|
| 2379 | etcd | TCP | APISIX route configuration store |
| 3000 | mcm-ui | TCP | Core UI listener |
| 5432 | postgres | TCP | Keycloak PostgreSQL database port |
| 5601 | kibana | TCP | Kibana UI dashboard |
| 8080 | keycloak | TCP | Identity management REST API / console |
| 9091 | mcm-api | TCP | Core Java backend actuator / API |
| 9092 | mcm-governance-api | TCP | Governance backend |
| 9093 | mcm-finops-api | TCP | FinOps cost engine backend |
| 9094 | mcm-secops-api | TCP | SecOps compliance backend |
| 9095 | mcm-orchestration-api | TCP | Orchestration engine |
| 9096 | mcm-ai-api | TCP | AI Python FastAPI backend |
| 9097 | mcm-discovery-api | TCP | Asset discovery backend |
| 9098 | mcm-observability-api | TCP | Observability manager |
10. Complete Docker Volume Reference
The table below describes all persistent Docker volumes, data contents, and ownership requirements.
| Volume Name | Target Container | Container Mount Path | Persists Data | Description / Data Stored |
|---|---|---|---|---|
mongodb_data | mongodb | /data/db | Yes | MongoDB data files (Collections/Documents) |
es_data | elasticsearch | /usr/share/elasticsearch/data | Yes | Search index shards and system logs |
keycloak_db_data | postgres | /var/lib/postgresql/data | Yes | IAM realm configuration and user credentials |
etcd_data | etcd | /bitnami/etcd | Yes | APISIX route mappings |
orchestration_data | mcm-orchestration-api | /app/orchestration | Yes | OpenTofu plans, states, and cached modules |
wazuh-indexer-data | wazuh.indexer | /usr/share/wazuh-indexer/data | Yes | SIEM security event indices |
wazuh_etc | wazuh.manager | /var/ossec/etc | Yes | Wazuh configuration files |
wazuh_logs | wazuh.manager | /var/ossec/logs | Yes | Wazuh operational alerts and audit trials |
wazuh_queue | wazuh.manager | /var/ossec/queue | Yes | Local event queues |
wazuh_aws | wazuh.manager | /var/ossec/wodles/aws | Yes | Wazuh AWS cloud auditing configurations |
filebeat_var | filebeat | /usr/share/filebeat/data | Yes | Log collection registry offsets |
11. Init Container Details
Before core application microservices start up, special init containers perform prerequisites configuration:
init-apisix: Wait until APISIX gateway is listening. Resolves the DNS bindings for the active domain name/IP, injects config into APISIX, and configures routes inside etcd.init-elasticsearch: Generates built-in user credentials and assigns cluster index roles for Elasticsearch.init-kibana: Configures indices patterns, default views, and Kibana system credentials.init-wazuh-security: Configures certificate authentication for security endpoints and loads default administrative rules.init-observability-fleet: Connects Elastic Fleet server, registers enrollment tokens, and sets up APM ingestion pipelines.
12. Deployment Artifacts Reference
12.1 Artifact Structure
The MCM deployment artifact is a compressed tarball containing everything needed for installation:
mcm_artifacts_<VERSION>.tar.gz
├── install.sh # Fresh installation script
├── upgrade.sh # Upgrade script (preserves configuration)
├── version.txt # Artifact version identifier
├── opt/
│ └── mcm/
│ ├── docker-compose.yml # Docker Compose service definitions
│ ├── internal_config.env # Image versions, registry, system config
│ ├── scripts/ # Operational scripts
│ │ ├── install-deps.sh # Install system dependencies
│ │ ├── start.sh # Start all services
│ │ ├── stop.sh # Stop all services
│ │ ├── restart.sh # Restart all services
│ │ ├── cleanup.sh # Full reset (destructive)
│ │ ├── remove.sh # Remove containers and volumes
│ │ ├── pull-images.sh # Pull latest Docker images
│ │ ├── service.sh # Update a single service
│ │ ├── generate-secrets.sh # Auto-generate passwords and secrets
│ │ ├── generate-certs.sh # Auto-generate TLS certificates
│ │ ├── set-public-ip.sh # Detect and set host public IP
│ │ ├── safe-remove.sh # Prune unused Docker resources
│ │ ├── healthcheck.sh # Health check utility
│ │ └── utils.sh # Shared utility functions
│ ├── apisix/ # APISIX gateway configuration
│ ├── init-apisix/ # APISIX route initialization
│ ├── keycloak/ # Keycloak realm import files
│ ├── mongodb/ # MongoDB initialization scripts
│ ├── init-elasticsearch/ # Elasticsearch user/role setup
│ ├── kibana/ # Kibana configuration
│ ├── init-kibana/ # Kibana initialization
│ ├── filebeat/ # Filebeat log shipping configuration
│ ├── wazuh/ # Wazuh SIEM configuration
│ └── init-wazuh-keycloak/ # Wazuh-Keycloak SSO integration
├── etc/
│ ├── mcm/
│ │ ├── user_config.env # User-editable configuration
│ │ ├── mcm-api/ # MCM API overrides
│ │ ├── mcm-governance-api/ # Governance API overrides
│ │ ├── mcm-finops-api/ # FinOps API overrides
│ │ ├── mcm-secops-api/ # SecOps API overrides
│ │ ├── mcm-orchestration-api/ # Orchestration API overrides
│ │ ├── mcm-discovery-api/ # Discovery API overrides
│ │ └── mcm-ai-api/ # AI API overrides
│ └── systemd/
│ └── system/
│ └── mcm.service # Systemd service unit file
└── images/ # Bundled Docker images (all included)
├── revdau_mcm-ui.tar # MCM UI image
├── revdau_mcm-api.tar # MCM API image
├── revdau_mcm-governance-api.tar # Governance API image
├── revdau_mcm-finops-api.tar # FinOps API image
├── revdau_mcm-secops-api.tar # SecOps API image
├── revdau_mcm-orchestration-api.tar # Orchestration API image
├── revdau_mcm-discovery-api.tar # Discovery API image
├── revdau_mcm-ai-api.tar # AI API image
├── apache__apisix.tar # APISIX gateway image
├── bitnami__etcd.tar # etcd image
├── postgres.tar # PostgreSQL image
├── keycloak.tar # Keycloak image
├── elasticsearch.tar # Elasticsearch image
├── mongo.tar # MongoDB image
├── kibana.tar # Kibana image
├── filebeat.tar # Filebeat image
├── linuxserver__yq.tar # yq init container image
├── wazuh__wazuh-manager.tar # Wazuh Manager image
├── wazuh__wazuh-indexer.tar # Wazuh Indexer image
├── wazuh__wazuh-dashboard.tar # Wazuh Dashboard image
└── wazuh__wazuh-certs-generator.tar # Wazuh certificate generator image12.2 Versioning Scheme
MCM follows Semantic Versioning (SemVer): MAJOR.MINOR.PATCH (e.g. 1.0.0). The version is embedded in the artifact filename and in the version.txt file.
12.3 Artifact Delivery
- Format: gzip-compressed tar archive (
.tar.gz) - Typical Size: 10–15 GB (includes all Docker images)
- Delivery: Secure file transfer, USB, or pre-signed URL.
- Option C — Cloud Storage (Pre-Signed URL): If provided:
curl -L -o mcm_artifacts_1.0.0.tar.gz "<PRE_SIGNED_URL_PROVIDED_BY_REVDAU>"
12.4 Directory Layout on Host
| Directory | Purpose | Modified During Upgrade |
|---|---|---|
/opt/mcm/ | Application binaries, Docker Compose, scripts, init configs | Yes — replaced on each upgrade |
/etc/mcm/ | User configuration, secrets, per-service config overrides | No — preserved across upgrades |
/var/lib/mcm/ | Generated TLS certificates, keystores, truststores | Auto-regenerated if config changes |
/var/lib/docker/volumes/ | Docker-managed persistent data (MongoDB, ES, etc.) | No — preserved across upgrades |
/var/backups/mcm/ | Automatic certificate backups on config changes | Auto-maintained |
/etc/systemd/system/mcm.service | Systemd service unit for auto-start | Updated on install/upgrade |
13. Detailed Docker Compose Profiles
13.1 Profile Overview
MCM uses Docker Compose profiles to modularize the deployment:
| Profile | Description | Required |
|---|---|---|
mcm-api | Core platform — gateway, UI, API, databases, auth | Always |
mcm-monitoring | Log visualization and monitoring (Kibana + Filebeat) | Recommended |
mcm-governance | Cloud governance and compliance | Optional |
mcm-finops | Financial operations and cost management | Optional |
mcm-orchestration | Infrastructure orchestration (OpenTofu) | Optional |
mcm-discovery | Cloud resource discovery (Steampipe) | Optional |
mcm-ai | AI chatbot and intelligence | Optional |
mcm-observability | Infrastructure observability (Fleet + Elastic Agent) | Optional |
13.2 Enabling / Disabling Modules
To modify active modules, edit COMPOSE_PROFILES in /etc/mcm/user_config.env and run sudo bash /opt/mcm/scripts/restart.sh.
14. Internal Component Endpoints & Swagger
For troubleshooting or internal configurations, the following direct routes can be accessed:
14.1 Health Check Endpoints
| Service | Health Check Command | Expected Response |
|---|---|---|
| MCM API | curl -sk https://localhost/api/actuator/health | {"status":"UP"} |
| Governance API | curl -sk https://localhost/governance-api/api/actuator/health | {"status":"UP"} |
| FinOps API | curl -sk https://localhost/finops-api/api/actuator/health | {"status":"UP"} |
| Orchestration API | curl -sk https://localhost/orchestration-api/api/actuator/health | {"status":"UP"} |
| AI API | curl -sk https://localhost/ai-api/health | {"status":"OK"} |
| Discovery API | curl -sk https://localhost/discovery-api/api/actuator/health | {"status":"UP"} |
| Observability API | curl -sk https://localhost/observability-api/api/actuator/health | {"status":"UP"} |
| MCM UI | curl -sk https://localhost/ | HTML response |
| Elasticsearch | curl -sk -u elastic:<ELASTIC_PASSWORD> https://localhost:9200/_cluster/health | {"status":"green" or "yellow"} |
| MongoDB | docker exec mongodb mongosh --eval "db.adminCommand('ping')" | { ok: 1 } |
14.2 Internal Access Details
| Component | URL / Connection |
|---|---|
| MCM API Swagger | https://<DOMAIN_OR_IP>/api/mcm-docs/swagger-ui/index.html |
| Elasticsearch | https://<DOMAIN_OR_IP>:9200 |
| MongoDB | mongodb://mcm:<MONGO_INITDB_MCM_PASSWORD>@<DOMAIN_OR_IP>:27018/?authSource=mcm |
MCM Internal Reference Guide v1.0.0
© 2026 RevDau Industries Private Limited. All rights reserved.
This document is proprietary and confidential. Unauthorized distribution is strictly prohibited.