You can install and configure SQL Server monitoring on Kubernetes using the mssql-otel Helm chart. Optionally, the chart can also run a setup job that creates the monitoring login for you.
Important
This chart only supports SQL Server Authentication (username/password). It does not support Windows Authentication, Windows Domain Authentication, or gMSA. The collector always reaches SQL Server remotely over the network, whether it runs on Linux or Windows, self-hosted or on RDS, so SQL authentication works identically in every case. It also reports SQL Server metrics only (no host/infrastructure metrics), since the collector runs as a Kubernetes Deployment rather than on the SQL Server host itself.
Prerequisites
- Valid New Relic license key.
- Helm 3.0 or later, and
kubectlconfigured to access your Kubernetes cluster. - Network connectivity from your Kubernetes cluster to the SQL Server host (or RDS endpoint) and port:
- Self-hosted: a routed path to the SQL Server host (VPN, peering, or shared network), and the SQL Server-side firewall must allow the connection's source IP.
- AWS RDS: VPC peering, a transit gateway, or shared-VPC placement with the RDS instance, and the RDS security group must allow the SQL Server port (
1433by default) from the cluster's egress source.
- Either a monitoring login you've already created, or SQL Server admin credentials (a
sysadmin-role login, such assaor the RDS master user) so the chart's setup job can create one for you. See Configure monitoring credentials below.
Create the namespace
Create the namespace you'll install into. It must exist before you create any secrets in the next step, since helm install --create-namespace only creates the namespace during the final install step:
$kubectl create namespace newrelicConseil
Set it as the default namespace for your current kubectl context so you don't need to pass -n on every command below:
$kubectl config set-context --current --namespace=newrelicConfigure monitoring credentials
Decide whether you want the chart's setup job to create the SQL Server monitoring login for you, and if not, how you'll supply its credentials:
Configure the Helm values
Set mssql.topology to match your environment:
Value | Description |
|---|---|
| Self-hosted SQL Server, reached over the network (Linux or Windows host). |
| SQL Server on AWS RDS. |
Use the values.yaml that matches the credential method you chose in the previous step:
Parameter | Description |
|---|---|
| Your New Relic license key. |
| Your region's OTLP/HTTP endpoint, as a full URL with scheme: |
| Your SQL Server host (or RDS endpoint) and port, reachable from the cluster. |
| Optional. Set |
| A |
Conseil
See the chart's values.yaml for all available configuration options, including mssql.collectionInterval, mssql.maxConcurrentQueries, and the additionalReceiverConfig escape hatch.
(Optional) Monitor multiple instances from one release
Instead of mssql.*, set mssqlMulti.enabled: true to monitor several SQL Server instances (self-hosted or RDS) from a single collector pod in one release. The two modes are mutually exclusive: don't set mssql.server and mssqlMulti.enabled: true in the same release.
Multi-instance mode has no plain-username/password path: every instance needs its own Kubernetes secret with monitoring credentials. Decide whether you also want the setup job to create each monitoring login for you:
Parameter | Description |
|---|---|
| Set to |
|
|
| List of instances to monitor. Each entry requires a unique |
Conseil
Scrape settings (collection interval, TLS, metrics) apply identically to every instance in mssqlMulti.databases. There's no per-instance override. Use additionalReceiverConfig for anything that needs to differ. The setup job runs once per instance (<release>-setup-<name>) rather than once per release.
Install the Helm chart
Add the New Relic Helm repository:
bash$helm repo add newrelic https://helm-charts.newrelic.com$helm repo updateInstall the chart using your
values.yamlfile:bash$helm upgrade --install mssql-otel newrelic/mssql-otel \>-n newrelic \>--create-namespace \>-f values.yaml
Verify the installation
Check that the setup job completed (if enabled) and the collector pod is running:
bash$kubectl get jobs,pods -n newrelic --watchRun this query in the query builder to confirm data is arriving:
SELECT count(*) FROM MetricWHERE metricName LIKE 'sqlserver.%'AND instrumentation.provider = 'opentelemetry'SINCE 10 minutes ago
Find and use your data
Once your data is being collected, you can access comprehensive SQL Server database monitoring through the New Relic UI.
To find your SQL Server database entity in New Relic:
Go to one.newrelic.com > All capabilities > Databases.
From the Entity type dropdown, select MSSQL instance, then click Apply.
Select your SQL Server database from the list of entities.
After setting up SQL Server monitoring with NRDOT, you can:
- Create custom dashboards to visualize your database metrics
- Set up alerts for critical database performance thresholds
- Explore your data using New Relic query capabilities