Insight Logs and Metrics
Metrics
Grafana OnCall Metrics represents certain parameters, such as:
- A total count of alert groups for each integration in every state (firing, acknowledged, resolved, silenced).
It is a gauge, and its name has the suffix
alert_groups_total
- Response time on alert groups for each integration (mean time between the start and first action of all alert groups
for the last 7 days in selected period). It is a histogram, and its name has the suffix
alert_groups_response_time
with the histogram suffixes such as_bucket
,_sum
and_count
- A total count of alert groups users were notified of for each user. It is a counter, and its name has the suffix
user_was_notified_of_alert_groups_total
You can find more information about metrics types in the Prometheus documentation.
To retrieve Prometheus metrics use PromQL. If you are not familiar with PromQL, check this documentation.
For Grafana Cloud customers
OnCall application metrics are collected in preinstalled grafanacloud_usage
datasource and are available for every
cloud instance.
Metrics have prefix grafanacloud_oncall_instance
, e.g. grafanacloud_oncall_instance_alert_groups_total
,
grafanacloud_oncall_instance_alert_groups_response_time_seconds_bucket
and
grafanacloud_oncall_instance_user_was_notified_of_alert_groups_total
.
For open source customers
To collect OnCall application metrics you need to set up Prometheus and add it to your Grafana instance as a datasource. You can find more information about Prometheus setup in the OSS documentation
Metrics will have the prefix oncall
, e.g. oncall_alert_groups_total
, oncall_alert_groups_response_time_seconds_bucket
and oncall_user_was_notified_of_alert_groups_total
.
Your metrics may also have additional labels, such as pod
, instance
, container
, depending on your Prometheus setup.
Metrics: Alert groups total
This metric has the following labels:
Label Name | Description |
---|---|
id | ID of Grafana instance (stack) |
slug | Slug of Grafana instance (stack) |
org_id | ID of Grafana organization |
team | Team name |
integration | OnCall Integration name |
service_name | Value of Alert group service_name label |
state | Alert groups state. May be firing , acknowledged , resolved and silenced |
Query example:
Get the number of alert groups in “firing” state in integration “Grafana Alerting” in Grafana stack “test_stack”:
grafanacloud_oncall_instance_alert_groups_total{slug="test_stack", integration="Grafana Alerting", state="firing"}
Metrics: Alert groups response time
This metric has the following labels:
Label Name | Description |
---|---|
id | ID of Grafana instance (stack) |
slug | Slug of Grafana instance (stack) |
org_id | ID of Grafana organization |
team | Team name |
integration | OnCall Integration name |
service_name | Value of Alert group service_name label |
le | Histogram bucket value in seconds. May be 60 , 300 , 600 , 3600 and +Inf |
Query example:
Get the number of alert groups with response time more than 10 minutes (600 seconds) in integration “Grafana Alerting” in Grafana stack “test_stack”:
grafanacloud_oncall_instance_alert_groups_response_time_seconds_bucket{slug="test_stack", integration="Grafana Alerting", le="600"}
Metrics: Alert groups user was notified of
This metric has the following labels:
Label Name | Description |
---|---|
id | ID of Grafana instance (stack) |
slug | Slug of Grafana instance (stack) |
org_id | ID of Grafana organization |
username | User username |
Query example:
Get the number of alert groups user with username “alex” was notified of in Grafana stack “test_stack”:
grafanacloud_oncall_instance_user_was_notified_of_alert_groups_total{slug="test_stack", username="alex"}
Dashboard
You can find the “OnCall Insights” dashboard in the list of your dashboards in the folder General
, it has the tag
oncall
. In the datasource dropdown select your Prometheus datasource (for Cloud customers it’s grafanacloud_usage
).
You can filter data by your Grafana instances, teams and integrations.
To re-import OnCall metrics dashboard go to Administration
-> Plugins
page, find OnCall in the plugins list, open
Dashboards
tab at the OnCall plugin settings page and click “Re-import” near “OnCall Metrics”. After that you can find
the “OnCall Metrics” dashboard in your dashboards list.
Be aware: if you have made changes to the dashboard, they will be lost after re-importing or after the plugin update. To save your changes go to the “OnCall Metrics” dashboard settings, click “Save as” and save a copy of the dashboard.
You can also view Insights from Grafana OnCall.
To view Insights, complete the following steps.
- Open Grafana OnCall.
- Click the Insights sub-section in the navigation menu.
Logs
Note: Grafana OnCall insight logs are available in Grafana Cloud only. We’re in the process of rolling out Insight Logs to all customers, if you don’t see insight logs in your Grafana Cloud stack, please reach out to support.
Grafana OnCall Insights Logs represents certain activities, such as when:
- A user creates, updates, or deletes a resource.
- A Maintenance mode is started or finished for an integration.
- A user configures a ChatOps integration.
This configuration is done for you in Grafana Cloud with Usage Insights Loki data source. You can use this query to retrieve all logs related to your OnCall instance.
{instance_type="oncall"} | logfmt | __error__=``
Resource logs
Logs are created each time a user modifies any resource in Grafana OnCall.
These logs will have action_type=resource
field and can be retrieved with following query:
{instance_type="oncall"} | logfmt | __error__=`` | action_type = `resource`
Format
Logs contain the following fields, where the fields followed by * are always available, and the others depend on the logged event:
Field Name | Description |
---|---|
action_name * | Type of the resource action, which can be created , updated or deleted . |
action_type * | Insight Log type. For resource insight logs it will be resource . |
author * | Username of user who performed action. |
author_id * | ID of user who performed action. |
prev_state | JSON representation of resource before update. |
new_state | JSON representation of resource after update. |
resource_id * | ID of target resource. |
resource_name * | Name of target resource. |
resource_type * | Type of target resource (See available types below). |
team * | Name of team to which resource belongs. |
team_id | ID of team to which resource belongs. |
integration | Name of integration to which resource belongs. |
integration_id | ID of integration to which resource belongs. |
escalation_chain | Name of team to which resource belongs. |
escalation_chain_id | ID of team to which resource belongs. |
schedule | Name of schedule to which resource belongs. |
schedule_id | ID of schedule to which resource belongs . |
resource types are: integration_heartbeat
, escalation_chain
, integration
, outgoing_webhook
,
escalation_policy
, public_api_token
, schedule_export_token
,user_schedule_export_token
,
oncall_shift
, web_schedule
, ical_schedule
, calendar_schedule
, shift_swap_request
, organization
,
user
, webhook
.
Maintenance logs
Logs are created every time when a maintenance mode is started or finished for an integration.
These logs will have action_type=maintenace
field and can be retrieved with following query:
{instance_type="oncall"} | logfmt | __error__=`` | action_type = `maintenance`
Format
Logs of maintenance insights contain the following fields, where the fields followed by * are always available, and the others depend on the logged event:
Field Name | Description |
---|---|
action_name * | Name of the maintenance action, which can be started or finised . |
action_type * | Insight Log type. For Maintenance Insight logs it will be maintenance . |
author | Username of user who performed action. |
author_id | Grafana OnCall ID of user who performed action. |
maintenance_mode * | Type of the maintenance, which can be maintenance or debug |
resource_id * | ID of target integration. |
resource_name * | Name of target integration. |
team * | Name of team to which integration belongs. |
team_id | ID of team to which integration belongs. |
ChatOps logs
Logs are created when user modifies ChatOps settings.
These log lines will have action_type=chat_ops
field and can be retrieved with following query:
{instance_type="oncall"} | logfmt | __error__=`` | action_type = `chat_ops`
Format
Logs of chatops insight logs contain the following fields, where the fields followed by * are always available, and the others depend on the logged event:
Field Name | Description |
---|---|
action_name * | Name of the chatops action (See available names below). |
action_type * | Insight Log type. For Chatops Insight logs it always will be chat_ops . |
author * | Username of user who performed action |
author_id * | Grafana OnCall ID of user who performed action |
сhat_ops_type * | Type of chatops integration. Can be telegram , slack , msteams , mobile_app |
linked_user | Username of user linked to chatops integration |
linked_user_id | Grafana OnCall ID of user linked to chatops integration |
channel_name | Name of the channel linked to chatops integration |
prev_channel | Name of team to which resource belongs |
new_channel | Grafana OnCall ID of team to which resource belongs |
chatops action names: workspace_connected
, workspace_disconnected
, channel_connected
, channel_disconnected
, user_linked
, used_unlinked
, default_channel_changed
.
Examples
Here is some examples of practical queries to Grafana OnCall insight logs. LogQL is used to retrieve them. If you aren’t familiar with LogQL, refer to LogQL: Log query language.
Resource IDs are used a lot in insight logs. You can find them in web ui (example for integration):
- Open Grafana OnCall.
- Navigate to resource.
- The URL looks like
https://<YOUR_STACK_SLUG>/a/grafana-oncall-app/integrations/C5VXMIFKKP67K
. - Integration ID is
C5VXMIFKKP67K
.
Alternatively you can find the resource ID using the [Grafana OnCall API] or browser dev tools.
Actions performed by user:
{instance_type="oncall"} | logfmt | __error__=`` | action_type = `resource` and author="<username>"
Actions performed with all schedules:
{instance_type="oncall"} | logfmt | __error__=`` | action_type = `resource` and (resource_type=`web_schedule` or resource_type=`calendar_schedule` or resource_type=`ical_schedule`)
Changes of escalation policies for escalation chain:
{instance_type="oncall"} | logfmt | __error__=`` | action_type = `resource` and resource_type=`escalation_policy` and escalation_chain_id=`<ESCALATION_CHAIN_ID>`
Maintenance events for integration:
{instance_type="oncall"} | logfmt | __error__=`` | action_type = `maintenance` and resource_id=`CSA67IQW2NMVL`
Actions performed with slack chatops integration:
{instance_type="oncall"} | logfmt | __error__=`` | action_type = `chat_ops` and chat_ops_type=`slack`