Scan and Import Assets
After connecting your cloud provider, NightOps automatically discovers all manageable compute resources.
How Asset Discovery Works
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Provider │────▶│ NightOps │────▶│ Asset │
│ (AWS) │ │ Sync │ │ Database │
└──────────────┘ └──────────────┘ └──────────────┘
│
▼
┌──────────────┐
│ Dashboard │
│ Display │
└──────────────┘
NightOps queries each cloud provider's APIs to:
- Discover all compute resources (VMs, databases, containers)
- Retrieve current status (running, stopped)
- Extract tags/labels for organization
- Estimate hourly and monthly costs
Triggering a Sync
Initial Sync
When you first connect a provider, NightOps automatically starts an initial sync. This typically takes 1-3 minutes depending on the number of resources.
Manual Sync
To refresh the asset list:
- Go to Providers in the dashboard
- Find your provider
- Click the Sync button
- Wait for the sync to complete
Automatic Sync
NightOps automatically syncs every 15 minutes to:
- Detect new resources
- Update status changes
- Remove terminated resources
- Refresh cost estimates
Discovered Asset Types
AWS
| Service | Asset Type | Discovered Details |
|---|---|---|
| EC2 | ec2_instance | Instance ID, type, state, VPC, tags |
| RDS | rds_instance | Instance ID, engine, size, storage |
| ECS | ecs_service | Cluster, service name, task count |
| EKS | eks_nodegroup | Cluster, node group, instance types |
| Redshift | redshift_cluster | Cluster ID, node type, node count |
| ASG | asg | Group name, desired/min/max capacity |
GCP
| Service | Asset Type | Discovered Details |
|---|---|---|
| Compute Engine | gce_instance | Instance name, machine type, zone |
| Cloud SQL | cloud_sql_instance | Instance name, tier, storage |
| GKE | gke_nodepool | Cluster, pool name, node count |
| Cloud Run | cloud_run_service | Service name, region, concurrency |
| Cloud Functions | cloud_function | Function name, runtime, memory |
Azure
| Service | Asset Type | Discovered Details |
|---|---|---|
| Virtual Machines | virtual_machine | VM name, size, OS, resource group |
| Azure SQL | sql_database | Server, database name, tier |
| AKS | aks_nodepool | Cluster, pool name, node count |
| Container Instances | container_instance | Container group, CPU, memory |
| Functions | function_app | App name, plan, runtime |
Asset Details
Each discovered asset includes:
Identification
id: asset_abc123
name: staging-api-server
type: ec2_instance
provider_resource_id: i-0abcd1234efgh5678
region: us-east-1
Status
status: running # running, stopped, starting, stopping, terminated, error
is_manageable: true # Can NightOps control this resource?
is_active: true # Is this resource being tracked?
Cost Estimate
hourly_cost: 0.1664 # $0.17/hour (m5.large)
monthly_cost: 119.81 # $119.81/month (730 hours)
Tags
provider_tags:
Environment: staging
Team: backend
nightops-managed: "true"
tags:
- staging
- api
Specs
specs:
instance_type: m5.large
vcpu: 2
memory_gb: 8
storage_gb: 100
Filtering Assets
By Tag
Only discover resources with specific tags:
- Go to Providers → Edit Provider
- Under Tag Filters, add:
nightops-managed: true - Save and re-sync
NightOps will only import resources matching the tag filter.
By Region
Limit discovery to specific regions:
- Go to Providers → Edit Provider
- Under Regions, select only the regions you want
- Save and re-sync
By Resource Type
Exclude specific resource types from discovery:
- Go to Settings → Discovery
- Disable resource types you don't want managed
- Re-sync providers
Asset Status
| Status | Description | Can Start? | Can Stop? |
|---|---|---|---|
running | Resource is active | - | Yes |
stopped | Resource is off | Yes | - |
starting | Resource is booting | - | Yes |
stopping | Resource is shutting down | - | - |
terminated | Resource was deleted | - | - |
error | Last operation failed | Retry | Retry |
unknown | Status check failed | Retry | Retry |
Manageability
Not all discovered resources can be managed by NightOps.
Manageable
Resources that support stop/start operations:
- Most EC2 instances
- RDS instances (with caveats)
- ECS services
- Standard VMs
Not Manageable
Resources that cannot be stopped:
- Spot instances (will terminate instead of stop)
- RDS Multi-AZ with read replicas in some configurations
- AKS system node pools
- Resources protected by deletion protection
NightOps marks these as is_manageable: false and won't attempt to control them.
Cost Estimation
NightOps estimates costs using:
- On-Demand Pricing — Current public on-demand rates
- Instance Specs — CPU, memory, storage
- Region — Prices vary by region
- Hours/Month — Based on 730 hours/month
Accuracy
Cost estimates are approximate and may differ from actual bills due to:
- Reserved instances or savings plans
- Spot pricing
- Data transfer costs
- Storage I/O costs
- Support costs
Use estimates for relative comparisons, not exact billing predictions.
Sync Errors
"Rate Limited"
Cloud provider APIs have rate limits. NightOps automatically:
- Backs off when rate limited
- Retries with exponential delay
- Completes sync in multiple batches
"Access Denied"
Missing permissions for some resources:
- Check IAM/RBAC policy includes all required permissions
- Verify resource-level permissions if using tag-based access
- Re-deploy CloudFormation/Terraform with updated policy
"Timeout"
Large accounts may timeout during initial sync:
- Limit regions to reduce scope
- Wait for automatic retry
- Contact support if persistent
Manual Asset Creation
For resources not auto-discovered (like SSH servers):
- Go to Infrastructure → Add Asset
- Select Custom SSH or other manual type
- Enter connection details:
host: 192.168.1.100
port: 22
username: admin - Define start/stop commands:
start_command: "sudo systemctl start myapp"
stop_command: "sudo systemctl stop myapp"
status_command: "systemctl is-active myapp" - Save the asset
Best Practices
Tag Everything
Add consistent tags to your cloud resources:
# AWS
nightops-managed: "true"
nightops-environment: staging
nightops-collection: web-tier
# GCP (labels)
nightops-managed: true
nightops-environment: staging
# Azure
nightops-managed: true
nightops-environment: staging
Regular Syncs
- Sync after deploying new infrastructure
- Sync after changing resource tags
- Sync after modifying provider permissions
Clean Up Terminated
NightOps automatically removes terminated resources after 24 hours. To remove immediately:
- Go to Infrastructure
- Filter by Status: Terminated
- Select and Delete the assets
Next Steps
- Create collections — Group your assets
- Set up schedules — Automate on/off times
- Add team members — Invite your team