mirror of https://github.com/ethereum/go-ethereum
docs: add page on grafana/influxdb dashboard (#26179)
* add page on grafana/influxdb dashboard * fix sort key * fix sort-key * + explicit links to influx/grafana downloads pages * Update docs/_interface/dashboards.mdpull/26275/head
parent
bfba3a30a5
commit
02a0967122
@ -0,0 +1,191 @@ |
||||
--- |
||||
title: Grafana Dashboard |
||||
sort_key: S |
||||
--- |
||||
|
||||
There are several ways to monitor the performance of a Geth node. Insights |
||||
into a node's performance are useful for debugging, tuning and understanding |
||||
what is really happening when Geth is running. |
||||
|
||||
## Prerequisites {#prerequisites} |
||||
|
||||
To follow along with the instructions on this page you will need: |
||||
|
||||
- a running Geth instance. |
||||
- basic working knowlegde of bash/terminal. |
||||
|
||||
[This video](https://www.youtube.com/watch?v=cOBab8IJMYI) provides an excellent |
||||
introduction to Geth monitoring. |
||||
|
||||
## Monitoring stack {#monitoring-stack} |
||||
|
||||
An Ethereum client collects lots of data which can be read in the form of a |
||||
chronological database. To make monitoring easier, this data can be fed into |
||||
data visualisation software. On this page, a Geth client will be configured |
||||
to push data into a InfluxDB database and Grafana will be used to visualize |
||||
the data. |
||||
|
||||
## Setting up InfluxDB {#setting-up-influxdb} |
||||
|
||||
InfluxDB can be downloaded from the [Influxdata release page](https://portal.influxdata.com/downloads/). |
||||
It can also be installed from a [repository](https://repos.influxdata.com/). |
||||
|
||||
For example the following commands will download and install InfluxDB on a |
||||
Debian based Linux operating system - you can check for up-to-date instructions |
||||
for your operating system on the InfluxDB [downloads page](https://portal.influxdata.com/downloads/): |
||||
|
||||
```sh |
||||
curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add |
||||
source /etc/lsb-release |
||||
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list |
||||
sudo apt update |
||||
sudo apt install influxdb -y |
||||
sudo systemctl enable influxdb |
||||
sudo systemctl start influxdb |
||||
sudo apt install influxdb-client |
||||
``` |
||||
|
||||
By default,InfluxDB it is reachable at `localhost:8086`. Before using the |
||||
`influx` client, a new user with admin privileges needs to be created. |
||||
This user will serve for high level management, creating databases and users. |
||||
|
||||
```sh |
||||
curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES" |
||||
``` |
||||
|
||||
Now the influx client can be used to enter [InfluxDB shell](https://docs.influxdata.com/influxdb/v1.8/tools/shell/) |
||||
with the new user. |
||||
|
||||
```sh |
||||
influx -username 'username' -password 'password' |
||||
``` |
||||
|
||||
A database and user for geth metrics can be created by communicating |
||||
with it directly via its shell. |
||||
|
||||
```sh |
||||
create database geth |
||||
create user geth with password choosepassword |
||||
``` |
||||
|
||||
Verify created entries with: |
||||
|
||||
``` |
||||
show databases |
||||
show users |
||||
``` |
||||
|
||||
Leave InfluxDB shell. |
||||
|
||||
```sh |
||||
exit |
||||
``` |
||||
|
||||
InfluxDB is running and configured to store metrics from Geth. |
||||
|
||||
## Preparing Geth {#preparing-geth} |
||||
|
||||
After setting up database, metrics need to be enabled in Geth. |
||||
Various options are available, as documented in the `METRICS AND STATS OPTIONS` |
||||
in `geth --help` and in our [metrics page](/docs/interface/metrics). In this case Geth will be configured |
||||
to push data into InfluxDB. Basic setup specifies the endpoint where InfluxDB is |
||||
reachable and authenticates the database. |
||||
|
||||
```sh |
||||
geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword" |
||||
``` |
||||
|
||||
These flags can be provided when Geth is started or saved to the configuration |
||||
file. |
||||
|
||||
Listing the metrics in the database verifies that Geth is pushing data correctly. |
||||
In InfluxDB shell: |
||||
|
||||
```sh |
||||
use geth |
||||
show measurements |
||||
``` |
||||
|
||||
## Setting up Grafana {#setting-up-grafana} |
||||
|
||||
With the InfluxDB database setup and successfully receiving data from Geth, |
||||
the next step is to install Grafana so that the data can be visualized. |
||||
|
||||
The following code snippet shows how to download, install and |
||||
run Grafana on a Debian based Linux system. Up to date instructions for |
||||
your operating system can be found on the Grafana |
||||
[downloads page](https://grafana.com/grafana/download). |
||||
|
||||
```sh |
||||
curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add - |
||||
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list |
||||
sudo apt update |
||||
sudo apt install grafana |
||||
sudo systemctl enable grafana-server |
||||
sudo systemctl start grafana-server |
||||
``` |
||||
|
||||
When Grafana is up and running, it should be reachable at `localhost:3000`. |
||||
A browser can be pointed to that URL to access a visualization dashboard. |
||||
|
||||
The browser will prompt for login credentials (use user: `admin` and password: `admin`). |
||||
When prompted, the default password should be changed and saved. |
||||
|
||||
The browser first redirects to the Grafana home page to set up the source data. |
||||
Click on the "Data sources" icon and then click on "InfluxDB". The following |
||||
configuration options are recommended: |
||||
|
||||
```sh |
||||
Name: InfluxDB |
||||
Query Language: InfluxQL |
||||
|
||||
HTTP |
||||
URL: http://localhost:8086 |
||||
Access: Server (default) |
||||
Whitelisted cookies: None (leave blank) |
||||
|
||||
Auth |
||||
All options left as their default (switches off) |
||||
|
||||
Custom HTTP Headers |
||||
None |
||||
|
||||
InfluxDB Details |
||||
Database: geth |
||||
User: <your-user-name> |
||||
Password: <your-password> |
||||
HTTP Method: GET |
||||
|
||||
``` |
||||
|
||||
Click on "Save and test" and wait for the confirmation to pop up. |
||||
|
||||
Grafana is now set up to read data from InfluxDB. Now a dashboard can be created |
||||
to interpret and display it. Dashboards properties are encoded in JSON files |
||||
which can be created by anybody and easily imported. On the left bar, |
||||
click on the "Dashboards" icon, then "Import". |
||||
|
||||
For a Geth monitoring dashboard, copy the URL of [this dashboard](https://grafana.com/grafana/dashboards/13877/) |
||||
and paste it in the "Import page" in Grafana. After saving the dashboard, |
||||
it should look like this: |
||||
|
||||
![Grafana 1](/static/images/grafana1.png) |
||||
|
||||
|
||||
## Customization |
||||
|
||||
The dashboards can be customized further. Each panel can be edited, moved, |
||||
removed or added. To learn more about how dashboards work, refer to |
||||
[Grafana's documentation](https://grafana.com/docs/grafana/latest/dashboards/). |
||||
|
||||
Some users might also be interested in automatic [alerting](https://grafana.com/docs/grafana/latest/alerting/), |
||||
which sets up alert notifications that are sent automatically when metrics |
||||
reach certain values. Various communication channels are supported. |
||||
|
||||
## Summary |
||||
|
||||
This page has outlined how to set up a simple node monitoring dashboard |
||||
using Grafana. |
||||
|
||||
|
||||
***NB: this page was adapted from a tutorial on ethereum.org written by Mario Havel*** |
After Width: | Height: | Size: 309 KiB |
Loading…
Reference in new issue