Skip to content

docs: add New Relic monitoring dashboard for forwarder.* metrics - #52

Open
voorepreethi wants to merge 2 commits into
NR-601759-oci-advanced-metricsfrom
NR-601759-oci-dashboard
Open

docs: add New Relic monitoring dashboard for forwarder.* metrics#52
voorepreethi wants to merge 2 commits into
NR-601759-oci-advanced-metricsfrom
NR-601759-oci-dashboard

Conversation

@voorepreethi

@voorepreethi voorepreethi commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds docs/oci-log-forwarder-metrics-dashboard-template.json — a pre-built New Relic dashboard template covering all 17 forwarder.* custom metrics emitted by the OCI log forwarder.
  • Adds a Monitoring dashboard section to README.md with import instructions and a page-by-page summary.

Dashboard pages

Page 1 — Basic Metrics (available at metrics_tier=basic or advanced):

  • Forwarder info table (version, cloud, region, compartment)
  • Invocations billboard (total / success / error)
  • Record flow: received, delivered, dropped (rate/min timeseries)
  • Delivery health: invocations by status, delivery duration, drop rate % (warns at 1%, critical at 5%)
  • Pipeline lag (avg/max timeseries)

Page 2 — Advanced Metrics (available at metrics_tier=advanced):

  • Byte volumes: received/delivered rate, byte delivery ratio, batch size distribution
  • Errors: decode errors by class, serialize errors, oversized records, secret fetch errors (critical at >0), delivery errors by Go error class
  • Performance: batches created rate, run duration (min/avg/max)
  • Client cache: hit rate billboard, hits vs misses timeseries

Stacking

This PR is stacked on #48 (advanced metrics). It should be merged after #48 lands on NR-601759-oci-observability.

Test plan

  • Import docs/oci-log-forwarder-metrics-dashboard-template.json into New Relic (Dashboards → Import dashboard) after replacing YOUR_ACCOUNT_ID.
  • Verify Page 1 populates with metrics_tier=basic.
  • Verify Page 2 populates with metrics_tier=advanced.

Adds docs/oci-log-forwarder-metrics-dashboard-template.json — a
pre-built dashboard covering all 17 forwarder.* custom metrics across
both basic and advanced tiers:

- Page 1 (Basic Metrics): invocations, record flow, delivery health,
  pipeline lag — useful at metrics_tier=basic or advanced.
- Page 2 (Advanced Metrics): byte volumes, error breakdown by class,
  batching/performance, client cache hit rate — useful at
  metrics_tier=advanced.

Also adds a "Monitoring dashboard" section to README.md with import
instructions and a summary of each page's content.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
}
],
"platformOptions": {
"ignoreTimeRange": false

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hardcoded SINCE 1 hour ago on the "Forwarder info" table, while every other widget respects the dashboard's time-range picker,this is inconsistent — if someone changes the dashboard to view a 24-hour or 7-day window, this one table silently stays locked to the last hour.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It overrides the time stamp from the main time picker . So won't be an issue due to this flag

{
"name": "OCI Log Forwarder monitoring",
"description": null,
"permissions": "PUBLIC_READ_WRITE",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here anyone can edit this dashboard by hand in the UI.Is this intended or we should have PUBLIC_READ_ONLY?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If needed they can edit the dashboard to add more widgets. So added PUBLIC_READ_WRITE. Let me know if we have to move it PUBLIC_READ_ONLY

{
"alertSeverity": "WARNING",
"value": 0
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

threshold looks miscalibrated. It sets alertSeverity: WARNING at value: 0 on a widget whose first column is 'Total' invocations — that would visually flag the tile as a warning basically all the time (any nonzero traffic crosses "> 0").

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Record drop rate: dropped / received * 100
Byte delivery ratio: delivered / received * 100
Client cache hit rate: hit / total * 100
If the denominator is ever 0 (e.g. right after a fresh deploy with zero traffic, or a tenancy with a still-cold cache), NRQL division returns null rather than erroring.how is each visualization renders a null (blank vs. "0%" vs. a UI error), especially since two of these have severity thresholds attached.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

…tiles

The Invocations billboard's WARNING threshold bound to the Total column,
which is nonzero during all normal traffic, so it flagged every healthy
period as a warning. Also documents that Record drop rate, Byte delivery
ratio, and Client cache hit rate render blank (NRQL null) rather than 0%
when their denominator is zero, e.g. right after a fresh deploy.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@jashraf-hash jashraf-hash left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel here it is only considering 1 hour range from current time.Is that the intended use or we want to support any date range?

@voorepreethi

Copy link
Copy Markdown
Contributor Author

It supports all time ranges from time picker

@pbhadra0112 pbhadra0112 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants