From 2de724da5725c22e158b24da70c19d295f6034b0 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Tue, 5 Jun 2018 11:45:05 +0200 Subject: [PATCH] Moving to bash 2 --- init/prometheus.service | 12 ----- postservice/88_grafana | 99 ++++++++++++++++++++++++++++++++--------- 2 files changed, 78 insertions(+), 33 deletions(-) delete mode 100644 init/prometheus.service diff --git a/init/prometheus.service b/init/prometheus.service deleted file mode 100644 index b7f3eee..0000000 --- a/init/prometheus.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Prometheus Server -Documentation=https://prometheus.io/docs/introduction/overview/ -After=network-online.target - -[Service] -User=root -Restart=on-failure -ExecStart=/usr/bin/prometheus --config.file=/etc/prometheus/prometheus.yml - -[Install] -WantedBy=multi-user.target diff --git a/postservice/88_grafana b/postservice/88_grafana index 10592a1..3459bcd 100755 --- a/postservice/88_grafana +++ b/postservice/88_grafana @@ -1,5 +1,78 @@ #!/usr/bin/env bash + +function importDataSource() +{ + local grURL="${1}/api/datasources" # Grafana API URL + local dsName=${2} # Datasource Name + local dsURL="${3}" # Datasource URL + local dsType="prometheus" # Datasource type + + cmd="curl" + + + data=$(cat <<__EOF__ +{"name":"${dsName}","type":"${dsType}","url":"${dsURL}","access":"direct"} +__EOF__ + ) + + echo -ne "\tCreating datasource for Prometheus " + res=$(${cmd} "${grURL}" -H "Content-Type: application-json" --data-binary "${data}" 2>&1 ) + excode=${?} + case $res in + *"already exists"*) + echo " ... [Exists]" + ;; + *"Datasource added"*) + echo " ... [OK]" + ;; + *) + echo " ... Ooops ${res}" + ;; + esac +} + +function importDashboardFromMarket() +{ + local grURL="${1}/api/dashboards/import" # API URL to create new Dashboard + local dsName="${2}" # Datasource name (to link dashboard to data) + local dhID="${3}" # Dashboard ID in the market + local dhRev="${4}" # Dashboard Revision to download + local tmpFile=$(mktemp) + local dhFile=$(mktemp) + + # URL To download the json file for dashboard + local pubDashBoardURL="https://grafana.com/api/dashboards/${dhID}/revisions/${dhRev}/download" + + local cmd="curl" + + local dh=$(${cmd} --silent ${pubDashBoardURL} 2>&1) + + cat <<_EOF_ > ${tmpFile} +{ + "inputs": [ { "name":"DS_LOCALHOST", "type":"datasource", "pluginId":"prometheus", "value":"${dsName}" } ], + "dashboard": { "title": "Surveillance Système", ${dh:1:-1} }, + "folderId": 0, + "overwrite": true +} +_EOF_ + + res=$(${cmd} "${grURL}" -H "Content-Type: application-json" --data-binary "@${tmpFile}" 2>&1 ) + excode=${?} + case $res in + *"\"imported\":true"*) + echo " ... [Overwrited]" + ;; + *"Datasource added"*) + echo " ... [OK]" + ;; + *) + echo " ... Ooops ${res}" + ;; + esac +# rm -rf ${tmpFile} +} + grafanaHost=$(CreoleGet srvGrafanaIP 192.168.30.57) grafanaPort=$(CreoleGet srvGrafanaPort 3000) grafanaUser="admin" @@ -8,27 +81,11 @@ grafanaURL="http://${grafanaUser}:${grafanaPasswd}@${grafanaHost}:${grafanaPort} datasource_name=$(CreoleGet promDataSource "prometheus") promHost=$(CreoleGet adresse_ip_eth0) promPort='9090' +datasourceURL="http://${promHost}:${promPort}" - -cmd="curl" -url="${grafanaURL}/api/datasources" - -data=$(cat <<__EOF__ -{"name":"${datasource_name}","type":"prometheus","url":"http://${promHost}:${promPort}","access":"direct"} -__EOF__ -) - -echo -ne "\tCreating datasource for Prometheus " -res=$(${cmd} "${url}" -H "Content-Type: application-json" --data-binary "${data}" 2>&1 ) -excode=${?} -case $res in - *"already exists"*) - echo " ... [Exists]" - ;; - *"Datasource added"*) - echo " ... [OK]" - ;; -esac - +importDataSource ${grafanaURL} ${datasource_name} ${datasourceURL} +echo echo -ne "\tImporting Node Exporter Full Dashboard " +importDashboardFromMarket ${grafanaURL} ${datasource_name} 1860 11 +rm -rf ${dashBoardFile}