[![Crates][crates-io]][crates-io-url] [![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![LinkedIn][linkedin-shield]][linkedin-url]

CINC-Server Exporter

A prometheus exporter for CINC Server and CINC compatible configuration management solutions.
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments
## About The Project While working at my current gig I found we were lacking some metrics to gain a deeper visibility in to our infrastructure. I built this exporter to fill some of those gaps.

(back to top)

## Getting Started This project assumes you have cinc-server installed with the default database settings. ### Installation 1. Switch to the database user ```sh sudo su - opscode-pgsql ``` 2. pull latest release ```sh wget # automated builds/releases coming soon ``` 3. run the service ```sh ./cinc_server_exporter ``` 4. test ```sh curl http://localhost:9165/metrics ```

(back to top)

### Development Setup #### Recommended prerequesites - nix - devenv.sh - direnv #### Building and running 1. Pull latest code ```sh git clone https://github.com/esoterick/cinc_server_exporter.git ``` 2. Enter project directory ```sh cd cinc_server_exporter ``` 3. Allow direnv and let nix to do it's thing ```sh devenv init ``` 4. Update .envrc with any configuration options, most importantly the host= string should be set to the current working directory of the repo plus `.devenv/state/postgres` which is the default location of where devenv stores the test postgres instance data. ``` export CINC_SERVER_EXPORTER_CONN_STRING="host=$(pwd)/.devenv/state/postgres user=rlambert dbname=opscode_chef" export CINC_SERVER_EXPORTER_INTERVAL="15" ``` 5. Allow updated direnv ``` direnv allow . ``` 6. Run test database ``` devenv up ``` 7. Import Test Data ```sh createdb opscode_chef psql -U rlambert -d opscode_chef -f test/data/nodes.sql ``` 8. Run exporter ```sh cargo run ``` 9. Scrape ```sh curl http://localhost:9165/metrics ```

(back to top)

## Usage ### Configuration There are a handful of options to configure the exporter which is done via the following environment variables. - `CINC_SERVER_EXPORTER_CONN_STRING` - Postgres connection string to the CINC database. default: `host=localhost user=opscode-pgsql dbname=opscode_chef` - `CINC_SERVER_EXPORTER_INTERVAL` - Interval to scrape the database in seconds. default: `15` - `CINC_SERVER_EXPORTER_LISTEN_ADDR` - Listen address for the exporter. default: `0.0.0.0` - `CINC_SERVER_EXPORTER_LISTEN_PORT` - Listen TCP port for the exporter. default: `9164`

(back to top)

### Available Metrics Current list of available exported metrics **Exporter Level** - `cinc_server_exporter_last_updated` - THe UNIX timestamp of the last cache update for the cinc_server_exporter **Server Level** - `cinc_server_node_count` - The count of all the nodes stored on the cinc_server **Node Level** - `cinc_server_node_last_updated` - Per node, the UNIX timestamp of the last node update **Axum** - `axum_http_requests_duration_seconds_bucket` - `axum_http_requests_duration_seconds_count` - `axum_http_requests_duration_seconds_sum` - `axum_http_requests_pending` - `axum_http_requests_total` ## Roadmap - [x] Add changelog - [x] Add test data - [ ] Add tests - [x] Document configuration options - [ ] Add automated builds - [ ] Add release url to docs See the [open issues](https://github.com/esoterick/cinc_server_exporter/issues) for a full list of proposed features (and known issues).

(back to top)

## Contributing 1. Fork the Project 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 4. Push to the Branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request

(back to top)

## License Distributed under the MIT License. See `LICENSE` for more information.

(back to top)

## Contact Robert J. Lambert III - robert.j.lambert@pm.me Project Link: [https://github.com/esoterick/cinc_server_exporter](https://github.com/esoterick/cinc_server_exporter)

(back to top)

## Acknowledgments - [Rust](https://www.rust-lang.org/) - [CINC](https://cinc.sh/) - [Nix](https://nixos.org/) - [devenv](https://devenv.sh/) - [Best-README-Template](https://github.com/othneildrew/Best-README-Template)

(back to top)

[contributors-shield]: https://img.shields.io/github/contributors/esoterick/cinc_server_exporter.svg?style=for-the-badge [contributors-url]: https://github.com/esoterick/cinc_server_exporter/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/esoterick/cinc_server_exporter.svg?style=for-the-badge [forks-url]: https://github.com/esoterick/cinc_server_exporter/network/members [stars-shield]: https://img.shields.io/github/stars/esoterick/cinc_server_exporter.svg?style=for-the-badge [stars-url]: https://github.com/esoterick/cinc_server_exporter/stargazers [issues-shield]: https://img.shields.io/github/issues/esoterick/cinc_server_exporter.svg?style=for-the-badge [issues-url]: https://github.com/esoterick/cinc_server_exporter/issues [license-shield]: https://img.shields.io/github/license/esoterick/cinc_server_exporter.svg?style=for-the-badge [license-url]: https://github.com/esoterick/cinc_server_exporter/blob/master/LICENSE.txt [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 [linkedin-url]: https://linkedin.com/in/rlambert [crates-io]: https://img.shields.io/crates/dv/cinc_server_exporter/0.1.0?style=for-the-badge [crates-io-url]: https://crates.io/crates/cinc_server_exporter