Skip to content

Commit

Permalink
Updated SSV dashboards (eth-educators#1914)
Browse files Browse the repository at this point in the history
* Updated SSV dashboards

* Detect if sudo is not available
  • Loading branch information
yorickdowne authored Aug 28, 2024
1 parent 498774e commit 3ef4393
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 22 deletions.
51 changes: 42 additions & 9 deletions ethd
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,29 @@ determine_distro() {
__distro=$(echo "$__distro" | tr "[:upper:]" "[:lower:]")

if [[ "$__distro" = "ubuntu" ]]; then
if ! dpkg-query -W -f='${Status}' lsb-release 2>/dev/null | grep -q "ok installed"; then
${__auto_sudo} apt-get update && ${__auto_sudo} apt-get -y install lsb-release
if [ "$__cannot_sudo" -eq 0 ]; then
if ! dpkg-query -W -f='${Status}' lsb-release 2>/dev/null | grep -q "ok installed"; then
echo "Installing lsb-release"
${__auto_sudo} apt-get update && ${__auto_sudo} apt-get -y install lsb-release
fi
fi
if [ -n "$(command -v lsb_release 2>/dev/null)" ]; then
__os_major_version=$(lsb_release -r | cut -d: -f2 | sed s/'^\t'// | cut -d. -f1)
else
__os_major_version=24 # Without sudo and lsb_release let's just skip the check
fi
__os_major_version=$(lsb_release -r | cut -d: -f2 | sed s/'^\t'// | cut -d. -f1)
elif [[ "$__distro" =~ "debian" ]]; then
if ! dpkg-query -W -f='${Status}' lsb-release 2>/dev/null | grep -q "ok installed"; then
${__auto_sudo} apt-get update && ${__auto_sudo} apt-get -y install lsb-release
if [ "$__cannot_sudo" -eq 0 ]; then
if ! dpkg-query -W -f='${Status}' lsb-release 2>/dev/null | grep -q "ok installed"; then
echo "Installing lsb-release"
${__auto_sudo} apt-get update && ${__auto_sudo} apt-get -y install lsb-release
fi
fi
if [ -n "$(command -v lsb_release 2>/dev/null)" ]; then
__os_major_version=$(lsb_release -r | cut -f2)
else
__os_major_version=12 # Without sudo and lsb_release let's just skip the check
fi
__os_major_version=$(lsb_release -r | cut -f2)
fi
}

Expand Down Expand Up @@ -80,19 +94,29 @@ handle_docker_sudo() {
fi
__docker_sudo=""
if ! docker images >/dev/null 2>&1; then
if [ "$__cannot_sudo" -eq 1 ]; then
echo "Cannot call Docker and cannot use sudo. Please make your user part of the docker group"
exit 1
fi
echo "Will use sudo to access Docker"
__docker_sudo="sudo"
fi
}


handle_root() {
__cannot_sudo=0
if [ "${EUID}" -eq 0 ]; then
__as_owner="sudo -u ${OWNER}"
__auto_sudo=""
else
__as_owner=""
__auto_sudo="sudo"
if groups | grep -q '\bsudo\b' || groups | grep -q '\badmin\b'; then
__auto_sudo="sudo"
else
__auto_sudo=""
__cannot_sudo=1
fi
fi
}

Expand Down Expand Up @@ -204,7 +228,13 @@ prep_conffiles() {
fi
# Make sure local user owns the dkg output dir and everything in it
if find .eth/dkg_output \! -user "${OWNER}" -o \! -group "${OWNER_GROUP}" | grep -q .; then
${__auto_sudo} chown -R "${OWNER}:${OWNER_GROUP}" .eth/dkg_output
if [ "$__cannot_sudo" -eq 0 ]; then
echo "Fixing ownership of .eth/dkg_output"
${__auto_sudo} chown -R "${OWNER}:${OWNER_GROUP}" .eth/dkg_output
${__auto_sudo} chmod -R 755 .eth/dkg_output
else
echo "Ownership of .eth/dkg_output should be fixed, but this user can't sudo"
fi
fi
# Make sure the dkg output dir and its contents are mod 0755
if find .eth/dkg_output \! -perm 755 | grep -q .; then
Expand Down Expand Up @@ -251,7 +281,10 @@ install-bash-completions() {


install() {

if [ "$__cannot_sudo" -eq 1 ]; then
echo "The install command requires the user to be part of the sudo group, or on macOS the admin group"
exit 1
fi
if [[ "$__distro" = "ubuntu" ]]; then
${__auto_sudo} apt-get update
${__auto_sudo} apt-get install -y ca-certificates curl gnupg whiptail chrony pkg-config
Expand Down
31 changes: 18 additions & 13 deletions grafana/provision.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,18 @@ case "$CLIENT" in
# lighthouse_summary
__url='https://raw.githubusercontent.com/sigp/lighthouse-metrics/master/dashboards/Summary.json'
__file='/etc/grafana/provisioning/dashboards/lighthouse_summary.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Lighthouse Summary"' | jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Lighthouse Summary"' \
| jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
# lighthouse_validator_client
__url='https://raw.githubusercontent.com/sigp/lighthouse-metrics/master/dashboards/ValidatorClient.json'
__file='/etc/grafana/provisioning/dashboards/lighthouse_validator_client.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Lighthouse Validator Client"' | jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Lighthouse Validator Client"' \
| jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
# lighthouse_validator_monitor
__url='https://raw.githubusercontent.com/sigp/lighthouse-metrics/master/dashboards/ValidatorMonitor.json'
__file='/etc/grafana/provisioning/dashboards/lighthouse_validator_monitor.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Lighthouse Validator Monitor"' | jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Lighthouse Validator Monitor"' \
| jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
;;&
*teku* )
# teku_overview
Expand All @@ -49,21 +52,24 @@ case "$CLIENT" in
# nimbus_dashboard
__url='https://raw.githubusercontent.com/status-im/nimbus-eth2/master/grafana/beacon_nodes_Grafana_dashboard.json'
__file='/etc/grafana/provisioning/dashboards/nimbus_dashboard.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Nimbus Dashboard"' | jq 'walk(if . == "${DS_PROMETHEUS-PROXY}" then "Prometheus" else . end)' >"${__file}"
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Nimbus Dashboard"' \
| jq 'walk(if . == "${DS_PROMETHEUS-PROXY}" then "Prometheus" else . end)' >"${__file}"
;;&
*lodestar* )
# lodestar summary
__url='https://raw.githubusercontent.com/ChainSafe/lodestar/stable/dashboards/lodestar_summary.json'
__file='/etc/grafana/provisioning/dashboards/lodestar_summary.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Lodestar Dashboard"' | jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' \
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Lodestar Dashboard"' \
| jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' \
| jq '.templating.list[3].query |= "consensus" | .templating.list[4].query |= "validator"' \
| jq 'walk(if . == "prometheus_local" then "Prometheus" else . end)' >"${__file}"
;;&
*geth* )
# geth_dashboard
__url='https://gist.githubusercontent.com/karalabe/e7ca79abdec54755ceae09c08bd090cd/raw/3a400ab90f9402f2233280afd086cb9d6aac2111/dashboard.json'
__file='/etc/grafana/provisioning/dashboards/geth_dashboard.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Geth Dashboard"' | jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Geth Dashboard"' \
| jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
;;&
*erigon* )
# erigon_dashboard
Expand All @@ -77,7 +83,8 @@ case "$CLIENT" in
__revision=$(wget -t 3 -T 10 -qO - https://grafana.com/api/dashboards/${__id} | jq .revision)
__url="https://grafana.com/api/dashboards/${__id}/revisions/${__revision}/download"
__file='/etc/grafana/provisioning/dashboards/besu_dashboard.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Besu Dashboard"' | jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "Besu Dashboard"' \
| jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
;;&
*reth* )
# reth_dashboard
Expand Down Expand Up @@ -106,16 +113,14 @@ case "$CLIENT" in
;;&
*ssv.yml* )
# SSV Operator Dashboard
__url='https://raw.githubusercontent.com/bloxapp/ssv/main/monitoring/grafana/dashboard_ssv_operator_performance.json'
__url='https://raw.githubusercontent.com/ssvlabs/ssv/main/monitoring/grafana/dashboard_ssv_operator_performance.json'
__file='/etc/grafana/provisioning/dashboards/ssv_operator_dashboard.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "SSV Operator Performance Dashboard"' \
| jq '.templating.list[0].current |= {selected: false, text: "ssv-node", value: "ssv-node"} | .templating.list[0].options = [ { "selected": true, "text": "ssv-node", "value": "ssv-node" } ] | .templating.list[0].query = "ssv-node"' \
| sed 's/eXfXfqH7z/Prometheus/g' >"${__file}"
__url='https://raw.githubusercontent.com/bloxapp/ssv/main/monitoring/grafana/dashboard_ssv_node.json'
| jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
__url='https://raw.githubusercontent.com/ssvlabs/ssv/main/monitoring/grafana/dashboard_ssv_node.json'
__file='/etc/grafana/provisioning/dashboards/ssv_node_dashboard.json'
wget -t 3 -T 10 -qcO - "${__url}" | jq '.title = "SSV Node Dashboard"' \
| jq '.templating.list[0].current |= {selected: false, text: "ssv-node", value: "ssv-node"} | .templating.list[0].options = [ { "selected": true, "text": "ssv-node", "value": "ssv-node" } ] | .templating.list[0].query = "ssv-node"' \
| sed 's/eXfXfqH7z/Prometheus/g' >"${__file}"
| jq 'walk(if . == "${DS_PROMETHEUS}" then "Prometheus" else . end)' >"${__file}"
;;&
!(*grafana-rootless*) )
# cadvisor and node exporter dashboard
Expand Down

0 comments on commit 3ef4393

Please sign in to comment.