# akash-29-1995/multicloud-disk-monitoring-architecture architecture

> Architecture diagram of the GitHub repository akash-29-1995/multicloud-disk-monitoring-architecture, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-05). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/akash-29-1995/multicloud-disk-monitoring-architecture
- Repository: https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture

## Overview

Lucidity enrolls EC2 instances for continuous disk monitoring: an operator or Jenkins triggers discovery, the orchestrator writes Ansible inventory, Ansible configures the agent through SSM, and CloudWatch collects metrics and drives dashboards and alarms. Terraform provisions the monitoring roles and CloudWatch resources; Ansible also supports reconciliation and host validation. GCP and Azure are documented extension points, but their adapters are stubs. Relationships for infrastructure and Ansible are based on the README; source-level edges are limited to the supplied orchestrator excerpts.

Main entry points: [`jenkins/Jenkinsfile`](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/jenkins/Jenkinsfile) (Jenkins stages), [`orchestrator/main.py`](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/main.py) (Orchestrator CLI), [`orchestrator/adapters/factory.py`](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/factory.py) (Adapter selection), [`orchestrator/adapters/aws.py`](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/aws.py) (AWS discovery adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_trigger["Setup triggers"]
  node_jenkins["Jenkins stages"]
end

subgraph group_discovery["Discovery and inventory"]
  node_cli["Orchestrator CLI<br/>[main.py]"]
  node_params["Parameter and registry validation<br/>[params.py]"]
  node_accounts["Customer account registry"]
  node_profiles["Monitoring profiles"]
  node_factory["Adapter selection<br/>[factory.py]"]
  node_aws["AWS discovery adapter<br/>[aws.py]"]
  node_sts["Cross-account AssumeRole<br/>[sts.py]"]
  node_adapterbase["Cloud adapter interface<br/>[base.py]"]
  node_gcp["GCP adapter stub<br/>[gcp.py]"]
  node_azure["Azure adapter stub<br/>[azure.py]"]
  node_inventorymodel["Normalized inventory models<br/>[models.py]"]
  node_inventorywriter["Inventory file generator<br/>[generator.py]"]
  node_inventoryfiles["Generated Ansible inventory"]
end

subgraph group_enrollment["Agent enrollment"]
  node_enroll["Enrollment playbook"]
  node_reconcile["Reconcile playbook"]
  node_validatehost["Host validation playbook"]
  node_agentrole["CloudWatch Agent role<br/>[main.yml]"]
end

subgraph group_monitoring["Monitoring"]
  node_agent["CloudWatch Agent"]
  node_cloudwatch[("CloudWatch metrics")]
  node_dashboard["Monitoring dashboard<br/>[dashboard.json]"]
  node_alarms["Disk and agent alarms<br/>[alarms.json]"]
  node_email(("Email notifications"))
end

subgraph group_provisioning["AWS provisioning"]
  node_terraform["Terraform environments"]
  node_cwmodule["CloudWatch resources<br/>[main.tf]"]
  node_rolemodules["Monitoring IAM roles<br/>[main.tf]"]
end

node_operator(("Operator"))
node_ssm["AWS Systems Manager"]
node_ec2["EC2 instances"]

node_operator -->|"runs discovery"| node_cli
node_operator -->|"triggers setup"| node_jenkins
node_jenkins -->|"triggers discovery"| node_cli
node_cli -->|"validates and resolves"| node_params
node_params -->|"reads registry"| node_accounts
node_params -->|"loads profile"| node_profiles
node_cli -->|"selects adapter"| node_factory
node_factory -->|"creates AWS adapter"| node_aws
node_factory -->|"creates GCP adapter"| node_gcp
node_factory -->|"creates Azure adapter"| node_azure
node_factory -->|"returns interface"| node_adapterbase
node_cli -->|"runs discovery"| node_aws
node_aws -->|"assumes role"| node_sts
node_aws -->|"finds tagged instances"| node_ec2
node_aws -->|"normalizes hosts"| node_inventorymodel
node_cli -->|"writes inventory"| node_inventorywriter
node_inventorywriter -->|"serializes inventory"| node_inventorymodel
node_inventorywriter -->|"writes files"| node_inventoryfiles
node_inventoryfiles -->|"supplies host inventory"| node_enroll
node_inventoryfiles -->|"supplies host inventory"| node_reconcile
node_jenkins -->|"triggers enrollment"| node_enroll
node_jenkins -->|"triggers autoheal"| node_reconcile
node_jenkins -->|"triggers validation"| node_validatehost
node_enroll -->|"uses role"| node_agentrole
node_reconcile -->|"uses role"| node_agentrole
node_validatehost -->|"validates via SSM"| node_ssm
node_enroll -->|"configures via SSM"| node_ssm
node_agentrole -->|"installs and configures"| node_agent
node_agent -->|"publishes metrics"| node_cloudwatch
node_cloudwatch -->|"feeds dashboard"| node_dashboard
node_cloudwatch -->|"feeds alarms"| node_alarms
node_alarms -->|"sends alerts"| node_email
node_alarms -->|"triggers autoheal"| node_jenkins
node_terraform -->|"configures resources"| node_cwmodule
node_terraform -->|"provisions roles"| node_rolemodules
node_rolemodules -->|"grants access"| node_ssm
node_cwmodule -->|"provisions monitoring"| node_cloudwatch

click node_jenkins "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/jenkins/Jenkinsfile"
click node_cli "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/main.py"
click node_params "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/validators/params.py"
click node_accounts "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/config/customer-accounts.template.yaml"
click node_profiles "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/config/monitoring-profiles.yaml"
click node_factory "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/factory.py"
click node_aws "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/aws.py"
click node_sts "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/auth/sts.py"
click node_adapterbase "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/base.py"
click node_gcp "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/gcp.py"
click node_azure "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/azure.py"
click node_inventorymodel "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/inventory/models.py"
click node_inventorywriter "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/inventory/generator.py"
click node_inventoryfiles "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/tree/main/ansible/inventory/orchestrator-output"
click node_enroll "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/ansible/playbooks/enroll-disk-monitoring.yml"
click node_reconcile "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/ansible/playbooks/reconcile-agent-config.yml"
click node_validatehost "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/ansible/playbooks/validate-agent-on-host.yml"
click node_agentrole "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/ansible/roles/cloudwatch_agent/tasks/main.yml"
click node_cloudwatch "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/tree/main/cloudwatch"
click node_dashboard "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/cloudwatch/dashboard.json"
click node_alarms "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/cloudwatch/alarms.json"
click node_terraform "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/tree/main/terraform/environments"
click node_cwmodule "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/terraform/modules/cloudwatch/main.tf"
click node_rolemodules "https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/terraform/modules/monitoring-role/main.tf"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_jenkins toneBlue
class node_cli,node_params,node_accounts,node_profiles,node_factory,node_aws,node_sts,node_adapterbase,node_gcp,node_azure,node_inventorymodel,node_inventorywriter,node_inventoryfiles toneAmber
class node_enroll,node_reconcile,node_validatehost,node_agentrole toneMint
class node_agent,node_cloudwatch,node_dashboard,node_alarms,node_email toneRose
class node_terraform,node_cwmodule,node_rolemodules,node_operator,node_ssm,node_ec2 toneIndigo
```

## Components

### Setup triggers

- [Jenkins stages](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/jenkins/Jenkinsfile): `jenkins/Jenkinsfile`

### Discovery and inventory

- [Orchestrator CLI](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/main.py): `orchestrator/main.py`
- [Parameter and registry validation](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/validators/params.py): `orchestrator/validators/params.py`
- [Customer account registry](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/config/customer-accounts.template.yaml): `config/customer-accounts.template.yaml`
- [Monitoring profiles](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/config/monitoring-profiles.yaml): `config/monitoring-profiles.yaml`
- [Adapter selection](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/factory.py): `orchestrator/adapters/factory.py`
- [AWS discovery adapter](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/aws.py): `orchestrator/adapters/aws.py`
- [Cross-account AssumeRole](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/auth/sts.py): `orchestrator/auth/sts.py`
- [Cloud adapter interface](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/base.py): `orchestrator/adapters/base.py`
- [GCP adapter stub](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/gcp.py): `orchestrator/adapters/gcp.py`
- [Azure adapter stub](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/adapters/azure.py): `orchestrator/adapters/azure.py`
- [Normalized inventory models](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/inventory/models.py): `orchestrator/inventory/models.py`
- [Inventory file generator](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/orchestrator/inventory/generator.py): `orchestrator/inventory/generator.py`
- [Generated Ansible inventory](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/tree/main/ansible/inventory/orchestrator-output): `ansible/inventory/orchestrator-output`

### Agent enrollment

- [Enrollment playbook](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/ansible/playbooks/enroll-disk-monitoring.yml): `ansible/playbooks/enroll-disk-monitoring.yml`
- [Reconcile playbook](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/ansible/playbooks/reconcile-agent-config.yml): `ansible/playbooks/reconcile-agent-config.yml`
- [Host validation playbook](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/ansible/playbooks/validate-agent-on-host.yml): `ansible/playbooks/validate-agent-on-host.yml`
- [CloudWatch Agent role](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/ansible/roles/cloudwatch_agent/tasks/main.yml): `ansible/roles/cloudwatch_agent/tasks/main.yml`

### Monitoring

- **CloudWatch Agent**
- [CloudWatch metrics](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/tree/main/cloudwatch): `cloudwatch`
- [Monitoring dashboard](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/cloudwatch/dashboard.json): `cloudwatch/dashboard.json`
- [Disk and agent alarms](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/cloudwatch/alarms.json): `cloudwatch/alarms.json`
- **Email notifications**

### AWS provisioning

- [Terraform environments](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/tree/main/terraform/environments): `terraform/environments`
- [CloudWatch resources](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/terraform/modules/cloudwatch/main.tf): `terraform/modules/cloudwatch/main.tf`
- [Monitoring IAM roles](https://github.com/akash-29-1995/multicloud-disk-monitoring-architecture/blob/main/terraform/modules/monitoring-role/main.tf): `terraform/modules/monitoring-role/main.tf`

### Other components

- **Operator**
- **AWS Systems Manager**
- **EC2 instances**

## Connections

- Operator → Orchestrator CLI: runs discovery (evidence: `README.md`)
- Operator → Jenkins stages: triggers setup (evidence: `README.md`)
- Jenkins stages → Orchestrator CLI: triggers discovery (evidence: `README.md`)
- Orchestrator CLI → Parameter and registry validation: validates and resolves (evidence: `orchestrator/main.py`)
- Parameter and registry validation → Customer account registry: reads registry
- Parameter and registry validation → Monitoring profiles: loads profile
- Orchestrator CLI → Adapter selection: selects adapter (evidence: `orchestrator/main.py`)
- Adapter selection → AWS discovery adapter: creates AWS adapter (evidence: `orchestrator/adapters/factory.py`)
- Adapter selection → GCP adapter stub: creates GCP adapter (evidence: `orchestrator/adapters/factory.py`)
- Adapter selection → Azure adapter stub: creates Azure adapter (evidence: `orchestrator/adapters/factory.py`)
- Adapter selection → Cloud adapter interface: returns interface (evidence: `orchestrator/adapters/factory.py`)
- Orchestrator CLI → AWS discovery adapter: runs discovery (evidence: `orchestrator/main.py`)
- AWS discovery adapter → Cross-account AssumeRole: assumes role (evidence: `orchestrator/adapters/aws.py`)
- AWS discovery adapter → EC2 instances: finds tagged instances (evidence: `README.md`)
- AWS discovery adapter → Normalized inventory models: normalizes hosts (evidence: `orchestrator/adapters/aws.py`)
- Orchestrator CLI → Inventory file generator: writes inventory (evidence: `orchestrator/main.py`)
- Inventory file generator → Normalized inventory models: serializes inventory (evidence: `orchestrator/inventory/generator.py`)
- Inventory file generator → Generated Ansible inventory: writes files
- Generated Ansible inventory → Enrollment playbook: supplies host inventory (evidence: `README.md`)
- Generated Ansible inventory → Reconcile playbook: supplies host inventory (evidence: `README.md`)
- Jenkins stages → Enrollment playbook: triggers enrollment (evidence: `README.md`)
- Jenkins stages → Reconcile playbook: triggers autoheal (evidence: `README.md`)
- Jenkins stages → Host validation playbook: triggers validation (evidence: `README.md`)
- Enrollment playbook → CloudWatch Agent role: uses role (evidence: `README.md`)
- Reconcile playbook → CloudWatch Agent role: uses role (evidence: `README.md`)
- Host validation playbook → AWS Systems Manager: validates via SSM (evidence: `README.md`)
- Enrollment playbook → AWS Systems Manager: configures via SSM (evidence: `README.md`)
- CloudWatch Agent role → CloudWatch Agent: installs and configures (evidence: `README.md`)
- CloudWatch Agent → CloudWatch metrics: publishes metrics (evidence: `README.md`)
- CloudWatch metrics → Monitoring dashboard: feeds dashboard (evidence: `README.md`)
- CloudWatch metrics → Disk and agent alarms: feeds alarms (evidence: `README.md`)
- Disk and agent alarms → Email notifications: sends alerts (evidence: `README.md`)
- Disk and agent alarms → Jenkins stages: triggers autoheal (evidence: `README.md`)
- Terraform environments → CloudWatch resources: configures resources (evidence: `README.md`)
- Terraform environments → Monitoring IAM roles: provisions roles (evidence: `README.md`)
- Monitoring IAM roles → AWS Systems Manager: grants access (evidence: `README.md`)
- CloudWatch resources → CloudWatch metrics: provisions monitoring (evidence: `README.md`)
