Skip to main content

Latest blog: Installing Grafana with Nuon

Guides

Installing Grafana with Nuon

Install Grafana and Prometheus into your customers' cloud accounts with Nuon's BYOC platform, utilizing Helm, Terraform, and Kubernetes manifest Components and Day-2 Action scripts

Mark Milligan portrait

Mark Milligan

VP of Revenue

10 min read
Let customers install Grafana in their cloud accounts - powered by Nuon

Installing Grafana with Nuon

This is another post in a series where we show how to install a software vendor’s product with Nuon in a Bring Your Own Cloud (BYOC) way where Grafana is installed in a customer’s cloud account for stronger security and easier management.

Grafana is an open-source platform for monitoring and observability that allows users to visualize, analyze, and understand their data through customizable dashboards and alerts.

Prometheus is an open-source monitoring and alerting toolkit that collects and stores time-series metrics from systems and applications.

Grafana connects to Prometheus as a data source, enabling users to visualize and analyze those metrics through customizable dashboards. Together, they provide powerful observability for infrastructure like PostgreSQL, especially when paired with exporters such as the Postgres exporter.

A PostgreSQL dashboard within Grafana's observability platform - installed by Nuon

The Grafana App Config along with other example App Configs are located in a Nuon GitHub repo.

Feel free to request access to the Nuon trial and use the Nuon CLI to sync this App Config to Nuon’s cloud and install Grafana into your cloud account.

Benefits of BYOC

Self-hosting a software product requires the customer to read the vendor’s docs while being responsible for installing and upgrading the software. This requires maintaining technically-competent DevOps staff and staying current on the latest releases. On the plus side, the software and data run securely in the customer’s cloud infrastructure.

If the vendor offers its software as a multi-tenant or single-tenant cloud SaaS, the customer is free of installation and upgrade efforts, which are performed by the vendor. The customer however accepts the risk that their data is residing in the vendor’s cloud infrastructure.

Bring Your Own Cloud (BYOC) takes the best of self-hosting, specifically data sovereignty and security, and marries it with the best of cloud SaaS where customers get instant access and do not have to toil or worry about installations and upgrades.

Creating the Grafana App Config

One goal of this App Config is to demonstrate Grafana showing Prometheus metric data from a PostgreSQL database called exampledb that is not the Grafana data plane PostgreSQL database. This App Config deploys both PostgreSQL databases in different namespaces in an EKS cluster. A Postgres Exporter is deployed into the exampledb namespace and Prometheus and Grafana are deployed into a grafana namespace.

The App Config leverages Kubernetes secrets for PostgreSQL database access and there is an ALB and certificate in the VPC for cluster and Grafana dashboard access. The App Config has several Action scripts including an installation Action script that configures the default storage class and other Action scripts for day-2 operations like an ALB health check and to simulate heavy PostgreSQL usage to produce good activity in the Grafana dashboards.

Several PostgreSQL dashboards are automatically downloaded and installed as part of the Grafana Helm deployment as well as making one of the dashboards the default view when a user logs into Grafana. Managing the entire installation is the Nuon Runner which is in an EC2 VM in the same VPC as the Kubernetes cluster.

Nuon App Config Components

Both PostgreSQL instances, the PostgreSQL Exporter, Prometheus, Grafana and the Application Load Balancer are deployed with Helm. The database secrets are installed with Kubernetes Manifests and the Certificate with Terraform. The Actions are scripts using kubectl to exec into the container to perform bash and psql operations.

A list of Components within Nuon's Dashboard UI, depicting type from Helm, Terraform to Kubernetes manifest

Example Database Foundation

  • PostgreSQL Database (1-exampledb-postgres.toml) - The target database to monitor with persistent storage and connection pooling. Deployed with Helm into the exampledb namespace.
  • PostgreSQL Secrets (2-exampledb-secrets.toml) - Connection credentials and datasource URLs for secure database access. Applied as a Kubernetes manifest into the grafana namespace so Grafana can connect to the exampledb database to monitor it.

Grafana Foundation

  • Grafana Database (1-grafana-postgres.toml) - Dedicated PostgreSQL instance for Grafana's internal data storage. Deployed with Helm into the grafana namespace.
  • Grafana Secrets (2-grafana-secrets.toml) - Database connection strings and admin credentials for Grafana configuration. Applied as a Kubernetes manifest into the grafana namespace.

