From 439c45f7a152630a6072b6c3c63fab9f6f1e422e Mon Sep 17 00:00:00 2001 From: nerves_dev Date: Tue, 9 Mar 2021 17:13:09 +0900 Subject: [PATCH] add readme --- README.md | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e5407f..e003844 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,90 @@ -# docker_state_exporter +# Docker State Exporter + 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 +```