new graf, prom, dashboard, exporters! (#12)
* new graf, prom, dashboard, exporters! * update readme and static images
This commit is contained in:
23
README.md
23
README.md
@@ -2,7 +2,7 @@
|
||||
|
||||
Simple way to run a Monero node with some basic monitoring tools packaged in.
|
||||
|
||||
Leverages [Prometheus](https://prometheus.io/docs/introduction/overview/), [Grafana](https://grafana.com/), and [ExcitableAardvark/monerod_exporter](https://github.com/ExcitableAardvark/monerod_exporter.git) on top of `monerod`.
|
||||
Leverages [Prometheus](https://prometheus.io/docs/introduction/overview/), [Grafana](https://grafana.com/), and [monero-exporter](https://github.com/cirocosta/monero-exporter) on top of `monerod`.
|
||||
|
||||
## Setup
|
||||
|
||||
@@ -13,7 +13,7 @@ The only requirements are [Docker](https://docs.docker.com/get-docker/) and [Doc
|
||||
git clone https://github.com/lalanza808/docker-monero-node
|
||||
cd docker-monero-node
|
||||
|
||||
# OPTIONAL: Setup Grafana password, blockchain storage location, or port overrides
|
||||
# OPTIONAL: Setup Grafana password, blockchain storage location, or port and container image tag overrides
|
||||
cp env-example .env
|
||||
vim .env
|
||||
|
||||
@@ -27,8 +27,15 @@ The following ports will be bound for `monerod` by default, but you can override
|
||||
- 18082 # zmq
|
||||
- 18083 # unrestricted rpc
|
||||
|
||||
The following ports will be bound for other services:
|
||||
- 9090 # prometheus web ui
|
||||
- 3000 # grafana web ui
|
||||
- 9000 # exporter web api (/metrics)
|
||||
|
||||
You will want to open/allow ports 18080 and 18081 in your firewall for usage as a remote/public node (or whichever p2p and restricted ports you picked).
|
||||
|
||||
Also, you may want to setup a reverse proxy to Grafana if you would like to expose the visualizations for the world to see. Be sure to lock down the administrative settings or leave login disabled!
|
||||
|
||||
## Usage
|
||||
|
||||
It's fairly simple, use `docker-compose` to bring the containers up and down and look at logs.
|
||||
@@ -38,15 +45,15 @@ It's fairly simple, use `docker-compose` to bring the containers up and down and
|
||||
docker-compose up -d # make up
|
||||
|
||||
# Check all logs
|
||||
docker-compose logs -f # make logs
|
||||
docker-compose logs -f
|
||||
|
||||
# Check monerod logs
|
||||
docker-compose logs -f monerod
|
||||
docker-compose logs -f monerod # make logs
|
||||
```
|
||||
|
||||
Navigate to http://localhost:3000 and log into Grafana. Find the `Daemon Stats` dashboard to get those sweet, sweet graphs.
|
||||
Navigate to http://localhost:3000 and log into Grafana. Find the `Node Stats` dashboard to get those sweet, sweet graphs.
|
||||
|
||||
If you've installed this on another system you will want to use [SSH tunnels](https://www.ssh.com/ssh/tunneling/example) (local forwarding) to reach Grafana:
|
||||
If you've installed this on another system you will want to use [SSH tunnels](https://www.ssh.com/ssh/tunneling/example) (local forwarding) to reach Grafana (if not exposing via reverse proxy):
|
||||
|
||||
```
|
||||
ssh <VPS OR SERVER IP> -L 3000:localhost:3000
|
||||
@@ -54,4 +61,6 @@ ssh <VPS OR SERVER IP> -L 3000:localhost:3000
|
||||
|
||||
Then navigate to http://localhost:3000. Here is what the graph looks like:
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
@@ -1,64 +1,76 @@
|
||||
version: '3'
|
||||
version: "3.7"
|
||||
|
||||
volumes:
|
||||
grafana:
|
||||
prometheus:
|
||||
|
||||
x-log-config: &log-config
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "20"
|
||||
|
||||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus:v2.18.0
|
||||
container_name: prometheus
|
||||
restart: unless-stopped
|
||||
image: prom/prometheus:${PROM_TAG:-v2.36.0}
|
||||
command:
|
||||
- --config.file=/etc/prometheus/prometheus.yml
|
||||
- --config.file=/etc/prometheus/config.yaml
|
||||
- --storage.tsdb.path=/prometheus
|
||||
- --web.console.libraries=/usr/share/prometheus/console_libraries
|
||||
- --web.console.templates=/usr/share/prometheus/consoles
|
||||
- --web.enable-admin-api
|
||||
volumes:
|
||||
- prometheus:/prometheus
|
||||
- ./files/prometheus:/etc/prometheus
|
||||
- --storage.tsdb.retention.time=360d
|
||||
container_name: monerod_prometheus
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 127.0.0.1:9090:9090
|
||||
volumes:
|
||||
- prometheus:/prometheus
|
||||
- ./files/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
|
||||
<<: *log-config
|
||||
grafana:
|
||||
image: grafana/grafana:6.5.0
|
||||
container_name: grafana
|
||||
user: "1000"
|
||||
command:
|
||||
- -config=/etc/grafana/grafana.ini
|
||||
container_name: monerod_grafana
|
||||
restart: unless-stopped
|
||||
image: grafana/grafana:${GRAFANA_TAG:-8.5.4}
|
||||
ports:
|
||||
- 127.0.0.1:3000:3000
|
||||
volumes:
|
||||
- grafana:/var/lib/grafana
|
||||
- ./files/grafana/grafana.ini:/etc/grafana/grafana.ini:ro
|
||||
- ./files/grafana/provisioning:/etc/grafana/provisioning:ro
|
||||
- ./files/grafana/dashboards:/var/lib/grafana/dashboards:ro
|
||||
environment:
|
||||
HOSTNAME: grafana
|
||||
GF_SERVER_ROOT_URL: "${GRAFANA_URL}"
|
||||
GF_SERVER_ROOT_URL: ${GRAFANA_URL}
|
||||
GF_ANALYTICS_REPORTING_ENABLED: "false"
|
||||
GF_ANALYTICS_CHECK_FOR_UPDATES: "false"
|
||||
GF_USERS_ALLOW_SIGN_UP: "false"
|
||||
GF_USERS_ALLOW_ORG_CREATE: "false"
|
||||
GF_LOG_LEVEL: "debug"
|
||||
GF_AUTH_ANONYMOUS_ENABLED: "${GF_AUTH_ANONYMOUS_ENABLED:-true}"
|
||||
GF_AUTH_BASIC_ENABLED: "${GF_AUTH_BASIC_ENABLED:-false}"
|
||||
GF_AUTH_DISABLE_LOGIN_FORM: "${GF_AUTH_DISABLE_LOGIN_FORM:-true}"
|
||||
GF_SECURITY_ADMIN_PASSWORD: "${GF_SECURITY_ADMIN_PASSWORD}"
|
||||
GF_SECURITY_ADMIN_USER: "${GF_SECURITY_ADMIN_USER}"
|
||||
volumes:
|
||||
- ./files/grafana/dashboards.yaml:/etc/grafana/provisioning/dashboards/default.yaml:ro
|
||||
- ./files/grafana/prometheus.yaml:/etc/grafana/provisioning/datasources/prometheus.yaml:ro
|
||||
- ./files/grafana/daemon_metrics.json:/var/lib/grafana/dashboards/daemon_metrics.json:ro
|
||||
- grafana:/var/lib/grafana
|
||||
<<: *log-config
|
||||
exporter:
|
||||
container_name: exporter
|
||||
container_name: monerod_exporter
|
||||
build:
|
||||
context: dockerfiles
|
||||
dockerfile: monerod_exporter
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
DAEMON_HOST: http://monerod:18083
|
||||
PORT: 8080
|
||||
ports:
|
||||
- 127.0.0.1:8080:8080
|
||||
- 127.0.0.1:9000:9000
|
||||
command:
|
||||
- --monero-addr=http://monerod:${UNRESTRICTED_PORT:-18083}
|
||||
<<: *log-config
|
||||
monerod:
|
||||
container_name: monerod
|
||||
build:
|
||||
context: dockerfiles
|
||||
dockerfile: monero_compile
|
||||
args:
|
||||
threads: ${THREADS:-1}
|
||||
args: ${THREADS:-2}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${DATA_DIR:-./data}:/data
|
||||
@@ -68,4 +80,5 @@ services:
|
||||
- 127.0.0.1:${ZMQ_PORT:-18082}:18082 # zmq
|
||||
- 127.0.0.1:${UNRESTRICTED_PORT:-18083}:18083 # unrestricted rpc
|
||||
command:
|
||||
monerod --data-dir=/data --p2p-bind-ip=0.0.0.0 --p2p-bind-port=18080 --rpc-restricted-bind-ip=0.0.0.0 --rpc-restricted-bind-port=18081 --zmq-rpc-bind-ip=0.0.0.0 --zmq-rpc-bind-port=18082 --rpc-bind-ip=0.0.0.0 --rpc-bind-port=18083 --non-interactive --confirm-external-bind --public-node --log-level=0 --enable-dns-blocklist
|
||||
monerod --data-dir=/data --p2p-bind-ip=0.0.0.0 --p2p-bind-port=18080 --rpc-restricted-bind-ip=0.0.0.0 --rpc-restricted-bind-port=18081 --zmq-rpc-bind-ip=0.0.0.0 --zmq-rpc-bind-port=18082 --rpc-bind-ip=0.0.0.0 --rpc-bind-port=18083 --non-interactive --confirm-external-bind --public-node --log-level=0 --enable-dns-blocklist --rpc-ssl=disabled
|
||||
<<: *log-config
|
||||
@@ -1,60 +1,70 @@
|
||||
version: '3'
|
||||
version: "3.7"
|
||||
|
||||
volumes:
|
||||
grafana:
|
||||
prometheus:
|
||||
|
||||
x-log-config: &log-config
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "20"
|
||||
|
||||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus:v2.18.0
|
||||
container_name: prometheus
|
||||
restart: unless-stopped
|
||||
image: prom/prometheus:${PROM_TAG:-v2.36.0}
|
||||
command:
|
||||
- --config.file=/etc/prometheus/prometheus.yml
|
||||
- --config.file=/etc/prometheus/config.yaml
|
||||
- --storage.tsdb.path=/prometheus
|
||||
- --web.console.libraries=/usr/share/prometheus/console_libraries
|
||||
- --web.console.templates=/usr/share/prometheus/consoles
|
||||
- --web.enable-admin-api
|
||||
- --storage.tsdb.retention.time=360d
|
||||
volumes:
|
||||
- prometheus:/prometheus
|
||||
- ./files/prometheus:/etc/prometheus
|
||||
container_name: monerod_prometheus
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 127.0.0.1:9090:9090
|
||||
volumes:
|
||||
- prometheus:/prometheus
|
||||
- ./files/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
|
||||
<<: *log-config
|
||||
grafana:
|
||||
image: grafana/grafana:6.5.0
|
||||
container_name: grafana
|
||||
user: "1000"
|
||||
command:
|
||||
- -config=/etc/grafana/grafana.ini
|
||||
container_name: monerod_grafana
|
||||
restart: unless-stopped
|
||||
image: grafana/grafana:${GRAFANA_TAG:-8.5.4}
|
||||
ports:
|
||||
- 127.0.0.1:3000:3000
|
||||
volumes:
|
||||
- grafana:/var/lib/grafana
|
||||
- ./files/grafana/grafana.ini:/etc/grafana/grafana.ini:ro
|
||||
- ./files/grafana/provisioning:/etc/grafana/provisioning:ro
|
||||
- ./files/grafana/dashboards:/var/lib/grafana/dashboards:ro
|
||||
environment:
|
||||
HOSTNAME: grafana
|
||||
GF_SERVER_ROOT_URL: "${GRAFANA_URL}"
|
||||
GF_SERVER_SERVE_FROM_SUB_PATH: "${GF_SERVER_SERVE_FROM_SUB_PATH:-false}"
|
||||
GF_SERVER_ROOT_URL: ${GRAFANA_URL}
|
||||
GF_ANALYTICS_REPORTING_ENABLED: "false"
|
||||
GF_ANALYTICS_CHECK_FOR_UPDATES: "false"
|
||||
GF_USERS_ALLOW_SIGN_UP: "false"
|
||||
GF_USERS_ALLOW_ORG_CREATE: "false"
|
||||
GF_LOG_LEVEL: "debug"
|
||||
GF_AUTH_ANONYMOUS_ENABLED: "${GF_AUTH_ANONYMOUS_ENABLED:-true}"
|
||||
GF_AUTH_BASIC_ENABLED: "${GF_AUTH_BASIC_ENABLED:-false}"
|
||||
GF_AUTH_DISABLE_LOGIN_FORM: "${GF_AUTH_DISABLE_LOGIN_FORM:-true}"
|
||||
GF_SECURITY_ADMIN_PASSWORD: "${GF_SECURITY_ADMIN_PASSWORD}"
|
||||
GF_SECURITY_ADMIN_USER: "${GF_SECURITY_ADMIN_USER}"
|
||||
GF_INSTALL_PLUGINS: "${GF_INSTALL_PLUGINS}"
|
||||
volumes:
|
||||
- ./files/grafana/dashboards.yaml:/etc/grafana/provisioning/dashboards/default.yaml:ro
|
||||
- ./files/grafana/prometheus.yaml:/etc/grafana/provisioning/datasources/prometheus.yaml:ro
|
||||
- ./files/grafana/daemon_metrics.json:/var/lib/grafana/dashboards/daemon_metrics.json:ro
|
||||
- grafana:/var/lib/grafana
|
||||
<<: *log-config
|
||||
exporter:
|
||||
container_name: exporter
|
||||
container_name: monerod_exporter
|
||||
build:
|
||||
context: dockerfiles
|
||||
dockerfile: monerod_exporter
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
DAEMON_HOST: http://monerod:18083
|
||||
PORT: 8080
|
||||
ports:
|
||||
- 127.0.0.1:8080:8080
|
||||
- 127.0.0.1:9000:9000
|
||||
command:
|
||||
- --monero-addr=http://monerod:${UNRESTRICTED_PORT:-18083}
|
||||
<<: *log-config
|
||||
monerod:
|
||||
container_name: monerod
|
||||
build:
|
||||
@@ -70,3 +80,4 @@ services:
|
||||
- 127.0.0.1:${UNRESTRICTED_PORT:-18083}:18083 # unrestricted rpc
|
||||
command:
|
||||
monerod --data-dir=/data --p2p-bind-ip=0.0.0.0 --p2p-bind-port=18080 --rpc-restricted-bind-ip=0.0.0.0 --rpc-restricted-bind-port=18081 --zmq-rpc-bind-ip=0.0.0.0 --zmq-rpc-bind-port=18082 --rpc-bind-ip=0.0.0.0 --rpc-bind-port=18083 --non-interactive --confirm-external-bind --public-node --log-level=0 --enable-dns-blocklist --rpc-ssl=disabled
|
||||
<<: *log-config
|
||||
@@ -1,11 +1,9 @@
|
||||
FROM node:8
|
||||
FROM golang:bullseye
|
||||
|
||||
WORKDIR /opt/monerod_exporter
|
||||
# Install exporter from Golang source
|
||||
RUN go install github.com/cirocosta/monero-exporter/cmd/monero-exporter@master
|
||||
|
||||
RUN git clone https://github.com/lalanza808/monerod_exporter.git --branch=master --depth=1 .
|
||||
# Install GeoLite database
|
||||
RUN wget https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb -O /geoip.mmdb
|
||||
|
||||
RUN npm install
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
ENTRYPOINT ["node", "index.js"]
|
||||
ENTRYPOINT [ "monero-exporter", "--geoip-filepath", "/geoip.mmdb" ]
|
||||
@@ -1,603 +0,0 @@
|
||||
{
|
||||
"annotations": {
|
||||
"list": [
|
||||
{
|
||||
"builtIn": 1,
|
||||
"datasource": "-- Grafana --",
|
||||
"enable": true,
|
||||
"hide": true,
|
||||
"iconColor": "rgba(0, 211, 255, 1)",
|
||||
"name": "Annotations & Alerts",
|
||||
"type": "dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"editable": true,
|
||||
"gnetId": null,
|
||||
"graphTooltip": 0,
|
||||
"id": 1,
|
||||
"links": [],
|
||||
"panels": [
|
||||
{
|
||||
"aliasColors": {},
|
||||
"bars": false,
|
||||
"dashLength": 10,
|
||||
"dashes": false,
|
||||
"datasource": null,
|
||||
"fill": 0,
|
||||
"fillGradient": 0,
|
||||
"gridPos": {
|
||||
"h": 9,
|
||||
"w": 18,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"hiddenSeries": false,
|
||||
"id": 4,
|
||||
"legend": {
|
||||
"avg": false,
|
||||
"current": false,
|
||||
"max": false,
|
||||
"min": false,
|
||||
"show": true,
|
||||
"total": false,
|
||||
"values": false
|
||||
},
|
||||
"lines": true,
|
||||
"linewidth": 3,
|
||||
"nullPointMode": "null",
|
||||
"options": {
|
||||
"dataLinks": []
|
||||
},
|
||||
"percentage": false,
|
||||
"pointradius": 2,
|
||||
"points": false,
|
||||
"renderer": "flot",
|
||||
"seriesOverrides": [],
|
||||
"spaceLength": 10,
|
||||
"stack": false,
|
||||
"steppedLine": false,
|
||||
"targets": [
|
||||
{
|
||||
"expr": "avg(monerod_connections_incoming)",
|
||||
"legendFormat": "Incoming",
|
||||
"refId": "A"
|
||||
},
|
||||
{
|
||||
"expr": "avg(monerod_connections_outgoing)",
|
||||
"legendFormat": "Outgoing",
|
||||
"refId": "B"
|
||||
},
|
||||
{
|
||||
"expr": "avg(monerod_rpc_connections_count)",
|
||||
"legendFormat": "RPC",
|
||||
"refId": "C"
|
||||
}
|
||||
],
|
||||
"thresholds": [],
|
||||
"timeFrom": null,
|
||||
"timeRegions": [],
|
||||
"timeShift": null,
|
||||
"title": "Connections",
|
||||
"tooltip": {
|
||||
"shared": true,
|
||||
"sort": 0,
|
||||
"value_type": "individual"
|
||||
},
|
||||
"type": "graph",
|
||||
"xaxis": {
|
||||
"buckets": null,
|
||||
"mode": "time",
|
||||
"name": null,
|
||||
"show": true,
|
||||
"values": []
|
||||
},
|
||||
"yaxes": [
|
||||
{
|
||||
"decimals": null,
|
||||
"format": "none",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": "0",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"format": "short",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"yaxis": {
|
||||
"align": false,
|
||||
"alignLevel": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"aliasColors": {},
|
||||
"bars": false,
|
||||
"dashLength": 10,
|
||||
"dashes": false,
|
||||
"datasource": null,
|
||||
"fill": 0,
|
||||
"fillGradient": 0,
|
||||
"gridPos": {
|
||||
"h": 9,
|
||||
"w": 6,
|
||||
"x": 18,
|
||||
"y": 0
|
||||
},
|
||||
"hiddenSeries": false,
|
||||
"id": 8,
|
||||
"legend": {
|
||||
"avg": false,
|
||||
"current": false,
|
||||
"max": false,
|
||||
"min": false,
|
||||
"show": false,
|
||||
"total": false,
|
||||
"values": false
|
||||
},
|
||||
"lines": false,
|
||||
"linewidth": 1,
|
||||
"nullPointMode": "null",
|
||||
"options": {
|
||||
"dataLinks": []
|
||||
},
|
||||
"percentage": false,
|
||||
"pointradius": 2,
|
||||
"points": true,
|
||||
"renderer": "flot",
|
||||
"seriesOverrides": [
|
||||
{
|
||||
"alias": "/.*/",
|
||||
"color": "#FA6400"
|
||||
}
|
||||
],
|
||||
"spaceLength": 10,
|
||||
"stack": false,
|
||||
"steppedLine": false,
|
||||
"targets": [
|
||||
{
|
||||
"expr": "avg(monerod_block_reward)",
|
||||
"legendFormat": "Block Reward (XMR)",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"thresholds": [],
|
||||
"timeFrom": null,
|
||||
"timeRegions": [],
|
||||
"timeShift": null,
|
||||
"title": "Block Reward (XMR)",
|
||||
"tooltip": {
|
||||
"shared": true,
|
||||
"sort": 0,
|
||||
"value_type": "individual"
|
||||
},
|
||||
"type": "graph",
|
||||
"xaxis": {
|
||||
"buckets": null,
|
||||
"mode": "time",
|
||||
"name": null,
|
||||
"show": true,
|
||||
"values": []
|
||||
},
|
||||
"yaxes": [
|
||||
{
|
||||
"decimals": null,
|
||||
"format": "none",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"format": "short",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": false
|
||||
}
|
||||
],
|
||||
"yaxis": {
|
||||
"align": false,
|
||||
"alignLevel": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"aliasColors": {},
|
||||
"bars": false,
|
||||
"dashLength": 10,
|
||||
"dashes": false,
|
||||
"datasource": null,
|
||||
"fill": 0,
|
||||
"fillGradient": 0,
|
||||
"gridPos": {
|
||||
"h": 9,
|
||||
"w": 12,
|
||||
"x": 0,
|
||||
"y": 9
|
||||
},
|
||||
"hiddenSeries": false,
|
||||
"id": 6,
|
||||
"legend": {
|
||||
"avg": false,
|
||||
"current": false,
|
||||
"max": false,
|
||||
"min": false,
|
||||
"show": false,
|
||||
"total": false,
|
||||
"values": false
|
||||
},
|
||||
"lines": false,
|
||||
"linewidth": 1,
|
||||
"nullPointMode": "null",
|
||||
"options": {
|
||||
"dataLinks": []
|
||||
},
|
||||
"percentage": false,
|
||||
"pointradius": 2,
|
||||
"points": true,
|
||||
"renderer": "flot",
|
||||
"seriesOverrides": [
|
||||
{
|
||||
"alias": "/.*/",
|
||||
"color": "#8F3BB8"
|
||||
}
|
||||
],
|
||||
"spaceLength": 10,
|
||||
"stack": false,
|
||||
"steppedLine": true,
|
||||
"targets": [
|
||||
{
|
||||
"expr": "avg(monerod_tx_mempool)",
|
||||
"legendFormat": "Pool Transactions",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"thresholds": [],
|
||||
"timeFrom": null,
|
||||
"timeRegions": [],
|
||||
"timeShift": null,
|
||||
"title": "Mempool Transactions",
|
||||
"tooltip": {
|
||||
"shared": true,
|
||||
"sort": 0,
|
||||
"value_type": "individual"
|
||||
},
|
||||
"type": "graph",
|
||||
"xaxis": {
|
||||
"buckets": null,
|
||||
"mode": "time",
|
||||
"name": null,
|
||||
"show": true,
|
||||
"values": []
|
||||
},
|
||||
"yaxes": [
|
||||
{
|
||||
"format": "short",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"format": "short",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"yaxis": {
|
||||
"align": false,
|
||||
"alignLevel": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"aliasColors": {},
|
||||
"bars": false,
|
||||
"dashLength": 10,
|
||||
"dashes": false,
|
||||
"datasource": null,
|
||||
"fill": 0,
|
||||
"fillGradient": 0,
|
||||
"gridPos": {
|
||||
"h": 9,
|
||||
"w": 12,
|
||||
"x": 12,
|
||||
"y": 9
|
||||
},
|
||||
"hiddenSeries": false,
|
||||
"id": 2,
|
||||
"legend": {
|
||||
"avg": false,
|
||||
"current": false,
|
||||
"max": false,
|
||||
"min": false,
|
||||
"show": false,
|
||||
"total": false,
|
||||
"values": false
|
||||
},
|
||||
"lines": true,
|
||||
"linewidth": 3,
|
||||
"nullPointMode": "null",
|
||||
"options": {
|
||||
"dataLinks": []
|
||||
},
|
||||
"percentage": false,
|
||||
"pointradius": 2,
|
||||
"points": false,
|
||||
"renderer": "flot",
|
||||
"seriesOverrides": [
|
||||
{
|
||||
"alias": "/.*/",
|
||||
"color": "#C4162A"
|
||||
}
|
||||
],
|
||||
"spaceLength": 10,
|
||||
"stack": false,
|
||||
"steppedLine": true,
|
||||
"targets": [
|
||||
{
|
||||
"expr": "avg(monerod_block_difficulty)",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"thresholds": [],
|
||||
"timeFrom": null,
|
||||
"timeRegions": [],
|
||||
"timeShift": null,
|
||||
"title": "Difficulty",
|
||||
"tooltip": {
|
||||
"shared": true,
|
||||
"sort": 0,
|
||||
"value_type": "individual"
|
||||
},
|
||||
"type": "graph",
|
||||
"xaxis": {
|
||||
"buckets": null,
|
||||
"mode": "time",
|
||||
"name": null,
|
||||
"show": true,
|
||||
"values": []
|
||||
},
|
||||
"yaxes": [
|
||||
{
|
||||
"format": "none",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"format": "short",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"yaxis": {
|
||||
"align": false,
|
||||
"alignLevel": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"aliasColors": {},
|
||||
"bars": false,
|
||||
"dashLength": 10,
|
||||
"dashes": false,
|
||||
"datasource": null,
|
||||
"fill": 0,
|
||||
"fillGradient": 0,
|
||||
"gridPos": {
|
||||
"h": 8,
|
||||
"w": 20,
|
||||
"x": 0,
|
||||
"y": 18
|
||||
},
|
||||
"hiddenSeries": false,
|
||||
"id": 12,
|
||||
"legend": {
|
||||
"avg": false,
|
||||
"current": false,
|
||||
"max": false,
|
||||
"min": false,
|
||||
"show": true,
|
||||
"total": false,
|
||||
"values": false
|
||||
},
|
||||
"lines": true,
|
||||
"linewidth": 3,
|
||||
"nullPointMode": "null",
|
||||
"options": {
|
||||
"dataLinks": []
|
||||
},
|
||||
"percentage": false,
|
||||
"pointradius": 2,
|
||||
"points": false,
|
||||
"renderer": "flot",
|
||||
"seriesOverrides": [
|
||||
{
|
||||
"alias": "/.*/",
|
||||
"color": "#1F60C4"
|
||||
}
|
||||
],
|
||||
"spaceLength": 10,
|
||||
"stack": false,
|
||||
"steppedLine": false,
|
||||
"targets": [
|
||||
{
|
||||
"expr": "monerod_database_size",
|
||||
"legendFormat": "Chain Size",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"thresholds": [],
|
||||
"timeFrom": null,
|
||||
"timeRegions": [],
|
||||
"timeShift": null,
|
||||
"title": "Chain Size",
|
||||
"tooltip": {
|
||||
"shared": true,
|
||||
"sort": 0,
|
||||
"value_type": "individual"
|
||||
},
|
||||
"type": "graph",
|
||||
"xaxis": {
|
||||
"buckets": null,
|
||||
"mode": "time",
|
||||
"name": null,
|
||||
"show": true,
|
||||
"values": []
|
||||
},
|
||||
"yaxes": [
|
||||
{
|
||||
"format": "decbytes",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"format": "short",
|
||||
"label": null,
|
||||
"logBase": 1,
|
||||
"max": null,
|
||||
"min": null,
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"yaxis": {
|
||||
"align": false,
|
||||
"alignLevel": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"cacheTimeout": null,
|
||||
"colorBackground": false,
|
||||
"colorPostfix": false,
|
||||
"colorPrefix": false,
|
||||
"colorValue": false,
|
||||
"colors": [
|
||||
"#299c46",
|
||||
"rgba(237, 129, 40, 0.89)",
|
||||
"#d44a3a"
|
||||
],
|
||||
"datasource": null,
|
||||
"format": "none",
|
||||
"gauge": {
|
||||
"maxValue": 100,
|
||||
"minValue": 0,
|
||||
"show": false,
|
||||
"thresholdLabels": false,
|
||||
"thresholdMarkers": true
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 8,
|
||||
"w": 4,
|
||||
"x": 20,
|
||||
"y": 18
|
||||
},
|
||||
"id": 10,
|
||||
"interval": null,
|
||||
"links": [],
|
||||
"mappingType": 1,
|
||||
"mappingTypes": [
|
||||
{
|
||||
"name": "value to text",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"name": "range to text",
|
||||
"value": 2
|
||||
}
|
||||
],
|
||||
"maxDataPoints": 100,
|
||||
"nullPointMode": "null",
|
||||
"nullText": null,
|
||||
"options": {},
|
||||
"postfix": "",
|
||||
"postfixFontSize": "50%",
|
||||
"prefix": "",
|
||||
"prefixFontSize": "50%",
|
||||
"rangeMaps": [
|
||||
{
|
||||
"from": "null",
|
||||
"text": "N/A",
|
||||
"to": "null"
|
||||
}
|
||||
],
|
||||
"sparkline": {
|
||||
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||||
"full": false,
|
||||
"lineColor": "rgb(31, 120, 193)",
|
||||
"show": false,
|
||||
"ymax": null,
|
||||
"ymin": null
|
||||
},
|
||||
"tableColumn": "",
|
||||
"targets": [
|
||||
{
|
||||
"expr": "avg(monerod_tx_chain)",
|
||||
"instant": true,
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"thresholds": "",
|
||||
"timeFrom": null,
|
||||
"timeShift": null,
|
||||
"title": "Total Transactions",
|
||||
"type": "singlestat",
|
||||
"valueFontSize": "100%",
|
||||
"valueMaps": [
|
||||
{
|
||||
"op": "=",
|
||||
"text": "N/A",
|
||||
"value": "null"
|
||||
}
|
||||
],
|
||||
"valueName": "current"
|
||||
}
|
||||
],
|
||||
"refresh": "30s",
|
||||
"schemaVersion": 21,
|
||||
"style": "dark",
|
||||
"tags": [],
|
||||
"templating": {
|
||||
"list": []
|
||||
},
|
||||
"time": {
|
||||
"from": "now-2d",
|
||||
"to": "now"
|
||||
},
|
||||
"timepicker": {
|
||||
"refresh_intervals": [
|
||||
"5s",
|
||||
"10s",
|
||||
"30s",
|
||||
"1m",
|
||||
"5m",
|
||||
"15m",
|
||||
"30m",
|
||||
"1h",
|
||||
"2h",
|
||||
"1d"
|
||||
]
|
||||
},
|
||||
"timezone": "",
|
||||
"title": "Daemon Stats",
|
||||
"uid": "0ktA4KDGk",
|
||||
"version": 4
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
apiVersion: 1
|
||||
|
||||
providers:
|
||||
- name: 'default'
|
||||
orgId: 1
|
||||
folder: ''
|
||||
type: file
|
||||
disableDeletion: true
|
||||
editable: true
|
||||
updateIntervalSeconds: 60
|
||||
allowUiUpdates: true
|
||||
options:
|
||||
path: /var/lib/grafana/dashboards
|
||||
3138
files/grafana/dashboards/node_stats.json
Normal file
3138
files/grafana/dashboards/node_stats.json
Normal file
File diff suppressed because it is too large
Load Diff
29
files/grafana/grafana.ini
Normal file
29
files/grafana/grafana.ini
Normal file
@@ -0,0 +1,29 @@
|
||||
[analytics]
|
||||
reporting_enabled = false
|
||||
check_for_updates = false
|
||||
|
||||
[auth]
|
||||
disable_login_form = false
|
||||
|
||||
; [auth.anonymous]
|
||||
; enabled = true
|
||||
; org_role = Admin
|
||||
|
||||
[dashboards]
|
||||
min_refresh_interval = 1m
|
||||
default_home_dashboard_path = /var/lib/grafana/dashboards/node_stats.json
|
||||
|
||||
[paths]
|
||||
provisioning = /etc/grafana/provisioning
|
||||
|
||||
[server]
|
||||
root_url = https://127.0.0.1
|
||||
enable_gzip = true
|
||||
read_timeout = 2m
|
||||
|
||||
[snapshots]
|
||||
external_enabled = false
|
||||
|
||||
[security]
|
||||
admin_user = admin
|
||||
admin_password = admin
|
||||
@@ -1,9 +0,0 @@
|
||||
apiVersion: 1
|
||||
|
||||
datasources:
|
||||
- name: Prometheus
|
||||
type: prometheus
|
||||
url: http://prometheus:9090
|
||||
access: proxy
|
||||
isDefault: true
|
||||
timeInterval: 10s
|
||||
12
files/grafana/provisioning/dashboards/all.yaml
Normal file
12
files/grafana/provisioning/dashboards/all.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
apiVersion: 1
|
||||
|
||||
providers:
|
||||
- name: 'fs'
|
||||
orgId: 1
|
||||
folder: ''
|
||||
type: 'file'
|
||||
updateIntervalSeconds: 30
|
||||
allowUiUpdates: true
|
||||
options:
|
||||
path: '/var/lib/grafana/dashboards'
|
||||
foldersFromFilesStructure: true
|
||||
12
files/grafana/provisioning/datasources/all.yaml
Normal file
12
files/grafana/provisioning/datasources/all.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
apiVersion: 1
|
||||
|
||||
datasources:
|
||||
- name: prometheus
|
||||
type: prometheus
|
||||
access: proxy
|
||||
orgId: 1
|
||||
url: http://prometheus:9090
|
||||
isDefault: true
|
||||
version: 1
|
||||
editable: false
|
||||
timeInterval: 30s
|
||||
9
files/prometheus/config.yaml
Normal file
9
files/prometheus/config.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
global:
|
||||
scrape_interval: 10s
|
||||
evaluation_interval: 10s
|
||||
external_labels:
|
||||
monitor: node-exporter
|
||||
scrape_configs:
|
||||
- job_name: "node-exporter"
|
||||
static_configs:
|
||||
- targets: ["exporter:9000"]
|
||||
@@ -1,17 +0,0 @@
|
||||
global:
|
||||
scrape_interval: 30s
|
||||
evaluation_interval: 60s
|
||||
|
||||
external_labels:
|
||||
monitor: monerod-exporter
|
||||
|
||||
scrape_configs:
|
||||
- job_name: "monerod-exporter"
|
||||
static_configs:
|
||||
- targets: ["exporter:8080"]
|
||||
|
||||
alerting:
|
||||
alertmanagers:
|
||||
- static_configs:
|
||||
- targets:
|
||||
# - alertmanager:9093
|
||||
BIN
static/graf1.png
Normal file
BIN
static/graf1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 214 KiB |
BIN
static/graf2.png
Normal file
BIN
static/graf2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 346 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 981 KiB |
Reference in New Issue
Block a user