{"id":29132288,"url":"https://github.com/expediagroup/c3vis","last_synced_at":"2025-10-07T16:04:35.652Z","repository":{"id":36205568,"uuid":"40509817","full_name":"ExpediaGroup/c3vis","owner":"ExpediaGroup","description":"Visualize the resource utilisation of Amazon ECS clusters","archived":false,"fork":false,"pushed_at":"2024-03-05T05:13:30.000Z","size":973,"stargazers_count":164,"open_issues_count":11,"forks_count":25,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-09-10T22:42:16.848Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ExpediaGroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-08-10T22:48:16.000Z","updated_at":"2025-06-03T18:41:28.000Z","dependencies_parsed_at":"2023-01-16T23:46:17.472Z","dependency_job_id":"c6397a5c-f2f2-4188-8dad-e0ee6a01496a","html_url":"https://github.com/ExpediaGroup/c3vis","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/ExpediaGroup/c3vis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpediaGroup%2Fc3vis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpediaGroup%2Fc3vis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpediaGroup%2Fc3vis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpediaGroup%2Fc3vis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ExpediaGroup","download_url":"https://codeload.github.com/ExpediaGroup/c3vis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpediaGroup%2Fc3vis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278802803,"owners_count":26048567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-30T06:39:02.861Z","updated_at":"2025-10-07T16:04:35.647Z","avatar_url":"https://github.com/ExpediaGroup.png","language":"JavaScript","readme":"# c3vis - Cloud Container Cluster Visualizer\n\nHelps visualize the resource reservation of Amazon ECS clusters.\n\nDeploying software as “containers” promises to solve many problems with regards to interoperability of environments, speed to deploy, and cost reduction.\nBut understanding where our software lives now becomes more difficult both for development and operations teams.\nThis is due to the fact that it is quite laborious to find the information indicating where the software is now located and the quantity of resources still available for more software.\nSeveral ECS console screens must be viewed, and the amount of time required to process this information grows with the amount of software deployed.\n \nThe Cloud Container Cluster Visualizer (c3vis) aims to give administrators and teams one place to gain rapid insight into the state of where the containers are running and the capacity available for more containers.\n\n![alt tag](docs/graph.png)\n\nThe visualization displays the EC2 instances in the selected cluster as vertical bars.  The Tasks allocated to the instances are represented as stacked boxes indicating their reserved memory or CPU.\nEach unique Task Definition is represented as a different color, with the legend showing the Task Family name and revision number.\nEach Task will contain one or more containers, the task box shows accumulated reserved memory or CPU for all containers in the Task. ECS Services are not currently represented.\n\n\n## Configuration\n\nSee [CONFIGURATION](docs/CONFIGURATION.md) for details on server-side configurable options that affect cache entry TTL and AWS API call throttling.\n\n## Configuring AWS SDK\n\nSee [AWS_SDK_CONFIGURATION](docs/AWS_SDK_CONFIGURATION.md) for instructions \non configuring the AWS SDK for server-side AWS connectivity.\n\n## Requirements\n\nNode \u003e= 0.12\n\n## Building and Running\n\nThe c3vis server is based on ExpressJS. The client predominantly uses D3.js, \njQuery and Bootstrap.\n\nRun the following to build and run the server (\"package.json\" contains instructions to pre-install required node modules):\n\n```\nnpm start\n```\n\nNow browse to the app at `http://localhost:3000`.\n\n## Testing\n\nTo run the server-side unit test suite with mocha and chai:\n \n```\nnpm run test\n```\n\n## Usage\n\n### Approach\n\nWhen a client browser first connects to the c3vis server, the Cluster dropdown will be populated with ECS cluster names for the configured region.\n\nSelect from the dropdown to view the resources allocated to that cluster. If no cluster names appear in the dropdown, check the server logs and ensure the correct region is configured (see below).\n\nThe list of clusters and the user's current selection are stored in cookies. Use the ```[refresh list]``` dropdown entry to refresh the list of clusters.\n\nThe Y axis shows total memory or CPU available for the instances. Memory is the default resource type represented. Use the \"resourceType\" query parameter to toggle between \"memory\" and \"cpu\".  E.g. ```localhost:3000/?resourceType=cpu```\n\nThe X axis displays the Private IP Address for each EC2 instance. Right-clicking the IP address shows the context menu with links to browse the instance in the ECS and EC2 consoles.\n\n### AWS API Call Throttling\n\nIn order to prevent AWS API Rate limiting issues for large clusters, the server:\n\n* Introduces a delay between API calls (configurable via `aws.apiDelay` setting)\n* Limits the number of items retrieved per page in `list` and `describe` API calls (configurable via `aws.*PageSize`)\n* Limits the number of asynchronous API calls it makes at a time (configurable via `aws.maxSimultaneous*Calls`)\n\nYou can increase or decrease each of these settings to suit each environment c3vis is deployed to.\n\n### Short Polling, Server-Side Caching and Fetch Status\n\nFor each cluster requested, the server caches cluster data in-memory while the client polls the server until the cache is populated.\n\nFor an explanation on how the client polls the server for cluster data and the applicable fetch statuses, see [SHORT_POLLING_FETCH_STATUS](docs/SHORT_POLLING_FETCH_STATUS.md).\n\n\n## Debugging\n\n### Sample Clusters for Testing\n\nFrom the browser, use a ```\"?static=true\"``` query parameter to have the server return static test data. Useful for testing when server is unable to connect to AWS.\n\nBrowse to `http://localhost:3000/?static=true`.\n\n### Server Debug Logging\n\nTo see all debug log entries:\n\n```\nDEBUG=* npm start\n```\n\nTo see just API debug log entries:\n\n```\nDEBUG=api npm start\n```\n\n## Running with Docker\n\nBuild and tag the image:\n\n```\ndocker build -t c3vis .\n```\n\nRun the container: (can remove ```AWS_ACCESS_KEY_ID``` and ```AWS_SECRET_ACCESS_KEY``` if deployed somewhere with appropriate IAM access)\n\n```\ndocker run -e \"AWS_REGION=\u003cregion\u003e\" -e \"AWS_ACCESS_KEY_ID=\u003caccesskey\u003e\" -e \"AWS_SECRET_ACCESS_KEY=\u003csecretkey\u003e\" -p 3000:3000 c3vis\n```\n\nE.g. To run with `prod` target environment configuration:\n\n```\ndocker run -e \"TARGET_ENV=prod\" -p 3000:3000 c3vis\n```\n\n\nBrowse to [http://localhost:3000](http://localhost:3000)\n\n\n# Credits\n\nCreated by [Matt Callanan](https://github.com/mattcallanan) with contributions from [Mark Malone](https://github.com/malonem) and with thanks to internal Expedia reviewers for their suggestions and advice.\n\n\n# Legal\n\nThis project is available under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0.html).\n\nCopyright 2018 Expedia Inc.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpediagroup%2Fc3vis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpediagroup%2Fc3vis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpediagroup%2Fc3vis/lists"}