diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /monitoring/grafana/build | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-x | monitoring/grafana/build/Makefile | 84 | ||||
-rw-r--r-- | monitoring/grafana/build/README.md | 37 |
2 files changed, 121 insertions, 0 deletions
diff --git a/monitoring/grafana/build/Makefile b/monitoring/grafana/build/Makefile new file mode 100755 index 000000000..64f619990 --- /dev/null +++ b/monitoring/grafana/build/Makefile @@ -0,0 +1,84 @@ + +GRAFANA_VERSION ?= 8.3.5-1 +PIECHART_VERSION ?= "1.6.2" +STATUS_PANEL_VERSION ?= "1.0.11" +DASHBOARD_DIR := "../../ceph-mixin/dashboards_out" +DASHBOARD_PROVISIONING := "ceph-dashboard.yml" +IMAGE := "docker.io/redhat/ubi8:8.5" +PKGMGR := "dnf" +GF_CONFIG := "/etc/grafana/grafana.ini" +# clip off "-<whatever> from the end of GRAFANA_VERSION +CONTAINER_VERSION := $(shell /bin/echo $(GRAFANA_VERSION) | /bin/sed 's/-.*//') + +ARCH ?= x86_64 +ifeq "$(ARCH)" "arm64" + override ARCH := aarch64 +endif + +LOCALTAG=ceph-grafana:$(CONTAINER_VERSION)-$(ARCH) +TAG=ceph/ceph-grafana:$(CONTAINER_VERSION)-$(ARCH) + +# Build a grafana instance - preconfigured for use within Ceph's dashboard UI + +build : + echo "Creating base container" + $(eval CONTAINER := $(shell sudo buildah from ${IMAGE})) + # Using upstream grafana build + curl -fLO https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}.${ARCH}.rpm + sudo buildah copy $(CONTAINER) grafana-${GRAFANA_VERSION}.${ARCH}.rpm /tmp/grafana-${GRAFANA_VERSION}.${ARCH}.rpm + sudo buildah run $(CONTAINER) ${PKGMGR} install -y --setopt install_weak_deps=false --setopt=tsflags=nodocs /tmp/grafana-${GRAFANA_VERSION}.${ARCH}.rpm + sudo buildah run $(CONTAINER) ${PKGMGR} clean all + sudo buildah run $(CONTAINER) rm -f /tmp/grafana*.rpm + sudo buildah run $(CONTAINER) grafana-cli plugins install grafana-piechart-panel ${PIECHART_VERSION} + sudo buildah run $(CONTAINER) grafana-cli plugins install vonage-status-panel ${STATUS_PANEL_VERSION} + sudo buildah run $(CONTAINER) mkdir -p /etc/grafana/dashboards/ceph-dashboard + sudo buildah copy $(CONTAINER) ${DASHBOARD_DIR}/*.json /etc/grafana/dashboards/ceph-dashboard + + @/bin/echo -e "\ +apiVersion: 1 \\n\ +providers: \\n\ +- name: 'Ceph Dashboard' \\n\ + torgId: 1 \\n\ + folder: 'ceph-dashboard' \\n\ + type: file \\n\ + disableDeletion: false \\n\ + updateIntervalSeconds: 3 \\n\ + editable: false \\n\ + options: \\n\ + path: '/etc/grafana/dashboards/ceph-dashboard'" >> ${DASHBOARD_PROVISIONING} + + + sudo buildah copy $(CONTAINER) ${DASHBOARD_PROVISIONING} /etc/grafana/provisioning/dashboards/${DASHBOARD_PROVISIONING} + + # expose tcp/3000 for grafana + sudo buildah config --port 3000 $(CONTAINER) + + # set working dir + sudo buildah config --workingdir /usr/share/grafana $(CONTAINER) + + # set environment overrides from the default locations in /usr/share + sudo buildah config --env GF_PATHS_LOGS="/var/log/grafana" $(CONTAINER) + sudo buildah config --env GF_PATHS_PLUGINS="/var/lib/grafana/plugins" $(CONTAINER) + sudo buildah config --env GF_PATHS_PROVISIONING="/etc/grafana/provisioning" $(CONTAINER) + sudo buildah config --env GF_PATHS_DATA="/var/lib/grafana" $(CONTAINER) + + # entrypoint + sudo buildah config --entrypoint "grafana-server --config=${GF_CONFIG}" $(CONTAINER) + + # finalize + sudo buildah config --label maintainer="Paul Cuzner <pcuzner@redhat.com>" $(CONTAINER) + sudo buildah config --label description="Ceph Grafana Container" $(CONTAINER) + sudo buildah config --label summary="Grafana Container configured for Ceph mgr/dashboard integration" $(CONTAINER) + sudo buildah commit --format docker --squash $(CONTAINER) $(LOCALTAG) + +push: + sudo podman tag ${LOCALTAG} quay.io/${TAG} + # sudo podman has issues with auth.json; just override it + sudo podman login --authfile=auth.json -u $(CONTAINER_REPO_USERNAME) -p $(CONTAINER_REPO_PASSWORD) quay.io + sudo podman push --authfile=auth.json --format v2s2 quay.io/${TAG} + +clean: + sudo podman rmi ${LOCALTAG} || true + sudo podman rmi quay.io/${TAG} || true + rm -f grafana-*.rpm* auth.json + rm -f ${DASHBOARD_PROVISIONING} diff --git a/monitoring/grafana/build/README.md b/monitoring/grafana/build/README.md new file mode 100644 index 000000000..f77a40abc --- /dev/null +++ b/monitoring/grafana/build/README.md @@ -0,0 +1,37 @@ +# Building the ceph-grafana container image +From Nautilus onwards, grafana is embedded into the mgr/dashboard UI and uses two discrete grafana plugins to provide visualisations within the UI. To better support disconnected installs, and provide a more tested configuration you may use the Makefile, in this directory, to (re)generate the grafana containers based on each Ceph release. + +The versions of grafana, and the plugins are defined in the script so testing can be done against a known configuration. + +## Container +The current implementation uses buildah with a CentOS8 base image. + +## Dependencies +Ensure you have the following dependencies installed on your system, before attempting to build the image(s) +- podman or docker +- buildah +- jq +- make + +## Build Process +The Makefile supports the following invocations; +``` +# make <-- create container with dashboards from master +# make all +# make ceph_version=octopus +# make ceph_version=nautilus +``` + +Once complete, a ```make all``` execution will provide the following containers on your system. +``` +# podman images +REPOSITORY TAG IMAGE ID CREATED SIZE +localhost/ceph/ceph-grafana master 606fa5444fc6 14 minutes ago 497 MB +localhost/ceph-grafana master 606fa5444fc6 14 minutes ago 497 MB +localhost/ceph-grafana octopus 580b089c14e7 15 minutes ago 497 MB +localhost/ceph/ceph-grafana octopus 580b089c14e7 15 minutes ago 497 MB +localhost/ceph-grafana nautilus 3c91712dd26f 17 minutes ago 497 MB +localhost/ceph/ceph-grafana nautilus 3c91712dd26f 17 minutes ago 497 MB +registry.centos.org/centos 8 29d8fb6c94af 30 hours ago 223 MB + +``` |