diff --git a/hack/grafana-dashboards-configmap-generator/bin/grafana_dashboards_generate.sh b/hack/grafana-dashboards-configmap-generator/bin/grafana_dashboards_generate.sh index d89cfc97f102e7bc621f2a7ecb98b2428f67aeea..ee6b49e7afd2eb23715bdac938aa298b446ac72f 100755 --- a/hack/grafana-dashboards-configmap-generator/bin/grafana_dashboards_generate.sh +++ b/hack/grafana-dashboards-configmap-generator/bin/grafana_dashboards_generate.sh @@ -77,11 +77,13 @@ DASHBOARD_HEADER_FILE="$TEMPLATES_DIR/dashboard.header" DASHBOARD_FOOT_FILE="$TEMPLATES_DIR/dashboard.foot" CONFIGMAP_HEADER="$TEMPLATES_DIR/ConfigMap.header" GRAFANA_DEPLOYMENT_TEMPLATE="$TEMPLATES_DIR/grafana-deployment-template.yaml" +GRAFANA_DASHBOARDS_TEMPLATE="$TEMPLATES_DIR/grafana-dashboards-template.yaml" OUTPUT_BASE_DIR="$TOOL_HOME/output" # Some default values OUTPUT_FILE="$OUTPUT_BASE_DIR/grafana-dashboards-configMap-$DATE_EXEC.yaml" GRAFANA_OUTPUT_FILE="$OUTPUT_BASE_DIR/grafana-deployment-$DATE_EXEC.yaml" +GRAFANA_DASHBOARD_OUTPUT_FILE="$OUTPUT_BASE_DIR/grafana-dashboards-$DATE_EXEC.yaml" DASHBOARDS_DIR="$TEMPLATES_DIR/grafana-dashboards" APPLY_CONFIGMAP="false" @@ -100,6 +102,10 @@ while (( "$#" )); do GRAFANA_OUTPUT_FILE="$2" shift ;; + "-d" | "--grafana-dashboard-output-file") + GRAFANA_DASHBOARD_OUTPUT_FILE="$2" + shift + ;; "-i" | "--input-dir") DASHBOARDS_DIR="$2" shift @@ -298,6 +304,7 @@ test -f "$DASHBOARD_FOOT_FILE" || { echo "Template $DASHBOARD_FOOT_FILE not foun test -f "$DASHBOARD_HEADER_FILE" || { echo "Template $DASHBOARD_HEADER_FILE not found"; exit 1; } test -f "$CONFIGMAP_HEADER" || { echo "Template $CONFIGMAP_HEADER not found"; exit 1; } test -f "$GRAFANA_DEPLOYMENT_TEMPLATE" || { echo "Template $GRAFANA_DEPLOYMENT_TEMPLATE not found"; exit 1; } +test -f "$GRAFANA_DASHBOARDS_TEMPLATE" || { echo "Template $GRAFANA_DEPLOYMENT_TEMPLATE not found"; exit 1; } test ! -d "$OUTPUT_BASE_DIR" && { echo "ERROR: missing directory $OUTPUT_BASE_DIR"; exit 1; } @@ -306,6 +313,7 @@ test -d "$DASHBOARDS_DIR" || { echo "ERROR: Dashboards directory not found: $DAS test -f "$OUTPUT_FILE" && { echo "ERROR: Output file already exists: $OUTPUT_FILE"; exit 1; } test -f "$GRAFANA_OUTPUT_FILE" && { echo "ERROR: Output file already exists: $GRAFANA_OUTPUT_FILE"; exit 1; } +test -f "$GRAFANA_DASHBOARD_OUTPUT_FILE" && { echo "ERROR: Output file already exists: $GRAFANA_DASHBOARD_OUTPUT_FILE"; exit 1; } touch $OUTPUT_FILE || { echo "ERROR: Unable to create or modify $OUTPUT_FILE"; exit 1; } touch $GRAFANA_OUTPUT_FILE || { echo "ERROR: Unable to create or modify $GRAFANA_OUTPUT_FILE"; exit 1; } @@ -380,6 +388,22 @@ sed -e "s#XXX_VOLUMES_XXX#$(indentMultiLineString 6 "$VOLUMES")#" \ -e "s#XXX_WATCH_DIR_XXX#$(indentMultiLineString 10 "$WATCH_DIR")#" \ $GRAFANA_DEPLOYMENT_TEMPLATE > $GRAFANA_OUTPUT_FILE +echo +echo "# Generating Grafana dashboard sources file for $total_configmaps_created directories" +DASHBOARD_SOURCES="" +for (( j=0; j<$total_configmaps_created; j++ )); do + echo "# Preparing grafana dashboards sources to support configmap: /grafana-dashboard-definitions/$j" + test "$DASHBOARD_SOURCES" && DASHBOARD_SOURCES="$DASHBOARD_SOURCES\n- name: '$j'\n org_id: 1\n folder: ''\n type: file\n options:\n folder: /grafana-dashboard-definitions/$j" || DASHBOARD_SOURCES="- name: '$j'\n org_id: 1\n folder: ''\n type: file\n options:\n folder: /grafana-dashboard-definitions/$j" + + # echo "DEBUG:" + # echo "DASHBOARD_SOURCES: $DASHBOARD_SOURCES" + echo +done + +echo "# Processing grafana dashboards template into $GRAFANA_DASHBOARD_OUTPUT_FILE" +sed -e "s#XXX_DASHBOARDS_XXX#$(indentMultiLineString 4 "$DASHBOARD_SOURCES")#" \ + $GRAFANA_DASHBOARDS_TEMPLATE > $GRAFANA_DASHBOARD_OUTPUT_FILE + # If output file is empty we can delete it and exit test ! -s "$OUTPUT_FILE" && { echo "# Configmap empty, deleting file"; rm $OUTPUT_FILE; exit 0; } test ! -s "$GRAFANA_OUTPUT_FILE" && { echo "# Configmap empty, deleting file"; rm $GRAFANA_OUTPUT_FILE; exit 0; } diff --git a/hack/grafana-dashboards-configmap-generator/templates/grafana-dashboards-template.yaml b/hack/grafana-dashboards-configmap-generator/templates/grafana-dashboards-template.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a8b009828f9e7ab1542aac02beaed4dc78bf6ef1 --- /dev/null +++ b/hack/grafana-dashboards-configmap-generator/templates/grafana-dashboards-template.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana-dashboards +data: + dashboards.yaml: |+ +XXX_DASHBOARDS_XXX diff --git a/hack/scripts/generate-manifests.sh b/hack/scripts/generate-manifests.sh index b6f35a2df589b310c70f5dfbd95881230c936771..6f14056b9c69cf75ebcea27ce866eca7ce56521e 100755 --- a/hack/scripts/generate-manifests.sh +++ b/hack/scripts/generate-manifests.sh @@ -13,9 +13,10 @@ hack/scripts/generate-dashboards-configmap.sh > manifests/grafana/grafana-dashbo # Input dir: assets/grafana # output file: manifests/grafana/grafana-dashboards.yaml # grafana deployment output file: manifests/grafana/grafana-deployment.yaml -test -f manifests/grafana/grafana-dashboards.yaml && rm -f manifests/grafana/grafana-dashboard-definitions.yaml +test -f manifests/grafana/grafana-dashboard-definitions.yaml && rm -f manifests/grafana/grafana-dashboard-definitions.yaml test -f manifests/grafana/grafana-deployment.yaml && rm -f manifests/grafana/grafana-deployment.yaml -hack/grafana-dashboards-configmap-generator/bin/grafana_dashboards_generate.sh -s 240000 -i assets/grafana/generated -o manifests/grafana/grafana-dashboard-definitions.yaml -g manifests/grafana/grafana-deployment.yaml +test -f manifests/grafana/grafana-dashboards.yaml && rm -f manifests/grafana/grafana-dashboards.yaml +hack/grafana-dashboards-configmap-generator/bin/grafana_dashboards_generate.sh -s 240000 -i assets/grafana/generated -o manifests/grafana/grafana-dashboard-definitions.yaml -g manifests/grafana/grafana-deployment.yaml -d manifests/grafana/grafana-dashboards.yaml # Generate Grafana Credentials Secret hack/scripts/generate-grafana-credentials-secret.sh admin admin > manifests/grafana/grafana-credentials.yaml diff --git a/manifests/grafana/grafana-dashboards.yaml b/manifests/grafana/grafana-dashboards.yaml index ed3fe5fe0e7d178e062aef56cfee4afae3c590be..772d3f64902f652365e4b7b2714f483cdde42b6e 100644 --- a/manifests/grafana/grafana-dashboards.yaml +++ b/manifests/grafana/grafana-dashboards.yaml @@ -4,7 +4,7 @@ metadata: name: grafana-dashboards data: dashboards.yaml: |+ - - name: 'default' + - name: '0' org_id: 1 folder: '' type: file