From 9f6c929e45e96e79db439b98f42d39465b383a4a Mon Sep 17 00:00:00 2001 From: Luis Guzman Date: Wed, 1 Jul 2020 15:23:08 -0500 Subject: [PATCH] Fisrt draft on grafana --- grafana.sh | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 grafana.sh diff --git a/grafana.sh b/grafana.sh new file mode 100644 index 0000000..b7bb485 --- /dev/null +++ b/grafana.sh @@ -0,0 +1,113 @@ +#!/bin/bash +# Grafana Installer +# Based on: +# https://community.jitsi.org/t/how-to-to-setup-grafana-dashboards-to-monitor-jitsi-my-comprehensive-tutorial-for-the-beginner/ +# by Woodworker_Life +# Woodworker_Life © - 2020 +# SwITNet Ltd © - 2020, https://switnet.net/ +# GPLv3 or later. + +MAIN_TEL="/etc/telegraf/telegraf.conf" +TEL_JIT="/etc/telegraf/telegraf.d/jitsi.conf" +PUBLIC_IP="$(dig -4 @resolver1.opendns.com ANY myip.opendns.com +short)" + +# +apt update && apt install -y gnupg2 curl wget +wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - +echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list +apt update && apt install influxdb -y +systemctl enable --now influxdb +systemctl status influxdb + +# +curl -s https://packages.grafana.com/gpg.key | sudo apt-key add - +add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" +apt update && apt install grafana -y +systemctl enable --now grafana-server +systemctl status grafana-server + +# +wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - +echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list +apt update && apt install telegraf -y +mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.original + +cat << TELEGRAF > $MAIN_TEL +[global_tags] + +############################################################################### +# GLOBAL # +############################################################################### + +[agent] + interval = "10s" + debug = false + hostname = "localhost" + round_interval = true + flush_interval = "10s" + flush_jitter = "0s" + collection_jitter = "0s" + metric_batch_size = 1000 + metric_buffer_limit = 10000 + quiet = false + logfile = "" + omit_hostname = false + +TELEGRAF + +cat << JITSI_TELEGRAF > $TEL_JIT +############################################################################### +# INPUTS # +############################################################################### + +[[inputs.http]] + name_override = "jitsi_stats" + urls = [ + "http://localhost:8080/colibri/stats" + ] + + data_format = "json" + +############################################################################### +# OUTPUTS # +############################################################################### + +[[outputs.influxdb]] + urls = ["http://localhost:8086"] + database = "jitsi" + timeout = "0s" + retention_policy = "" + +JITSI_TELEGRAF + +systemctl enable --now telegraf +systemctl status telegraf + + +sed -i "s|JVB_OPTS=\"--apis.*|JVB_OPTS=\"--apis=rest,xmpp\"" /etc/jitsi/videobridge/config +sed -i "s|TRANSPORT=muc|TRANSPORT=muc,colibri|" /etc/jitsi/videobridge/sip-communicator.properties + +systemctl restart jitsi-videobridge2 + +# Create InfluxDB datasource +curl 'http://admin:admin@localhost:3000/api/datasources' -X \ +POST -H 'Content-Type: application/json;charset=UTF-8' \ +--data-binary \ +'{"name":"InfluxDB","type":"datasource","url":"http://localhost","access":"proxy","isDefault":true,"database":"jitsi"}' + +# Add Grafana Dashboard +### Please edit grafana_* variables to match your Grafana setup: +grafana_host="http://localhost:3000" +grafana_cred="admin:admin" +grafana_datasource="jitsi" +ds=(11969); +for d in "${ds[@]}"; do + echo -n "Processing $d: " + j=$(curl -s -k -u "$grafana_cred" $grafana_host/api/gnet/dashboards/$d | jq .json) + curl -s -k -u "$grafana_cred" -XPOST -H "Accept: application/json" \ + -H "Content-Type: application/json" \ + -d "{\"dashboard\":$j,\"overwrite\":true, \ + \"inputs\":[{\"name\":\"DS_INFLUXDB\",\"type\":\"datasource\", \ + \"pluginId\":\"influxdb\",\"value\":\"$grafana_datasource\"}]}" \ + $grafana_host/api/dashboards/import; echo "" +done