{"id":49251580,"url":"https://github.com/not-empty/druid-exporter","last_synced_at":"2026-04-25T00:41:46.460Z","repository":{"id":196089046,"uuid":"688094091","full_name":"not-empty/druid-exporter","owner":"not-empty","description":"Druid Exporter plays a fundamental role as a receiver of metrics events coming from Druid clusters, adopting the HTTP format as a means of communication. In addition to this capability, its primary function is to export these metrics to Prometheus, thus allowing the creation of meaningful graphs and visualizations.","archived":false,"fork":false,"pushed_at":"2024-05-10T10:12:16.000Z","size":417,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-12T05:36:55.060Z","etag":null,"topics":["apache-druid","druid","grafana","prometheus","prometheus-exporter","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/not-empty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-06T16:30:51.000Z","updated_at":"2024-12-19T10:54:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"cd44262d-ba0a-45ba-a9f6-08be9ddc1465","html_url":"https://github.com/not-empty/druid-exporter","commit_stats":{"total_commits":5,"total_committers":2,"mean_commits":2.5,"dds":"0.19999999999999996","last_synced_commit":"eafc6982e76ea543f7dab61499d4b91f514a83c2"},"previous_names":["kiwfy/druid_exporter","not-empty/druid-exporter"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/not-empty/druid-exporter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/not-empty%2Fdruid-exporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/not-empty%2Fdruid-exporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/not-empty%2Fdruid-exporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/not-empty%2Fdruid-exporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/not-empty","download_url":"https://codeload.github.com/not-empty/druid-exporter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/not-empty%2Fdruid-exporter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32246405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["apache-druid","druid","grafana","prometheus","prometheus-exporter","rust"],"created_at":"2026-04-25T00:41:45.780Z","updated_at":"2026-04-25T00:41:46.449Z","avatar_url":"https://github.com/not-empty.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Druid Exporter\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/kiwfy/druid_exporter.svg?style=flat-square\u0026color=29F1FB\u0026labelColor=22272E\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Welcome-29C68F?style=flat-square\u0026label=PRs\u0026labelColor=22272E\u0026logo=git\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Rust-000000.svg?style=flat-square\u0026logo=Rust\u0026logoColor=white\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Apache%20Druid-29F1FB.svg?style=flat-square\u0026logo=Apache-Druid\u0026logoColor=black\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Docker-2496ED.svg?style=flat-square\u0026logo=Docker\u0026logoColor=white\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Prometheus-E6522C.svg?style=flat-square\u0026logo=Prometheus\u0026logoColor=white\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Grafana-F46800.svg?style=flat-square\u0026logo=Grafana\u0026logoColor=white\"\u003e\n\u003c/p\u003e\n\n\n```\n            ...................                                  ....................\n           ~YYYYYYYYYYYYYYYYYYYYJ?~.                        .^7JYYYYYYYYYYYYYYYYYYYY7\n                            ...:~7Y5J^                    :?5Y?~:...\n                                   :?PJ.       .^:       7PJ^\n?YYYY?. ^YYYYYYYYYYYYYYYYYYYJ?~.     ^P5.      !GJ      JG!      ~7JYYYYYYYYYYYYYYYYYYY!  7YYYYJ.\n.:::::  .:::::::::::::::::::^!YP7     ~GJ      !GJ     !G?     ~557~:::::::::::::::::::.  .:::::\n                               ?G7    .P5.     !GJ     JG^    ^GY.\n              ~YYYYYYYYYYYYYYYYYGPYYYYYPPYYYYYY5GPYYYYYPG5YYYYPG5YYYYYYYYYYYYYYYYY7\n              .::::::::::::::::YG7::::7G?::::::7GY:::::!GJ::::~G5^::::::::::::::::.\n                             .?G?    .5P.      !GJ      YP:    !PY:\n      :::::::::::::::::::^^!J5Y~    .YP^       !GJ      .5P^    :JPY7~^:::::::::::::::::::\n     .?YYYYYYYYYYYYYYYYYYJJ?!:    .!P5:        :?~       .JP?.    .~7JJYYYYYYYYYYYYYYYYYYJ:\n                                :755!                      ~YP?^.\n             ....    .....::~!J55J~                          ^?55J7~^:.....    ....\n            !YYYYJ. ^YYYYYYYJ?!^.                               :~7JYYYYYYY!  7YYYY?\n             .....   .....                                            ......  ......\n     ________________________________________________________________________________________\n    /                                                                                        \\\n    |                                                                                        |\n    |        ▗▄▄              █     ▗▖     ▗▄▄▄▖                                             |\n    |        ▐▛▀█             ▀     ▐▌     ▐▛▀▀▘                     ▐▌                      |\n    |        ▐▌ ▐▌ █▟█▌▐▌ ▐▌ ██   ▟█▟▌     ▐▌   ▝█ █▘▐▙█▙  ▟█▙  █▟█▌▐███  ▟█▙  █▟█▌          |\n    |        ▐▌ ▐▌ █▘  ▐▌ ▐▌  █  ▐▛ ▜▌     ▐███  ▐█▌ ▐▛ ▜▌▐▛ ▜▌ █▘   ▐▌  ▐▙▄▟▌ █▘            |\n    |        ▐▌ ▐▌ █   ▐▌ ▐▌  █  ▐▌ ▐▌     ▐▌    ▗█▖ ▐▌ ▐▌▐▌ ▐▌ █    ▐▌  ▐▛▀▀▘ █             |\n    |        ▐▙▄█  █   ▐▙▄█▌▗▄█▄▖▝█▄█▌     ▐▙▄▄▖ ▟▀▙ ▐█▄█▘▝█▄█▘ █    ▐▙▄ ▝█▄▄▌ █             |\n    |        ▝▀▀   ▀    ▀▀▝▘▝▀▀▀▘ ▝▀▝▘     ▝▀▀▀▘▝▀ ▀▘▐▌▀▘  ▝▀▘  ▀     ▀▀  ▝▀▀  ▀             |\n    |                                                ▐▌                                      |\n    |                                                                                        |\n    \\________________________________________________________________________________________/\n```\n\nDruid Exporter plays a fundamental role as a receiver of metrics events coming from Druid clusters, adopting the HTTP format as a means of communication. In addition to this capability, its primary function is to export these metrics to Prometheus, thus allowing the creation of meaningful graphs and visualizations.\n\nThe Project is entirely made in Rust with the Actix-web framework to provide maximum performance in receiving and delivering metrics for a large flow of requests.\n\n\u003cdiv\u003e\n    \u003ckbd\u003e\n        \u003cimg src=\"static/img1.png\"/\u003e\n    \u003c/kbd\u003e\n    \u003ckbd\u003e\n        \u003cimg src=\"static/img2.png\" /\u003e\n    \u003c/kbd\u003e\n\u003c/div\u003e\n\n\n### Installation\n\nRequires Docker\n\nPlease create ```.env``` file from ```.env.example``` and fill in all keys\n\nIn ```.env``` file, you can enable the dispatcher by setting the value of the ```DISPATCHERS``` key. he available values are ```prometheus``` and ```cloudwatch```, and you can specify one or both (separated by commas). This setting is optional, with the default value being ```prometheus```.\n\nIt's optional, but you can filter events that will be sent to the dispatcher by configuring the ```expo.yaml``` file based on ```expo.yaml.example```. This allows you to ignore or allow specific events.\n\n```yaml\nignore:\n    - event-1\n\nallowed:\n    - event-1\n    - event-2\n    - event-4\n```\n\nAll events will start with ```druid_expo_```, followed by the [Druid Metric](https://druid.apache.org/docs/latest/operations/metrics/), where ```/``` is replaced with ```_```. For example:\n\n```\nsys/mem/free -\u003e druid_expo_sys_mem_free\n```\n\nIn Apache Druid edit ```_common/common.runtime.properties``` change ```druid.emitter``` to ```http``` and add ```druid.emitter.http.recipientBaseUrl``` with Druid Exporter URL plus this path ```/druid``` and ```druid.emitter.logging.logLevel``` with value ```info```, like this:\n\n```java\n#\n# Monitoring\n#\n\ndruid.monitoring.monitors=[\"org.apache.druid.java.util.metrics.OshiSysMonitor\", \"org.apache.druid.java.util.metrics.JvmMonitor\"]\ndruid.emitter=http\ndruid.emitter.http.recipientBaseUrl=http://localhost:7080/druid\ndruid.emitter.logging.logLevel=info\n```\n\nIn Historical nodes we recommend to use this value in ```druid.monitoring.monitors```\n\n```java\ndruid.monitoring.monitors=[\"org.apache.druid.server.metrics.HistoricalMetricsMonitor\", \"org.apache.druid.server.metrics.QueryCountStatsMonitor\", \"org.apache.druid.java.util.metrics.OshiSysMonitor\", \"org.apache.druid.java.util.metrics.JvmMonitor\"]\n```\n\nAnd in brokers and router nodes we recommend to use this value in ```druid.monitoring.monitors```\n\n```java\ndruid.monitoring.monitors=[\"org.apache.druid.server.metrics.QueryCountStatsMonitor\", \"org.apache.druid.java.util.metrics.OshiSysMonitor\", \"org.apache.druid.java.util.metrics.JvmMonitor\"]\n```\n\nFeel free to add more metrics to monitor, we recommend the above ones as they facilitate cluster scalability and monitoring aspects\n\n\u003e ℹ️ Please take a look at the Apache Druid emitter and metrics for more information and configurations [https://druid.apache.org/docs/latest/configuration/#http-emitter-module](https://druid.apache.org/docs/latest/configuration/#http-emitter-module)\n\n### Run\n\nIn development mode you can run the following command on your terminal:\n\n```bash\ndocker compose up\n```\n\nAfter the command is executed you can go to [http://localhost:3000](http://localhost:3000) and do login to Grafana with this credentials\n\n\u003e user: admin\n\u003e\n\u003e password: admin\n\n**Please in production mode change the user and password**\n\n| Port | Service |\n| - | - |\n| 3000 | Grafana |\n| 7080 | Druid Exporter |\n| 9090 | Prometheus |\n\nIn production mode you can build the Dockerfile located in the ```docker/prod``` folder, to build this you may run this command:\n\n```bash\ndocker build --target prod -t druid-exporter -f docker/prod/Dockerfile .\n```\n\n\u003e ⚠️ We recommend using Docker BuildKit for better build performance\n\nAfter executing the command, a docker image called ```druid-exporter``` will be created which will only contain the Docker Exporter project which will be available on **port 7080**\n\n### Development\n\nWant to contribute? Great!\n\nThe project using a simple code.\nMake a change in your file and be careful with your updates!\n**Any new code will only be accepted with all viladations.**\n\n\n**Not Empty Foundation - Free codes, full minds**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnot-empty%2Fdruid-exporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnot-empty%2Fdruid-exporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnot-empty%2Fdruid-exporter/lists"}