Observe release notes and updates

See what’s new with Observe!

May 18, 2022


Charts with more consistent colors

  • Charts on cards now use the same color for a particular resource across all cards on the board. For example, a resource “Host1” with metrics “CPU Usage” and “Memory Usage” is the same color on both charts.

    Board with card "CPU Usage" for kube-apiserver shows its line on the chart in brown Board with card "Memory Usage" for kube-apiserver shows its line on the chart in brown

OPAL console scrolling

  • The OPAL console editor can now scroll past the last line of text, making it easier to edit OPAL scripts in the UI.

    An OPAL script in the OPAL console. The last line is in the middle of the edit window, ready to continue adding new statements.


get_item() function

  • Given an array and a computed (zero-based) index, return the item at that index (if it exists). The index value may not be negative. See the get_item documentation for details, including performance considerations.

Previous updates

May 2022

May 11, 2022 release notes


  • Top Values dialog while extracting fields from JSON

    • See the top values and other details for when using Extract From JSON. Hover over an item in the right rail to show a list of values for that property, along with number of total and unique values in your current query time window.

      List of top city names in the weather data JSON


  • slice_array() function

    • Given an array, return a new array containing a slice of the original. The resulting array includes the element specified in the from argument (zero-based) up to, but not including, the to argument. Negative values count from the end of the array. See the slice_array documentation for details.

  • get_field() function

    • Given an object and a computed string key, return the value for that key in the object (if it exists.) See the get_field documentation for details.

  • haversine_distance_km() function

April 2022

April 6, 2022 release notes


  • Related panel in Worksheets and dataset pages

    • The mini map in the right rail is replaced with a Related panel. Like GraphLink, navigating to a related dataset shows data relevant to the observations you are currently working with.

      The Related panel contains three sections:

      • Recent, recently viewed linked datasets

      • Direct Links, parent or child datasets of the current one

      • Recommended, datasets accessible via GraphLink, which may be one or more hops away

      As with GraphLink, your current filters continue to apply. For example, if you have filtered to a set of containers, navigating to Container Logs shows logs for only those containers. If the dataset of interest is not listed, you may still access it by name using GraphLink.

      Worksheet showing the Related panel in the right rail, displaying datasets related to the one you are working with. There are sections for Recent, Direct Links, and Recommended.


  • group_by() a path within an object value

    • The group_by() function already allows grouping results by the value of a specified field. Now you can group by the value of a specific element in an object-typed field. For example, group by the values in tags.clusterUid rather than all of the possible values in the tags field. For details, see the examples in the group_by() documentation.

  • Using a timestamp field as part of a primary key

    • The set_primary_key() verb now supports using a time field as part of a primary key. While this is not a typical use, it is occasionally useful if you need to generate resources that contain only one interval each.


    set_primary_key is a low-level operation that requires some care in use. In most cases, you will more easily accomplish your goal using make_resource, update_resource, timechart, or make_event.

April 20, 2022 release notes


  • parse_csv() function

    • Parse an input string as character-separated values, returning an array of strings. By default, parse_csv expects comma-separated values, but you may specify a different separator character. See the parse_csv documentation for additional information about quoting or escaping input values.

April 27, 2022 release notes


March 2022

March 2, 2022 release notes


  • Updated metrics functions

    • rate() function and rate rollup method

      The rate() function has been simplified, it now has the same behavior for both gauge and cumulativeCounter type metrics. If the next recorded value for a metric is less than the previous, we presume the metric was reset back to zero between observations. rate() now always returns a positive value.

      The previous gauge behavior, where the rate could be negative, was very rarely used. This update simplifies the more common case, and also applies to the rate rollup method.

    • deriv() function

      If you need the original gauge type behavior, where a decreasing value results in a negative rate, use deriv() instead.

March 9, 2022 release notes


  • Duration formatting in Worksheets and Landing Pages

    • Fields of type duration are displayed in an easier human-readable format. They also include a bar showing an individual duration’s relative length, compared to the longest time duration in the current results.

      For example, the image below shows 19 results, with durations from 5 milliseconds to 1 hour and 53 minutes. The green bar, indicating a value’s relative duration, is very small for the 5 millisecond value, and the full width for the 1:53 value.

      Results table containing a "duration" field. Durations are shown in hours, minutes, seconds, and milliseconds. The relative duration bar is very small for short durations and the full width for the longest one.
  • Observe Usage Worksheet

    • If you are a Workspace administrator, you may now access your Observe Usage Summary Worksheet via a link in Workspace settings.

      The Workspace Settings page, with Usage Worksheet in the left sidebar menu.


  • New navigation for the OPAL language reference

    • The OPAL language reference received a format overhaul, with verbs and functions now organized by categories. In addition, each verb or function has its own page.

      Observe docs site, with a table of all OPAL functions and nested links to function categories in the sidebar.
