https://github.com/gojek/darkroom
https://github.com/gojek/darkroom
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/gojek/darkroom
- Owner: gojek
- License: mit
- Created: 2019-07-01T10:17:08.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-05T10:19:49.000Z (12 months ago)
- Last Synced: 2024-12-05T10:36:47.410Z (12 months ago)
- Language: Go
- Homepage: https://www.gojek.io/darkroom/
- Size: 3.66 MB
- Stars: 226
- Watchers: 11
- Forks: 41
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go-cn - darkroom
- awesome-go-cn - darkroom
- awesome-go - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Search and Analytic Databases)
- awesome-go - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Search and Analytic Databases)
- fucking-awesome-go - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Search and Analytic Databases)
- awesome-go - gojek/darkroom
- awesome-go-plus - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency.  (Images / Search and Analytic Databases)
- awesome-go - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Search and Analytic Databases)
- awesome-go - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Advanced Console UIs)
- awesome-go-cn - darkroom
- awesome-go - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Search and Analytic Databases)
- awesome-go-extra - darkroom - 07-01T10:17:08Z|2022-04-16T21:41:01Z| (Images / Advanced Console UIs)
- awesome-go-with-stars - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Search and Analytic Databases)
- awesome-go - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Search and Analytic Databases)
- awesome-Char - darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. (Images / Advanced Console UIs)
README
# Darkroom - Yet Another Image Proxy

[](https://travis-ci.com/gojek/darkroom)
[](https://coveralls.io/github/gojek/darkroom?branch=master)
[](https://gojek.github.io/darkroom/)
[](https://godoc.org/github.com/gojek/darkroom)
[](https://goreportcard.com/report/github.com/gojek/darkroom)
[](https://golangci.com)
[](https://github.com/gojek/darkroom/releases)
[](https://github.com/avelino/awesome-go)
## Introduction
[Darkroom](https://gojek.github.io/darkroom/) combines the [storage backend](pkg/storage) and the [image processor](pkg/processor) and acts as an `Image Proxy` on your image source.
You may [implement](https://gojek.github.io/darkroom/docs/customization#custom-storage-example) your own `Storage` and `Processor` interfaces to gain custom functionality while still keeping other Darkroom Server functionality.
The native implementations focus on speed and resiliency.
## Features
Darkroom supports several image operations which are documented [here](https://gojek.github.io/darkroom/docs/usage/size).
## Installation
```bash
go get -u github.com/gojek/darkroom
```
Other ways to run can be found [here](https://gojek.github.io/darkroom/docs/getting-started#running-the-image-proxy-service).
## Metrics Support
Darkroom supports Prometheus and StatsD for tracking and monitoring metrics.
You need to specify the metrics system by adding an environment variable, `METRICS_SYSTEM=prometheus/statsd`
### Prometheus
The application exposes the metrics at "http:///metrics" endpoint. Since it's a pull based system, Prometheus server that is set up from docker-compose scrapes metrics from the application endpoint and its configuration can be changed in prometheus.yml.
### StatsD
In order to use StatsD as your metrics system, you also need to add the following env variables,
```
METRICS_STATSD_STATSDADDR=hostname:port
METRICS_STATSD_PREFIX=client-prefix
METRICS_STATSD_SAMPLERATE=sample-rate
METRICS_STATSD_FLUSHBYTES=flushbytes
```
These are used to set up the StatsD client.
### Grafana
Darkroom currently supports grafana provisioning for Prometheus based metrics.
Grafana is preconfigured with dashboards and Prometheus as the default data source:
* Name: Prometheus
* Type: Prometheus
* Url: http://prometheus:9090
* Access: proxy
Visualization of Darkroom metrics(prometheus) on Grafana:

### Contributing Guide
Read our [contributing guide](./CONTRIBUTING.md) to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to Darkroom.
## License
Darkroom is [MIT licensed](./LICENSE).