> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitoring

> View node health, sync status, and resource utilization on the Monitoring page of the Chainstack Self-Hosted Control Panel, backed by an integrated Grafana and VictoriaMetrics observability stack.

Chainstack Self-Hosted ships with an optional observability stack — Grafana, VictoriaMetrics, and a set of exporters — deployed in the `control-panel` namespace alongside the Control Panel itself. Once the stack is installed, three of its dashboards appear on the Control Panel's **Monitoring** page with no additional configuration. Reaching the rest of Grafana takes one extra step, because the Grafana service is internal to the cluster until you expose it.

## Viewing dashboards in the Control Panel

Click **Monitoring** in the Control Panel sidebar. The page embeds three Grafana dashboards as tabs and follows the Control Panel's light or dark theme, so you never leave the interface to check a node. It is a fixed set of dashboards rather than all of Grafana — to reach the rest, see [Accessing full Grafana](/docs/self-hosted/monitoring#accessing-full-grafana).

The tabs are:

* **Nodes** — sync status, peer count, and client-specific health signals for every deployed node, from the Chainstack blockchain-node-exporter
* **Cluster Overview** — cluster-wide resource utilization, from kube-state-metrics and the Prometheus node exporter
* **Pods** — per-pod status, restarts, and resource consumption

Grafana prompts you to log in the first time you open the page. Use the credentials described in [Grafana credentials](/docs/self-hosted/monitoring#grafana-credentials).

If the installation skipped the monitoring stack, the **Monitoring** page reports that monitoring is not enabled. Re-run the installer without the `--disable-monitoring` flag to add the stack.

## Grafana credentials

Grafana credentials are auto-generated during installation. At the end of the installation, `cpctl` displays the retrieval command. The Grafana username is `admin`. To retrieve the password:

```bash theme={"system"}
yq '.grafana.adminPassword' ~/.config/cp-suite/values/cp-control-panel-*.yaml
```

## Accessing full Grafana

The Control Panel's **Monitoring** page carries three dashboards. To use everything else Grafana offers — the full dashboard library, Explore and ad-hoc queries, and the alerting configuration — expose the `cp-grafana` service yourself. It is a ClusterIP service on port 80, reachable only inside the cluster until you do.

Two rules apply to every method:

* Include `/monitoring/` in the URL — Grafana is configured to serve from that sub-path, so a URL without it returns a redirect or a 404
* Use an address other than the Control Panel's — the Control Panel reserves `/monitoring` on its own address for the embedded page, so a typed URL there returns the three-dashboard view instead of Grafana

### Option 1: LoadBalancer (recommended for production)

```bash theme={"system"}
kubectl expose service cp-grafana --type=LoadBalancer --name=cp-grafana-external -n control-panel
kubectl get svc cp-grafana-external -n control-panel
```

Open `http://<EXTERNAL-IP>/monitoring/` once the external IP is assigned.

### Option 2: NodePort

```bash theme={"system"}
kubectl expose service cp-grafana --type=NodePort --name=cp-grafana-nodeport -n control-panel
kubectl get svc cp-grafana-nodeport -n control-panel
```

Open `http://<SERVER-IP>:<NODE-PORT>/monitoring/`, taking the assigned port from the command output.

### Option 3: Ingress

Give Grafana its own hostname. Keep the path at `/monitoring` so that Grafana's own links and redirects resolve:

```yaml theme={"system"}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cp-grafana-ingress
  namespace: control-panel
spec:
  rules:
  - host: grafana.yourdomain.com
    http:
      paths:
      - path: /monitoring
        pathType: Prefix
        backend:
          service:
            name: cp-grafana
            port:
              number: 80
```

Open `http://grafana.yourdomain.com/monitoring/`.

### Option 4: Port forward (testing only)

```bash theme={"system"}
kubectl port-forward svc/cp-grafana 3000:80 -n control-panel --address 0.0.0.0
```

Open `http://<SERVER-IP>:3000/monitoring/`.

## Stack components

| Component                           | Pod prefix                                     | Purpose                                  |
| ----------------------------------- | ---------------------------------------------- | ---------------------------------------- |
| Grafana                             | `cp-grafana`                                   | Dashboards and visualization             |
| VictoriaMetrics (single-node)       | `vmsingle-cp-victoria-metrics-k8s-stack`       | Metrics storage                          |
| VMAgent                             | `vmagent-cp-victoria-metrics-k8s-stack`        | Metrics scraping                         |
| VMAlertmanager                      | `vmalertmanager-cp-victoria-metrics-k8s-stack` | Alerting                                 |
| VictoriaMetrics operator            | `cp-victoria-metrics-operator`                 | Manages VictoriaMetrics custom resources |
| Chainstack blockchain-node-exporter | `cp-blockchain-node-exporter`                  | Chain-specific health signals            |
| Prometheus node exporter            | `cp-prometheus-node-exporter`                  | Host-level metrics                       |
| kube-state-metrics                  | `cp-kube-state-metrics`                        | Kubernetes resource metrics              |

## Disabling monitoring

During installation, the installer prompts you to configure the monitoring stack. Select option **\[3] Skip monitoring** to skip it.

You can also skip it non-interactively with `--disable-monitoring`:

```bash theme={"system"}
cpctl install -s STORAGE_CLASS_NAME --disable-monitoring
```

Skipping monitoring removes all observability components, and the Control Panel's **Monitoring** page reports that monitoring is not enabled. The rest of the Control Panel is unaffected.