March 16, 2022 release notes


  • make_array() function

  • The make_array() function accepts zero or more values (of any type) and returns an array object containing those values.


  • “System” data stream

  • The list of data streams now includes a System data stream. This read-only stream, separate from user-configured data streams, is for future Observe-generated data about your workspace.

February 2022

February 2, 2022 release notes


  • More statistics for numeric values

    • If a field has multiple statistics associated with its values, now all of them are visible as histograms in the right rail. You may also filter to a specific range of values:

      List of temperature observations, filtered to values 0 to 70 using the controls in the right rail. There are two visualizations, showing histograms of values and frequency of recent measurements.

      Range filtering for float columns is also now available in the right-click column context menu.


  • Linux host monitoring

    • The Linux host monitoring integration provides additional information about AWS EC2 hosts, including instance type and availability zone. Click to view detail about an instance in the right rail:

      Host resources showing new fields for application group, instance, instance type, availability zone, and hyperscaler. Instance values are clickable links.
    • Follow the link for even more, on its EC2 Instance Overview board:

      EC2 Instance Overview board, showing details of the selected instance
February 9, 2022 release notes


  • CloudFormation template to subscribe CloudWatch Log Groups

February 17, 2022 release notes


  • Sort, filter, or group Monitors

    • New options to make it easier to find the Monitor you are looking for:

      • Sort by Monitor name, kind, status, or the package it belongs to, either ascending or descending

      • Group by kind, status, or package

      • Toggle whether to include disabled Monitors

      • View Monitor templates (default example Monitors) separately from your configured Monitors

      Monitor list, with Monitor/Template toggle, and list display options.
  • Monitor rate limiting: up to 10 notifications per time period

    • Channel Actions now send up to 10 notifications in the configured time period, an increase from one per period.


      This change affects both existing and new Monitors.

  • Monitor reminder and ending notifications

    • Optionally get reminders for Monitors that are still actively firing, and a separate notification when the triggering condition is resolved.

      Reminders are enabled for a Channel Action, and then the details configured for individual Monitors. This allows a different reminder schedule for each Monitor.

      In a Monitor configuration:

      Monitor Delivery section, showing Optional Notifications reminder toggle

      In a Channel Action configuration:

      Channel Action Delivery section, with Send reminders selected in the Status Updates section.

      Ending notifications are enabled for a Channel Action. Any Monitor that sends to that Channel Action generates an ending notification when the Monitor’s triggering condition is no longer active. This allows all alerts to a particular Channel Action to have the same end notification behavior.

      In a Channel Action configuration:

      Channel Action Delivery section, with "Send update that notification has ended" in the Status Updates section.

January 2022

January 5, 2022 release notes


  • Export CSV or JSON

    • Export observations from a Worksheet stage to a local file. The exported data is one line per observation, in either CSV or NDJSON (newline-delimited JSON) format.

      Worksheet with More menu open, Export - CSV - 1000 rows selected
  • Resource related activity

    • See observations and notifications related to specific Resources in the Resource Landing Page Activity tab. Select a dataset of interest or filter to find the events you are interested in.

      Contact Sensor landing page, showing the Activity tab. Device Events for the Interior Garage Door is selected, the table displays the related events
  • Easier access to data stream datasets

    • Find all your data stream datasets in the left rail, in the Data Streams section of the Other tab

      Left rail open, showing the Other tab and a list of data stream datasets in the Data Streams section.


  • Test if values are members of a set

    • Test if one or more values are members of a set with the in(). This function accepts the column name or expression to check, and one or more candidate values.

    filter in(user_type, 'guest', 'read-only')
    filter in(location_id, 24, 25, 27)
    filter in(time_ns/1000000000, 4, 5, 6)
January 12, 2022 release notes


  • View associated detail when editing Channels

    • New links to access related Monitor and Channel Action configurations while editing a Channel. This works while editing a Monitor or Channel Action as well.

      Edit Channel page, showing links to the Monitors and Channel Actions used by this Channel.
  • Base 2 scaling for metric values

    • New units for metric values that scale by base 2.

      • Existing B unit scales by 1000: B, kB, MB, GB, TB.

      • New By unit scales by 1024: By, KiB, MiB, GiB, TiB.

      To change an existing metric card, update its unit to By:

      Board edit page, with the Axes section open in the Presentation tab. The value of Unit is "By".
