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.md
This commit is contained in:
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***
|
Binary file not shown.
After Width: | Height: | Size: 309 KiB |
|
@ -111,4 +111,11 @@ img[alt="Clef signing logic"] {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
img[alt="Grafana 1"] {
|
||||||
|
width: 800px;
|
||||||
|
margin-top: 2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue