https://github.com/form3tech-oss/ecs-exporter
Export AWS ECS cluster metrics to Prometheus
https://github.com/form3tech-oss/ecs-exporter
Last synced: 5 months ago
JSON representation
Export AWS ECS cluster metrics to Prometheus
- Host: GitHub
- URL: https://github.com/form3tech-oss/ecs-exporter
- Owner: form3tech-oss
- License: apache-2.0
- Archived: true
- Fork: true (slok/ecs-exporter)
- Created: 2020-07-24T13:01:26.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-04-13T09:56:53.000Z (about 3 years ago)
- Last Synced: 2025-04-12T07:03:33.702Z (about 1 year ago)
- Language: Go
- Homepage:
- Size: 9.48 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
## This repository is not maintained anymore. It's stable and works as it is, it will not have new features or metrics.
# ECS exporter 
Export AWS ECS cluster metrics to Prometheus
```bash
make
./bin/ecs-exporter --aws.region="${AWS_REGION}"
```
## Notes:
- This exporter will listen by default on the port `9222`
- Requires AWS credentials or permission from an EC2 instance
- You can use the following IAM policy to grant required permissions:
```
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"ecs:ListServices",
"ecs:ListContainerInstances",
"ecs:ListClusters",
"ecs:DescribeServices",
"ecs:DescribeContainerInstances",
"ecs:DescribeClusters",
"ec2:DescribeInstances"
],
"Resource": "*"
}
]
}
```
## Exported Metrics
| Metric | Meaning | Labels |
|----------------------------------------|---------------------------------------------------------------------------------------------------------------|-----------------------------------------------------|
| ecs_up | Was the last query of ecs successful | region |
| ecs_clusters | The total number of clusters | region |
| ecs_services | The total number of services | region, cluster |
| ecs_service_desired_tasks | The desired number of instantiations of the task definition to keep running regarding a service | region, cluster, service |
| ecs_service_pending_tasks | The number of tasks in the cluster that are in the PENDING state regarding a service | region, cluster, service |
| ecs_service_running_tasks | The number of tasks in the cluster that are in the RUNNING state regarding a service | region, cluster, service |
| ecs_container_instances | The total number of container instances | region, cluster |
| ecs_container_instance_agent_connected | The connected state of the container instance agent | region, cluster, instance |
| ecs_container_instance_active | The status of the container instance in ACTIVE state, indicates that the container instance can accept tasks. | region, cluster, instance |
| ecs_container_instance_pending_tasks | The number of tasks on the container instance that are in the PENDING status. | region, cluster, instance |
| ecs_deployment_rollout_state | Rollout status of an ECS service deployment (one of 'IN_PROGRESS', 'COMPLETED', or 'FAILED') | region, cluster, service, deployment, rollout_state |
| ecs_deployment_desired_tasks | Desired number of tasks an ECS service deployment is trying to reach | region, cluster, service, deployment |
| ecs_deployment_pending_tasks | Number of pending tasks an ECS service deployment is having | region, cluster, service, deployment |
| ecs_deployment_running_tasks | Number of running tasks an ECS service deployment is having | region, cluster, service, deployment |
| ecs_deployment_failed_tasks | The number of consecutively failed tasks of a service regarding a deployment | region, cluster, service, deployment |
| ecs_container_instance_info | Information about a container instance joined to the cluster | region, cluster, instance, ami_id, status |
## Flags
- `aws.region`: The AWS region to get metrics from
- `aws.cluster-filter`: Regex used to filter the cluster names, if doesn't match the cluster is ignored (default ".\*")
- `debug`: Run exporter in debug mode
- `web.listen-address`: Address to listen on (default ":9222")
- `web.telemetry-path`: The path where metrics will be exposed (default "/metrics")
- `metrics.disable-cinstances`: Disable clusters container instances metrics gathering
## Docker
You can deploy this exporter using the [slok/ecs-exporter](https://hub.docker.com/r/slok/ecs-exporter/) Docker image.
Note: Requires AWS credentials or permission from an EC2 instance, for example you can pass the env vars using `-e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} -e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}` options
For example:
```bash
docker pull slok/ecs-exporter
docker run -d -p 9222:9222 slok/ecs-exporter -aws.region="eu-west-1"
```