January 19, 2022 release notes


  • Improved default stage names in Worksheets

    • When you open a new Worksheet for a dataset, the name of its default first stage is now “Stage 1.” Additional stages are similarly named “Stage 2” or “Linked from Stage 1” and so on. Stage icons indicate if you are working with an event or resource dataset: blue R for resources, or pink E for events. The Inputs & Outputs section in the right rail shows which datasets your worksheet is based on.

      This new naming scheme makes it more clear that you are working with a temporary view of your dataset, without changing any of the underlying data. It is also a reminder that you can rename stages to give them more meaningful names.

      New "Untitled Worksheet" page, with "Stage 1" showing weather observations and the "Weather Events" dataset as an input.

December 2021

December 1, 2021 release notes


  • Default time zone settings

    • Select a default time zone, for individual users in Account Settings or for an entire workspace in Workspace Settings.

      Default time zone dropdown, showing -10:00 US/Hawaii HST selected and the Apply Changes button enabled
  • Metrics tab in Explore

    • Search all your metrics in one place, and view details without going to an individual Landing Page.

      Metrics in the Explore tab, showing the "Available" metric from the Linux Integration "Mem Metrics" data  set.
  • Filter bar

    • Filter in Worksheets and Landing pages, by field names, expressions, and more.

      Worksheet for the "Device Events" dataset, with "Device = Storage Room Multisensor" and "sensor = temperature" filters applied in the filter bar
  • Worksheet visualizations

    • Graph results from ad hoc Worksheet investigations, with multiple types of visualizations, styles, and colors.

      Weather metrics in a worksheet, a line graph showing temperature over time for two cities


  • New align verb and m() function for working with metrics.

    • align aggregates time-series data into a single data point for each time bin, with simplified function-based arguments instead of rollup and an options() object. Metrics helper function m() specifies which metric to align.

      // Computes the per-second rate of “requests_total” metric and the average of “memory_used” metric, 
      // for each 5m time bin.
      align 5m, requests: rate(m("requests_total")), memory_used: avg(m("memory_used"))


  • Linux Integration

    • Monitor common Linux system details with datasets and boards specifically tailored for Linux servers.

December 8, 2021 release notes


  • Time picker issues

    • Fixed several bugs causing incorrect display or unexpected behavior of time ranges ending at 00:00 (midnight.) Selecting a time range ending at 00:00 now includes the full final day of the time period.

    • Fixed a bug causing auto refresh to not reload results.

    • Fixed a bug causing the time picker to display the time period in UTC while viewing a monitored dataset.

  • OPAL Console

    • Fixed a bug causing the OPAL console to not display correctly after using the Undo button in the filter bar.

  • Workspace Settings

    • The list of members in Workspace Settings now includes email addresses for local (email/password) users and the type of authentication.

      Workspace Settings member list
    • Fixed a bug causing columns in the Member list to not resize correctly.

  • Minor UI issues

    • Fixed a bug rendering a large number of bars in a bar chart card.

    • Improved message text and added tooltips in several locations.


  • Allow an optional frame() argument for the align verb. This aggregates data points within the specified frame (sliding window.)

  • Allow an optional filter argument for the m() function. This enables refining the set of metrics selected for an align operation via an expression.

December 15, 2021 release notes


  • Monitors and alerts

    • Disable or duplicate an existing monitor from the Monitors list

      List of monitors, with menu for the selected monitor showing Disabled, Duplicate, Delete options
    • Duplicate an existing channel action from the Channel Actions list

      List of channel actions, with menu for the selected action showing Duplicate and Delete options
  • Workspace settings

    • Group by Source (authentication type) in the Members list

      List of members, open menu shows Group By - Source selected
  • Resource landing pages

    • The Overview tab is now the Boards tab, which can be customized via the Edit Board button.


  • exists and follow verbs

    • Adding an optional frame() argument to exists and follow allows datasets using them to be accelerated.


  • Data streams

    • Ingest data directly to a specific dataset, using unique data stream tokens. Data streams bypass the Observation event stream, simplifying the creation and management of incoming data.

      List of data streams, with statistics for all streams such as observations per hour and last observation received.