Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/UpHabit/bull_exporter
Prometheus exporter for Bull metrics
https://github.com/UpHabit/bull_exporter
bull hacktoberfest metrics prometheus-exporter queue
Last synced: 11 days ago
JSON representation
Prometheus exporter for Bull metrics
- Host: GitHub
- URL: https://github.com/UpHabit/bull_exporter
- Owner: UpHabit
- License: mit
- Created: 2018-10-11T19:06:16.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-05-28T08:38:26.000Z (6 months ago)
- Last Synced: 2024-05-28T21:34:58.993Z (6 months ago)
- Topics: bull, hacktoberfest, metrics, prometheus-exporter, queue
- Language: TypeScript
- Homepage:
- Size: 1.53 MB
- Stars: 263
- Watchers: 3
- Forks: 61
- Open Issues: 50
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Bull Queue Exporter
**Prometheus exporter for Bull metrics.**
___
## UI
![Grafana Dashboard](./docs/img/grafana-1.png)## Setup
#### Prometheus
**An existing prometheus server is required to use this project**To learn more about how to setup promethues and grafana see: https://eksworkshop.com/monitoring/
#### Grafana
The dashboard pictured above is [available to download from grafana](https://grafana.com/grafana/dashboards/10128).
It will work aslong as EXPORTER_STAT_PREFIX is not changed.## Queue Discovery
Queues are discovered at start up by running `KEYS bull:*:id`
this can also be triggered manually from the `/discover_queues` endpoint
`curl -XPOST localhost:9538/discover_queues`## Metrics
| Metric | type | description |
|------------------------------|---------|-------------|
| bull_queue_completed | counter | Total number of completed jobs |
| bull_queue_complete_duration | summary | Processing time for completed jobs |
| bull_queue_active | counter | Total number of active jobs (currently being processed) |
| bull_queue_delayed | counter | Total number of jobs that will run in the future |
| bull_queue_failed | counter | Total number of failed jobs |
| bull_queue_waiting | counter | Total number of jobs waiting to be processed |## Kubernetes Usage
### Environment variables for default docker image
| variable | default | description |
|-----------------------|--------------------------|-------------------------------------------------|
| EXPORTER_REDIS_URL | redis://localhost:6379/0 | Redis uri to connect |
| EXPORTER_PREFIX | bull | prefix for queues |
| EXPORTER_STAT_PREFIX | bull_queue_ | prefix for exported metrics |
| EXPORTER_QUEUES | - | a space separated list of queues to check |
| EXPORTER_AUTODISCOVER | - | set to '0' or 'false' to disable queue discovery|### Example deployment
see: [k8s-sample.yaml](./docs/k8s-sample.yaml) for more options
```yaml
apiVersion: apps/v1kind: Deployment
metadata:
name: bull-exporter
labels:
app: bull
role: exporterspec:
selector:
matchLabels:
app: bull
role: exporter
replicas: 1
template:
metadata:
labels:
app: bull
role: exporter
spec:
containers:
- name: bull-exporter
image: uphabit/bull_exporter:latest
securityContext:
runAsGroup: 65534 # nobody
runAsUser: 65534 # nobody
runAsNonRoot: true
privileged: false
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- all
resources:
requests:
cpu: 100m
memory: 128M
limits:
cpu: 200m
memory: 512M
env:
# space delimited list of queues
- name: EXPORTER_QUEUES
value: "mail job_one video audio"# find the redis service in the cluster
- name: EXPORTER_REDIS_URL
value: redis://redis:6379/0
---
apiVersion: v1
kind: Service
metadata:
name: bull-exporter
labels:
app: bull
role: exporter
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '9538'
spec:
type: ClusterIP
ports:
- name: http
port: 9538
targetPort: 9538
selector:
app: bull
role: exporter```