зеркало из https://github.com/microsoft/MonitoFi.git
102 строки
5.4 KiB
Bash
Executable File
102 строки
5.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# set +x
|
|
# // Copyright (c) Microsoft Corporation.
|
|
# // Licensed under the MIT license.
|
|
NiFi_API_URL='http://localhost:8080/nifi-api/'
|
|
USE_AZURE=false
|
|
USE_TEAMS=false
|
|
AppInsights_InstrumentationKey="dhjfbjsbsjk-sdbfhjas-random-guid" #"Please Replace with Azure AppInsights Instrumentation Key"
|
|
GRAFANA_USERNAME=root
|
|
GRAFANA_PASSWORD=root
|
|
|
|
if [ -x "$(command -v docker)" ]; then
|
|
echo "Checking Prerequisites.... : Docker is Installed"
|
|
else
|
|
echo "Installing docker"
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
apt-transport-https \
|
|
ca-certificates \
|
|
curl \
|
|
gnupg-agent \
|
|
jq \
|
|
software-properties-common
|
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
|
sudo add-apt-repository \
|
|
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
|
|
$(lsb_release -cs) \
|
|
stable"
|
|
|
|
sudo apt-get update
|
|
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
|
|
sudo usermod -aG docker $(whoami)
|
|
fi
|
|
|
|
if [ -x "$(command -v jq)" ]; then
|
|
echo "Checking Prerequisites.... : Jq is Installed"
|
|
else
|
|
echo "Installing Jq"
|
|
sudo apt-get update
|
|
sudo apt-get install -y jq
|
|
fi
|
|
|
|
#Create Folders for Grafana & Influxdb
|
|
echo "Creating necessary volumes for Grafana and InfluxDB..."
|
|
mkdir -p /home/$(whoami)/monitofi/{influx,grafana}
|
|
|
|
#Run Grafana & InfluxDB Container
|
|
#Note in below command since host netowrking is used, -p flags are ignored. They are kept there to show user which ports are running applications. User can access them with localhost:PORT on host machine directly.
|
|
echo "Launching InfluxDB & Grafana Container"
|
|
docker run -d --name influxdb-grafana --network=host -p 3003:3003 -p 3004:8083 -p 8086:8086 -v /home/$(whoami)/monitofi/influx:/var/lib/influxdb -v /home/$(whoami)/monitofi/grafana:/var/lib/grafana dtushar/docker-influxdb-grafana:latest
|
|
|
|
#This Is necessary to provide enough time to Grafana to spin up before making API Calls.
|
|
sleep 30
|
|
|
|
if [ "$USE_AZURE" = true ] ; then
|
|
echo "Adding AzureMonitor Datasource to Grafana"
|
|
#Add AzureMonitor Datasource
|
|
curl -X "POST" "http://localhost:3003/api/datasources" -H "Content-Type: application/json" --user $GRAFANA_USERNAME:$GRAFANA_PASSWORD --data-binary @Grafana/Datasources/azuremonitor.json | jq
|
|
fi
|
|
|
|
echo "Adding InfluxDB with InfluxQL Datasource to Grafana"
|
|
#Adding InfluxDB with InfluxQL DataSource
|
|
curl -X "POST" "http://localhost:3003/api/datasources" -H "Content-Type: application/json" --user $GRAFANA_USERNAME:$GRAFANA_PASSWORD --data-binary @Grafana/Datasources/influxql.json | jq
|
|
|
|
echo "Adding InfluxDB with FluxQL Datasource to Grafana"
|
|
#Adding InfluxDb with FluxQL Datasource
|
|
curl -X "POST" "http://localhost:3003/api/datasources" -H "Content-Type: application/json" --user $GRAFANA_USERNAME:$GRAFANA_PASSWORD --data-binary @Grafana/Datasources/influxflux.json | jq
|
|
|
|
|
|
if [ "$USE_TEAMS" = true ] ; then
|
|
echo "Adding Microsft Teams Alerts - Notification channel. to Grafana"
|
|
#Add Microsft Teams Alerts - Notification channel.
|
|
curl -X "POST" "http://localhost:3003/api/alert-notifications" -H "Content-Type: application/json" --user $GRAFANA_USERNAME:$GRAFANA_PASSWORD --data-binary @Grafana/NotificationChannels/MicrosoftTeams.json | jq
|
|
fi
|
|
|
|
|
|
if [ "$USE_AZURE" = true ] ; then
|
|
#Run MonitoFi container
|
|
echo "Running MonitoFi 1.0 Container with Azure AppInsights & InfluxDB Enabled..."
|
|
echo "Please Make sure to add Instrumentation Key for your Application Insights Resource in the IKEY Variable"
|
|
docker run --name=monitofi1 --network=host -d -e INFLUXDB_SERVER="localhost" -e ENDPOINT_LIST="controller/cluster,flow/cluster/summary,flow/process-groups/root,flow/status,counters,system-diagnostics,system-diagnostics?nodewise=true" -e SLEEP_INTERVAL=300 -e API_URL=$NiFi_API_URL -e IKEY=$AppInsights_InstrumentationKey --restart unless-stopped dtushar/monitofi:1.0
|
|
elif [ "$USE_AZURE" = false ] ; then
|
|
#Run MonitoFi container
|
|
echo "Running MonitoFi 1.0 Container..."
|
|
docker run --name=monitofi1 --network=host -d -e INFLUXDB_SERVER="localhost" -e ENDPOINT_LIST="controller/cluster,flow/cluster/summary,flow/process-groups/root,flow/status,counters,system-diagnostics,system-diagnostics?nodewise=true" -e SLEEP_INTERVAL=300 -e API_URL=$NiFi_API_URL --restart unless-stopped dtushar/monitofi:1.0
|
|
fi
|
|
|
|
echo "Importing NiFi Monitor Dashboard to Grafana"
|
|
#Please Adjust the queries according to number of nodes in your NiFi cluster after deployment.
|
|
#Adding Dashboard For MonitoFi
|
|
curl -X "POST" "http://localhost:3003/api/dashboards/db" -H "Content-Type: application/json" --user $GRAFANA_USERNAME:$GRAFANA_PASSWORD --data-binary @Grafana/Dashboards/NiFiMonitorDashboard.json | jq
|
|
|
|
if [ "$USE_AZURE" = true ] ; then
|
|
echo "Importing Azure Application Insights Dashboard to Grafana"
|
|
#Creating App Registration for use with Azure Monitor & Client Secret And API Key for App Insights is needed.
|
|
#Please refer to following links and populate correct IDs in GrafanaDashboards/AIDashboard.json file
|
|
# https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal
|
|
# https://dev.applicationinsights.io/quickstart/
|
|
#Adding Dashboard For Application Insights
|
|
curl -X "POST" "http://localhost:3003/api/dashboards/db" -H "Content-Type: application/json" --user $GRAFANA_USERNAME:$GRAFANA_PASSWORD --data-binary @Grafana/Dashboards/AIDashboard.json | jq
|
|
fi
|