add readme
This commit is contained in:
@@ -1,2 +1,90 @@
|
|||||||
# docker_state_exporter
|
# Docker State Exporter
|
||||||
|
|
||||||
Exporter for docker container state
|
Exporter for docker container state
|
||||||
|
|
||||||
|
Prometheus exporter for docker container state, written in Go.
|
||||||
|
|
||||||
|
One of the best known exporters of docker container information is [cAdvisor](https://github.com/google/cadvisor).\
|
||||||
|
However, cAdvisor does not export the state of the container.
|
||||||
|
|
||||||
|
This exporter will only export the container status and the restarts count.
|
||||||
|
|
||||||
|
## Installation and Usage
|
||||||
|
|
||||||
|
The `docker_state_exporter` listens on HTTP port 8080 by default.
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
For Docker run.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker run -d \
|
||||||
|
-v "/var/run/docker.sock:/var/run/docker.sock" \
|
||||||
|
-p 8080:8080 \
|
||||||
|
karugaru/docker_state_exporter \
|
||||||
|
-listen-address=:8080
|
||||||
|
```
|
||||||
|
|
||||||
|
For Docker compose.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
docker_state_exporter:
|
||||||
|
image: karugaru/docker_state_exporter
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /var/run/docker.sock
|
||||||
|
target: /var/run/docker.sock
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Metrics
|
||||||
|
|
||||||
|
This exporter will export the following metrics.
|
||||||
|
|
||||||
|
- container_state_health_status
|
||||||
|
- container_state_status
|
||||||
|
- container_state_oomkilled
|
||||||
|
- container_state_startedat
|
||||||
|
- container_state_finishedat
|
||||||
|
- container_restartcount
|
||||||
|
|
||||||
|
These metrics will be the same as the results of docker inspect.
|
||||||
|
|
||||||
|
This exporter also exports the standard
|
||||||
|
[Go Collector](https://pkg.go.dev/github.com/prometheus/client_golang/prometheus#NewGoCollector)
|
||||||
|
and [Process Collector](https://pkg.go.dev/github.com/prometheus/client_golang/prometheus#NewProcessCollector).
|
||||||
|
|
||||||
|
## Caution
|
||||||
|
|
||||||
|
This exporter will do a docker inspect every time prometheus pulls.\
|
||||||
|
If a large number of requests are made, there will be performance issues. (I think. Not verified.)\
|
||||||
|
So, this app caches the result of docker inspect for 1 second.
|
||||||
|
So, please note that if you set the scrape_interval of prometheus to less than one second, you may get the same result back.
|
||||||
|
|
||||||
|
## Development building and running
|
||||||
|
|
||||||
|
I am running this application on Docker (linux/amd64).
|
||||||
|
I have not tested it in any other environment.
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/karugaru/docker_state_exporter
|
||||||
|
cd docker_state_exporter
|
||||||
|
sudo docker build -t docker_state_exporter_test .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker run -d \
|
||||||
|
-v "/var/run/docker.sock:/var/run/docker.sock" \
|
||||||
|
-p 8080:8080 \
|
||||||
|
docker_state_exporter_test \
|
||||||
|
-listen-address=:8080
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user