├── .gitignore
├── conf
├── nginx
│ ├── www
│ │ └── index.html
│ └── nginx.conf
├── rabbit
│ ├── enabled_plugins
│ └── rabbitmq.conf
├── grafana
│ ├── dashboards.yml
│ ├── datasources.yml
│ └── dashboards
│ │ ├── PrometheusStats.json
│ │ └── SystemStatus.json
└── prometheus
│ └── prometheus.yml
├── .env-sample
├── README.md
├── start.sh
├── init-cert.sh
└── docker-compose.yml
/.gitignore:
--------------------------------------------------------------------------------
1 | conf/certbot
2 | data/*
3 | *.log
4 | .env
5 |
--------------------------------------------------------------------------------
/conf/nginx/www/index.html:
--------------------------------------------------------------------------------
1 |
Under construction
--------------------------------------------------------------------------------
/conf/rabbit/enabled_plugins:
--------------------------------------------------------------------------------
1 | [rabbitmq_management,rabbitmq_mqtt,rabbitmq_web_mqtt,rabbitmq_prometheus].
--------------------------------------------------------------------------------
/.env-sample:
--------------------------------------------------------------------------------
1 | INFLUXDB_ADMIN_USER=admin
2 | INFLUXDB_ADMIN_PASSWORD=admin
3 | INFLUXDB_DB=telegraf
4 |
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### rabbit-prometheus-influx-grafana
2 |
3 | # MQTT docker boilerplate: portainer, nginx, certbot, RabbitMQ, Grafana, Prometheus, Telegraf, InfluxDB
4 |
--------------------------------------------------------------------------------
/start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | export COMPOSE_HTTP_TIMEOUT=200
4 | sudo docker-compose pull
5 | sudo docker-compose build --no-cache
6 | sudo docker-compose down
7 | sudo docker-compose up -d --force-recreate
8 |
--------------------------------------------------------------------------------
/conf/grafana/dashboards.yml:
--------------------------------------------------------------------------------
1 | apiVersion: 1
2 |
3 | providers:
4 | - name: 'rabbitmq'
5 | orgId: 1
6 | folder: ''
7 | type: file
8 | disableDeletion: true
9 | options:
10 | path: /dashboards
11 |
--------------------------------------------------------------------------------
/conf/prometheus/prometheus.yml:
--------------------------------------------------------------------------------
1 | global:
2 | scrape_interval: 15s
3 | evaluation_interval: 15s
4 | external_labels:
5 | monitor: 'broker'
6 |
7 | scrape_configs:
8 | - job_name: 'nodeexporter'
9 | scrape_interval: 5s
10 | static_configs:
11 | - targets: ['node-exporter:9100']
12 |
13 | - job_name: 'prometheus'
14 | scrape_interval: 10s
15 | static_configs:
16 | - targets: ['prometheus:9090']
17 | labels:
18 | __metrics_path__: /manager/prometheus/metrics
19 |
20 | - job_name: 'rabbit'
21 | scrape_interval: 10s
22 | static_configs:
23 | - targets: ['rabbit:15692']
24 |
25 |
--------------------------------------------------------------------------------
/conf/rabbit/rabbitmq.conf:
--------------------------------------------------------------------------------
1 | log.default.level = debug
2 | log.console.level = debug
3 |
4 | loopback_users.guest = false
5 | listeners.tcp.default = 5672
6 | hipe_compile = false
7 |
8 | collect_statistics_interval = 10000
9 |
10 | listeners.ssl.default = 5671
11 | ssl_options.cacertfile = /etc/rabbitmq/certs/chain1.pem
12 | ssl_options.certfile = /etc/rabbitmq/certs/cert1.pem
13 | ssl_options.keyfile = /etc/rabbitmq/certs/privkey1.pem
14 | ssl_options.verify = verify_peer
15 | ssl_options.fail_if_no_peer_cert = false
16 | ssl_options.versions.1 = tlsv1.2
17 |
18 | mqtt.allow_anonymous = false
19 | mqtt.listeners.tcp.default = 1883
20 | mqtt.listeners.ssl.default = 8883
21 | mqtt.tcp_listen_options.keepalive = true
22 | mqtt.tcp_listen_options.nodelay = true
23 | mqtt.tcp_listen_options.exit_on_close = true
24 | mqtt.tcp_listen_options.send_timeout = 120
25 | mqtt.vhost = /
26 |
27 | mqtt.exchange = amq.topic
28 | # 24 hours by default
29 | mqtt.subscription_ttl = 86400000
30 | mqtt.prefetch = 10
31 |
32 | web_mqtt.ssl.port = 18883
33 | web_mqtt.ssl.backlog = 1024
34 | web_mqtt.ssl.cacertfile = /etc/rabbitmq/certs/chain1.pem
35 | web_mqtt.ssl.certfile = /etc/rabbitmq/certs/cert1.pem
36 | web_mqtt.ssl.keyfile = /etc/rabbitmq/certs/privkey1.pem
37 | web_mqtt.ssl.versions.1 = tlsv1.2
38 | web_mqtt.ssl.secure_renegotiate = true
39 |
40 | default_vhost = /
41 |
42 | management.tcp.port = 15672
43 |
--------------------------------------------------------------------------------
/conf/grafana/datasources.yml:
--------------------------------------------------------------------------------
1 | apiVersion: 1
2 |
3 | datasources:
4 | # name of the datasource. Required
5 | - name: prometheus
6 | # datasource type. Required
7 | type: prometheus
8 | # access mode. direct or proxy. Required
9 | access: proxy
10 | # org id. will default to orgId 1 if not specified
11 | orgId: 1
12 | # url
13 | url: http://prometheus:9090/manager/prometheus
14 | # database password, if used
15 | # password:
16 | # database user, if used
17 | # user:
18 | # database name, if used
19 | # database:
20 | # enable/disable basic auth
21 | # basicAuth:
22 | # basic auth username
23 | # basicAuthUser:
24 | # basic auth password
25 | # basicAuthPassword:
26 | # enable/disable with credentials headers
27 | # withCredentials:
28 | # mark as default datasource. Max one per org
29 | isDefault: true
30 | #