Metrics Collection

  • Postgres Exporter (3-postgres-exporter.toml) - Metrics collection service that exposes PostgreSQL performance data to Prometheus. Deployed with Helm into the exampledb namespace.

Monitoring & Visualization

  • Prometheus (4-prometheus.toml) - Time-series database that scrapes metrics from postgres-exporter and system components. Deployed with Helm into the grafana namespace.
  • Grafana (5-grafana.toml) - Visualization platform with pre-configured PostgreSQL monitoring dashboards from Grafana.com. Deployed with Helm into the grafana namespace.

External Access

  • SSL Certificate (6-certificate.toml) - TLS certificate management for secure HTTPS access. Deployed with Terraform into the VPC.
  • Application Load Balancer (7-alb.toml) - External access and traffic routing to Grafana with SSL termination. Deployed with Helm into the VPC.
Nuon workflows in the dashboard with an Action script being executed

Actions

Database Load Testing

  • Simulate DB Activity (simulate-db-activity.toml) - A Bourne shell script that creates intensive database workload with 10K users, 50K orders, and up to 200 concurrent connections
  • Generates targeted metrics for dashboard gauges: row operations, transactions, cache hits, and connection activity

Load Management

  • Stop DB Activity (stop-db-activity.toml) - A Bourne shell script that initiates emergency termination of all simulation processes and database connections
  • Comprehensive cleanup of temporary files and connection states for safe repeated testing

These Components and Actions show the proper dependency chain: databases → secrets → exporters → monitoring → visualization → external access.

A dependency graph from the dashboard for the Components of the App Config

Installing Grafana in a Customer Cloud

The Grafana App Config and their TOML files are validated and uploaded to your Nuon control plane using the Nuon CLI.

git clone https://github.com/nuonco/example-app-configs

cd ~/example-app-configs/grafana

nuon login
nuon apps create -n grafana
nuon apps sync .

The components are built as OCI artifacts and placed in a cloud container registry.

Through the Nuon web dashboard, an Install is kicked off and inputs provide defaults for the target installation.

Starting an Install in a customer's cloud account by providing inputs through the Nuon dashboard. This can also be done with config files and the CLI

A cloud provider stack is shared with the target cloud account profile which creates a VPC and a VM with the Nuon runner which phones home to get instructions or steps from the App Config to install the Grafana app.

Enterprise features include an Approvals workflow that asks the operator permission to proceed with an Apply step for each component in the App Config.

The Install Runner's status and notice an Action script to simulate PostgreSQL activity being executed

Once the installation is complete, the public URL is included in the Install’s README markdown in the Nuon dashboard and can be shared with the target cloud account user base to start using the Grafana application.

The login page to Grafana after installed by Nuon
Executing Prometheus commands on the PostgreSQL database within the Grafana dashboard
One of three PostgreSQL dashboards automatically downloaded as part of the Grafana installation by Nuon

Grafana is an open-source platform for monitoring and observability that allows users to visualize, analyze, and understand their data through customizable dashboards and alerts. Grafana's user-friendly interface enables users to create interactive visualizations such as graphs, charts, and heatmaps, facilitating real-time insights and decision-making.  include Uber, NVIDIA, BlackRock, Palantir, Wells Fargo, SAP, and Citi.

Prometheus is an open-source monitoring and alerting toolkit that collects and stores time-series metrics from systems and applications. Grafana connects to Prometheus as a data source, enabling users to visualize and analyze those metrics through customizable dashboards. Together, they provide powerful observability for infrastructure like PostgreSQL, especially when paired with exporters such as the Postgres exporter.

Software vendors like Grafana and Prometheus can invest in Nuon to unlock new revenue streams with customers who want a SaaS experience of instant access and no upgrade hassles while retaining their data in their cloud accounts.

Global 2000 companies and government agencies can invest in Nuon to package up and deploy all of their vendor and in-house developed apps for easier DevOps management, stronger security, and a SaaS-like multi-cloud experience.

Ready to get started?

Newsletter

Subscribe to our newsletter

Too much email? Subscribe via RSS feed