<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Rudolf Meijering - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Rudolf Meijering - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/search-labs/author/rudolf-meijering</link>
    </image>
    <link>https://www.elastic.co/search-labs/author/rudolf-meijering</link>
    <atom:link href="https://www.elastic.co/search-labs/rss/author/rudolf-meijering.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[en]]></language>
    <lastBuildDate>Sat, 24 Oct 2026 13:46:01 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Dashboard activity logs: Find out which Kibana dashboards get used]]></title>
    <description><![CDATA[Kibana now logs who viewed, edited or deleted each dashboard, how long it took and what failed, so you can catch a broken dashboard before anyone reports it.]]></description>
    <content:encoded><![CDATA[<p>Kibana logs every dashboard view, edit, create, delete, and refresh, along with the user behind each one. Two lines in <code>kibana.yml</code> enable this logging. When you point Discover at the index, you can find the dashboards that nobody opened in 30 days and rank them by load time or see who edited the one that broke this morning. Dashboard <a href="https://www.elastic.co/docs/reference/kibana/user-activity">activity logs</a> run on self-managed clusters today, with Elastic Cloud support coming.</p><h2>How dashboard activity logs differ from the Kibana audit log</h2><p>Dashboard activity logs and the <a href="https://www.elastic.co/docs/reference/kibana/kibana-audit-events">Kibana audit log</a> both write structured logs about user actions, but they answer different questions.</p><p>
</p><p><strong>Kibana audit log</strong></p><p><strong>Dashboard activity logs</strong></p><p>Answers</p><p>Who accessed what, and when</p><p>Which dashboards are used, and how well they perform</p><p>Built for</p><p>Security and compliance teams</p><p>Kibana admins and dashboard owners</p><p>Tracks</p><p>Security-relevant events across Kibana</p><p>Five dashboard actions: create, update, delete, view, refresh</p><p>Enabled by</p><p>Its own setting in <code>kibana.yml</code></p><p><code>user_activity.enabled: true</code> in <code>kibana.yml</code></p><h2>What dashboard activity logs capture</h2><p>The user activity service records structured events every time a user interacts with a dashboard. Each event captures <em>what happened</em> and <em>to which dashboard</em>, in addition to <em>who did it</em>. Five actions are tracked:</p><p><strong>Action</strong></p><p><strong>Fires when</strong></p><p><strong>Includes duration</strong></p><p><code>dashboard_create</code></p><p>A dashboard is created</p><p>No</p><p><code>dashboard_update</code></p><p>An edit is saved</p><p>No</p><p><code>dashboard_delete</code></p><p>A dashboard is removed</p><p>No</p><p><code>dashboard_view</code></p><p>A user opens a dashboard</p><p>Yes, time on the dashboard until they navigate away</p><p><code>dashboard_refresh</code></p><p>A user changes filters or time range, or auto-refresh runs</p><p>Yes, refresh duration</p><p>Very often, a <code>dashboard_view</code> event also triggers a refresh.</p><p>Every event carries the same core fields, with two that appear conditionally:</p><p><strong>Field</strong></p><p><strong>What it holds</strong></p><p><strong>Present on</strong></p><p><code>user.name</code></p><p>Name of the user who performed the action</p><p>Every event</p><p><code>user.email</code></p><p>Email address of the user</p><p>Every event</p><p><code>user.roles</code></p><p>Roles assigned to the user</p><p>Every event</p><p><code>object.name</code></p><p>Dashboard name</p><p>Every event</p><p><code>object.id</code></p><p>Dashboard ID</p><p>Every event</p><p><code>kibana.space</code></p><p>Kibana space the dashboard belongs to</p><p>Every event</p><p><code>client.ip</code></p><p>IP address the request came from</p><p>Every event</p><p><code>event.action</code></p><p>Which of the five actions occurred</p><p>Every event</p><p><code>event.outcome</code></p><p>Whether the action succeeded or failed</p><p>Every event</p><p><code>event.duration</code></p><p>Time taken, in nanoseconds</p><p><code>dashboard_view</code> and <code>dashboard_refresh</code></p><p><code>error.type</code> / <code>error.message</code></p><p>Error class and message when something fails</p><p>Events where <code>event.outcome</code> is <code>failure</code></p><h2>How Kibana records dashboard activity</h2><p>Under the hood, Kibana plugins report events from the browser or server through a core client, and valid events are written to a dedicated logger. No data is sent to a third party; because events are standard JSON logs, you control where they go and how they’re ingested.</p><h2>What you can do with dashboard usage data</h2><p>Dashboard activity data answers five operational questions that would otherwise require further investigation:</p><ul><li><p><strong>Clean up unused dashboards.</strong> Filter for dashboards with zero <code>dashboard_view</code> events. If nobody's looking at it, archive it. This is critical for customers who are managing thousands of dashboards. </p></li><li><p><strong>Troubleshoot performance.</strong> The <code>event.duration</code> field tells you exactly how long each dashboard load or refresh takes. Sort by duration to find your slowest dashboards.</p></li><li><p><strong>Edit history.</strong> Every create, update, and delete is logged with the user who made the change. You no longer have to wonder who modified a critical dashboard or when it happened.</p></li><li><p><strong>Plan capacity.</strong> Identify users running heavyweight queries during peak hours. If one user's auto-refresh is hammering the cluster every 10 seconds, you'll see it.</p></li><li><p><strong>Monitor errors proactively.</strong> Dashboards throwing errors surface immediately through <code>error.type</code> and <code>error.message</code> fields, so you don’t need to wait for users to report them.</p></li></ul><h2>How to enable dashboard activity logs in Kibana</h2><p>Add two lines to your <code>kibana.yml</code> ( the service is disabled by default):</p>user_activity:
  enabled: true<p>Events will start flowing immediately using a default JSON console appender. You can customize the output appender and filter specific actions using the same logging configuration schema that Kibana already uses:</p>user_activity:
  enabled: true
  appenders:
    console_json_default_appender:
      type: console
      layout:
        type: json
  filters:
    - policy: keep
      actions: [dashboard_view, dashboard_refresh]<p>Ship these logs into an Elasticsearch index (for example, via Filebeat), and you have a fully queryable dataset of dashboard usage.</p><h2>How to query dashboard activity in Discover</h2><p>Once your activity logs are indexed, open Discover and point it at your user activity index pattern. You'll immediately see every dashboard interaction as a structured event, and they’re filterable by action type, user, dashboard name, and time range.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4c49281e39a0301e/6a950fc6a3077ca19c3fe663/1.png" alt="Kibana Discover showing dashboard activity logs with event.action, object.name, duration and outcome columns" /><p>From here, you can quickly answer specific questions like the examples below. </p><h3>How many times was a dashboard viewed? </h3><p>Type your question in natural language in the Discover query editor, and press <strong>Cmd+J</strong> to automatically generate the Elasticsearch Query Language (ES|QL) query, as shown below:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt68dce42018ead590/6a9510d5a16336aae0371701/2.gif" alt="Generating an ES|QL query from plain language in Discover to search dashboard activity logs" /><h3>Which dashboards had zero views in the last 30 days?</h3><p>Dashboards with no activity simply don't appear in the logs, so you can't filter directly for zero views. Instead, this query works backward, pulling every dashboard created (and not deleted) in the past year and then checking which of those had zero views in the last 30 days.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta5fe21fc80d3e276/6a9510f5923082d373c4a4f0/3.png" alt="ES|QL query on dashboard activity logs listing 30 Kibana dashboards with zero views in the last 30 days" /><h3>Which dashboards took longer than 10 seconds to load?</h3><p>Note that <code>event.duration</code> is recorded in nanoseconds, so the query converts to seconds before filtering:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltaa956eb37e5278e8/6a95113b6fe1457f2bb1bf89/4.png" alt="ES|QL query ranking slow Kibana dashboards by load time, topped by Host Metrics Overview at 69 seconds" /><h3>Which dashboards are throwing errors, and what's failing?</h3><p>This query shows dashboards with one or more panels throwing errors during <code>dashboard_refresh</code> events, so you can quickly spot recurring issues and prioritize fixes:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8911faf07ccd694f/6a951153ecbe18f7691e19c0/5.png" alt="Dashboard activity logs showing failed dashboard refreshes grouped by error, with 17 errors on one dashboard" /><h2>Build a dashboard usage overview with AI chat</h2><p>We’re planning to add out-of-the-box dashboards along with the activity logs, but in the meantime, instead of manually building visualizations, open the <a href="https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/chat">AI chat</a> in Kibana and ask it to create a dashboard from your user activity data. </p><p>The generated dashboard gives you at-a-glance visibility into your most-viewed dashboards, heaviest users, slowest-performing panels, and recent errors; that is, exactly the operational view that large deployments need.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0734798e18f535af/6a9511928814aa03da89c1be/6.gif" alt="Building a dashboard usage overview from the user-activity-logs index using Agent Chat in Kibana" /><h2>Get started with dashboard activity logs</h2><p>User activity logs are available in Kibana 9.5. Begin by enabling the service. Then ship the logs into an index, and start building the operational visibility that your team has been asking for. For full configuration details and the complete event schema, see the <a href="https://www.elastic.co/docs/reference/kibana/user-activity">user activity documentation</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/dashboard-activity-logs-kibana</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/dashboard-activity-logs-kibana</guid>
    <category><![CDATA[Kibana]]></category>
    <category><![CDATA[Operations]]></category>
    <category><![CDATA[Analytics]]></category>
    <dc:creator><![CDATA[Teresa Alvarez Soler,Rudolf Meijering]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt505cee76dae8eff8/6a950f70e657a3cdea75aeb7/image4.png" length="0" type="image/png"/>
    <pubDate>Mon, 31 Aug 2026 15:15:00 GMT</pubDate>
  </item>
  </channel>
</rss>