From 667e8c9626551d32f98aeb713c6d698b56b12f61 Mon Sep 17 00:00:00 2001 From: trangl Date: Mon, 2 Dec 2024 19:05:29 +0100 Subject: [PATCH 01/42] Move contents from create simple chart and reformat with tables --- data-visualization/charts/create-charts.rst | 132 ++++++++++++++------ 1 file changed, 96 insertions(+), 36 deletions(-) diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index 605464b1d..ae1ac31c8 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -13,17 +13,6 @@ Before you create a chart, you need to have an idea of which metrics you want to Also consider customizing the defaults for your charts. You can filter metrics to limit the data to specific hosts, or specify a different time range for the chart. You can return to customize chart features at any time. -.. note:: - - Instead of displaying metrics on a chart, you can also: - - - Create a chart that contains a text note. See :ref:`text-note`. Use this feature to add documentation and guidance to a dashboard, because the text - chart appears as one of the charts in the dashboard. - - Create a chart that contains events (an event feed). See :ref:`dashboard-event-feed` - - Overlay events on a chart that already displays metrics. See :ref:`chart-events`. - - Link a detector to a chart and display its alert status on the chart. See :ref:`linking-detectors`. - - .. _ways-to-create-charts: Create a chart @@ -34,58 +23,131 @@ Once you have an initial plan for the metrics you want to display on your chart, .. note:: You can't add charts to a built-in dashboard. For more information, see :ref:`built-in-dashboards`. -- To create one or more simple charts on a new or existing dashboard, see :ref:`simple-charts-dashboards`. This technique is also a good choice if you want to see what metrics are available, because you can see them in the |ms|. +See the following table for different chart creation methods: -- To copy charts you see on a dashboard to a new or existing dashboard, see :ref:`copy-charts`. +.. list-table:: + :header-rows: 1 + :widths: 30 70 -- To copy charts you are viewing in the Chart Builder, use the :guilabel:`Save As` option (see :ref:`save-chart`), change the name as desired, and choose the dashboard where you want to place the copied chart. If you have edited the chart, those changes will be reflected in the copied chart. + * - :strong:`Method` + - :strong:`Description` + * - Create a chart using the metrics sidebar + - Use this method to create a simple chart or add a new chart to an existing dashboard. To learn more, see :ref:`create-chart-metric-sidebar`. + * - Copy a chart + - Use this method to add a clone or move a chart to another dashboard. To learn more, see :ref:`copy-charts`. + * - Create a chart using the Chart Builder + - Use this method to create a more complex chart with customizations during the creation process. To learn more, see :ref:`create-chart-with-chart-builder`. + * - Create a chart using the API + - Use this method to programmatically create a chart instead of creating one through the user interface. To learn more, see :ref:`create-chart-via-api`. - To create a chart based on a metric you have found in the Metadata Catalog, see :ref:`create-chart-from-catalog`. -- To build a chart from scratch, see :ref:`create-chart-with-chart-builder`. -- To programmatically create a chart instead of creating one through the user interface, see :ref:`create-chart-via-api`. +.. _create-chart-metric-sidebar: + +Create a chart using the metrics sidebar +------------------------------------------------ + +To start creating a simple chart, use the metrics sidebar to find and select the metrics and events you want to display in your chart: + +#. Open the metrics sidebar. + + * For an existing dashboard: Navigate to the existing dashboard and open it. Select the sidebar icon in the top right to open the metrics sidebar. + * For a new dashboard: From the :strong:`Create` menu in the top, select :strong:`Dashboard`. Select :strong:`Browse metrics sidebar` to open the metrics sidebar. + +#. On the :strong:`Metrics` tab, select :strong:`Find metrics` or :strong:`Find events`, depending what you want to plot in your chart. +#. Enter keywords into the search field. If a search keyword also matches metric metadata, such as a dimension name or property value, the metadata displays under the metric name. To add the metadata to your query as a filter, select the matching metadata or the :strong:`Filter` (+) icon. To exclude the metadata from your search results, select the :strong:`Exclude` (-) icon. + .. note:: Hover over a metric or event name to display information about it. + +Create one or multiple charts with metrics +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +* Create a chart with a single metric: + + #. Select the check box next to the metric name. + #. Select :strong:`Add chart`. + +* Create a chart containing one plot for each metric: + #. Select the check box next to each item you want to add. + #. Select :strong:`Add chart`. + +* Create multiple charts, one for each metric: + + #. Select the check box next to each item you want to add. + #. Select the :strong:`Separate charts` option. + #. Select :strong:`Add charts`. + +.. note:: Select :strong:`Add with filters` to add matching metadata from each metric result as filters to your chart. + +Create one or multiple charts with events +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +* Create a chart with a single event: + + #. Select the check box next to the event name. + #. Select :strong:`Add chart`. + +* Create a chart containing one plot for each event: + + #. Select the check box next to each item you want to add. + #. Select :strong:`Add single chart`. + +* Create multiple charts, one for each event: + + #. Select the check box next to each item you want to add. + #. Select :strong:`Multiple charts`. .. _copy-charts: -Copy charts ------------ +Copy a chart +--------------- -You can copy charts from one or multiple dashboards to a clipboard. This technique is useful if you are troubleshooting an issue and want to pull some existing charts together to view on a new dashboard (see :ref:`create-dashboard`), or if you want to copy charts from one dashboard to another. +You can copy charts from one or multiple dashboards to a clipboard. You might want to use this technique for the following use cases: -You can also use this method to "move" a chart from one dashboard to another; after copying a chart, delete the original chart. +* Pull some existing charts together in a new dashboard for troubleshooting. +* Copy charts from one dashboard to another. +* Move a chart from one dashboard to another; after copying a chart, delete the original chart. .. _copy-chart-to-clipboard: -Follow these steps to copy charts to a clipboard: +Follow these steps to copy a chart to a clipboard: -#. To start, open the dashboard containing the chart you want to copy. Staying in the dashboard view, select :guilabel:`Copy` from the :guilabel:`Chart actions` drop-down menu of the chart you want to copy. You have to be in dashboard view to see the Copy option. +#. Open the dashboard containing the chart you want to copy. +#. In the dashboard view, open the :guilabel:`Chart actions` menu of the chart you want to copy. +#. Select :guilabel:`Copy`. #. When you copy a chart, a counter on the :guilabel:`Create` icon on the navigation bar indicates how many charts you have copied to the clipboard. -#. To copy another chart to the clipboard, select :guilabel:`Chart actions > Add to Clipboard` from a different chart, or select the :guilabel:`Add to clipboard` icon on another chart while in the dashboard view. The counter increments as you add additional charts. +#. To copy another chart to the clipboard, select :guilabel:`Chart actions > Add to clipboard` from a different chart, or select the :guilabel:`Add to clipboard` icon on another chart while in the dashboard view. The counter increments as you add additional charts. -Different options on the Create menu let you paste the charts onto a dashboard. Pasting charts clears the clipboard. +Once you copy charts to the clipboard, several options from the :strong:`Create` menu let you paste the charts to another dashboard. Pasting charts clears the clipboard. -- To paste the charts into a dashboard you are viewing, select :guilabel:`Paste Charts` from the :guilabel:`Create` menu. You must have write permissions for the dashboard. See :ref:`about-permissions` for more detail. +.. list-table:: + :header-rows: 1 + :widths: 30 70 -- If you see :guilabel:`Dashboard with copied charts` on the Create menu, select that option to create a new, unsaved dashboard and paste the charts into it. - -- If you see :guilabel:`Dashboard (unsaved)` on the Create menu, you have already added charts to a new dashboard and haven't saved the dashboard yet. Select this option to open the unsaved dashboard, then select :guilabel:`Paste Charts`. - -To clear the clipboard contents without pasting the charts to a dashboard, select :guilabel:`Clear Clipboard` from the Create menu. + * - :strong:`Option` + - :strong:`Description` + * - Paste charts + - Select this option to paste the charts into a dashboard you are viewing. You must have write permissions for the dashboard. See :ref:`about-permissions` for more detail. + * - Dashboard with copied charts + - Select this option to create a new dashboard consisting of all the copied charts. + * - Dashboard (unsaved) + - If you see this option, you have already added charts to a new dashboard but haven't saved it. Select this option to open the unsaved dashboard. Select :strong:`Past charts` to add the copied charts to this dashboard. + * - Clear clipboard + - Select this option to clear the clipboard content without pasting charts to a dashboard. .. _create-chart-with-chart-builder: Create a new chart using the Chart Builder ------------------------------------------ -#. Select :guilabel:`Chart` from the :guilabel:`Create` menu. Alternatively, you can select :guilabel:`New Chart` on custom dashboards. +#. In the :strong:`Create` menu, select :strong:`Chart`. Alternatively, select :guilabel:`New chart` on custom dashboards. #. Search for metrics or events you want to plot on your chart. For more information, see :ref:`chart-builder`. .. note:: You can add functions to your chart with the :strong:`F(x)` column. See :ref:`plot-analytics` and :ref:`analytics-ref` for more details. + #. Customize your chart. See :ref:`chart-options-tab`. -See also :ref:`choose-chart-type`. .. _create-chart-from-finder: @@ -93,7 +155,6 @@ Create a chart from the Metric Finder ------------------------------------- Use the Metric Finder to find the metric you want to track. From the results page, select the metric name to open the Chart Builder, pre-populated with your metric. -See also :ref:`choose-chart-type`. .. _create-chart-from-catalog: @@ -102,19 +163,18 @@ Create a chart from the Metadata Catalog You can also create a chart from the Metadata Catalog. Select a metric from the list in the sidebar, then select :guilabel:`View in Chart` in the preview pane to open the Chart Builder, pre-populated with your metric. -See also :ref:`choose-chart-type`. .. _create-chart-via-api: Create a chart using Splunk Observability Cloud API --------------------------------------------------- -If you prefer to work programmatically, see :new-page:`Display Data Using Charts ` to create a chart with API. +If you prefer to work programmatically, see :new-page:`Display data using charts ` to create a chart with API. .. _choose-chart-type: Select a chart type -=================== +======================= Available chart types are shown as icons in the chart's title bar. You can also select a chart type in the Chart Options tab. Hover over an icon to see which chart type it represents, then select an icon to display the chart in that format. The selected chart type is highlighted and indicated by a small pointer. From 63fe821ff490dc1634c173aaa5588b9bb074badb Mon Sep 17 00:00:00 2001 From: trangl Date: Mon, 2 Dec 2024 19:39:28 +0100 Subject: [PATCH 02/42] Fix title capitalization --- data-visualization/charts/chart-options.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-visualization/charts/chart-options.rst b/data-visualization/charts/chart-options.rst index 29eb484a3..4ceca672a 100644 --- a/data-visualization/charts/chart-options.rst +++ b/data-visualization/charts/chart-options.rst @@ -1,7 +1,7 @@ .. _chart-options-tab: ***************************************************************** -Chart Options in the Chart Builder +Chart options in the Chart Builder ***************************************************************** From f51cc478212fbdafd4e1562d0b2b5bc0b388696e Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 3 Dec 2024 10:40:59 +0100 Subject: [PATCH 03/42] Wording --- data-visualization/charts/create-charts.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index ae1ac31c8..b1d096692 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -34,7 +34,7 @@ See the following table for different chart creation methods: * - Create a chart using the metrics sidebar - Use this method to create a simple chart or add a new chart to an existing dashboard. To learn more, see :ref:`create-chart-metric-sidebar`. * - Copy a chart - - Use this method to add a clone or move a chart to another dashboard. To learn more, see :ref:`copy-charts`. + - Use this method to add a copy or move a chart to another dashboard. To learn more, see :ref:`copy-charts`. * - Create a chart using the Chart Builder - Use this method to create a more complex chart with customizations during the creation process. To learn more, see :ref:`create-chart-with-chart-builder`. * - Create a chart using the API @@ -59,7 +59,7 @@ To start creating a simple chart, use the metrics sidebar to find and select the #. Enter keywords into the search field. If a search keyword also matches metric metadata, such as a dimension name or property value, the metadata displays under the metric name. To add the metadata to your query as a filter, select the matching metadata or the :strong:`Filter` (+) icon. To exclude the metadata from your search results, select the :strong:`Exclude` (-) icon. .. note:: Hover over a metric or event name to display information about it. -Create one or multiple charts with metrics +Create charts with metrics ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * Create a chart with a single metric: @@ -75,12 +75,12 @@ Create one or multiple charts with metrics * Create multiple charts, one for each metric: #. Select the check box next to each item you want to add. - #. Select the :strong:`Separate charts` option. + #. Select :strong:`Separate charts`. #. Select :strong:`Add charts`. .. note:: Select :strong:`Add with filters` to add matching metadata from each metric result as filters to your chart. -Create one or multiple charts with events +Create charts with events ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * Create a chart with a single event: From 2c76b3abe59319b16a8932a8383c660ee5f38f2e Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 3 Dec 2024 11:13:33 +0100 Subject: [PATCH 04/42] Remove simple chart topic --- data-visualization/charts/chart-builder.rst | 2 +- data-visualization/charts/charts.rst | 2 - data-visualization/charts/create-charts.rst | 22 +-- .../charts/simple-charts-dashboards.rst | 134 ------------------ .../dashboards/dashboard-create-customize.rst | 10 +- .../dashboards/dashboard-group.rst | 2 +- 6 files changed, 5 insertions(+), 167 deletions(-) delete mode 100644 data-visualization/charts/simple-charts-dashboards.rst diff --git a/data-visualization/charts/chart-builder.rst b/data-visualization/charts/chart-builder.rst index deb8bfc89..5585189da 100644 --- a/data-visualization/charts/chart-builder.rst +++ b/data-visualization/charts/chart-builder.rst @@ -9,7 +9,7 @@ Plot metrics and events using chart builder in Splunk Observability Cloud Charts are highly customizable. This topic describes how to use chart builder's tools and options to customize your charts to display signals (metrics and events) in an intuitive and compelling way. -.. note:: Use the chart builder only if you are already familiar with Splunk Observability Cloud charts and are ready to dive into its more advanced features. For a simpler approach to creating charts, see :ref:`simple-charts-dashboards`. +.. note:: Use the chart builder only if you are already familiar with Splunk Observability Cloud charts and are ready to dive into its more advanced features. For a simpler approach to creating charts, see :ref:`create-chart-metric-sidebar`. If you are editing an existing chart, you might want to start by configuring plot lines already on the chart (see :ref:`plot-options` and :ref:`plot-config-panel`). diff --git a/data-visualization/charts/charts.rst b/data-visualization/charts/charts.rst index 3ee5e55bf..be51f7aa3 100644 --- a/data-visualization/charts/charts.rst +++ b/data-visualization/charts/charts.rst @@ -11,7 +11,6 @@ Charts in Splunk Observability Cloud :hidden: Chart types - Create simple charts Create charts data-resolution-and-rollups Plot metrics and events using Chart Builder @@ -29,7 +28,6 @@ Charts can range from extremely simple (monitor a single metric for a single hos The following sections lead you through developing the expertise you need to build charts that meet your requirements, based on the metrics you want to monitor. - :ref:`chart-types` -- :ref:`Create simple charts ` - :ref:`create-charts` - :ref:`data-resolution-rollups-charts` - :ref:`Plot metrics and events using Chart Builder ` diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index b1d096692..43e618e7f 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -40,8 +40,6 @@ See the following table for different chart creation methods: * - Create a chart using the API - Use this method to programmatically create a chart instead of creating one through the user interface. To learn more, see :ref:`create-chart-via-api`. -- To create a chart based on a metric you have found in the Metadata Catalog, see :ref:`create-chart-from-catalog`. - .. _create-chart-metric-sidebar: @@ -141,29 +139,13 @@ Once you copy charts to the clipboard, several options from the :strong:`Create` Create a new chart using the Chart Builder ------------------------------------------ -#. In the :strong:`Create` menu, select :strong:`Chart`. Alternatively, select :guilabel:`New chart` on custom dashboards. +#. In the :strong:`Create` menu on the top navigation bar, select :strong:`Chart`. Alternatively, select :guilabel:`New chart` on custom dashboards. #. Search for metrics or events you want to plot on your chart. For more information, see :ref:`chart-builder`. .. note:: You can add functions to your chart with the :strong:`F(x)` column. See :ref:`plot-analytics` and :ref:`analytics-ref` for more details. #. Customize your chart. See :ref:`chart-options-tab`. - -.. _create-chart-from-finder: - -Create a chart from the Metric Finder -------------------------------------- -Use the Metric Finder to find the metric you want to track. From the results page, select the metric name to open the Chart Builder, pre-populated with your metric. - - -.. _create-chart-from-catalog: - -Create a chart from the Metadata Catalog ----------------------------------------- - -You can also create a chart from the Metadata Catalog. Select a metric from the list in the sidebar, then select :guilabel:`View in Chart` in the preview pane to open the Chart Builder, pre-populated with your metric. - - .. _create-chart-via-api: Create a chart using Splunk Observability Cloud API @@ -192,7 +174,7 @@ Edit a chart To edit a chart, open it from any dashboard or the Dashboard panel of a navigator. Editing a chart is essentially identical to building a chart. See :ref:`chart-builder`. -If you don't have write permissions for the dashboard containing the chart, or you are in a built-in dashboard, you have to use :guilabel:`Save as` to save the edited chart. +If you don't have write permissions for the dashboard containing the chart or if you are in a built-in dashboard, you have to use :guilabel:`Save as` to save the edited chart as a new chart. .. _save-chart: diff --git a/data-visualization/charts/simple-charts-dashboards.rst b/data-visualization/charts/simple-charts-dashboards.rst deleted file mode 100644 index a4bde9f10..000000000 --- a/data-visualization/charts/simple-charts-dashboards.rst +++ /dev/null @@ -1,134 +0,0 @@ -.. _simple-charts-dashboards: - -*********************************************************************** -Create simple charts using Splunk Observability Cloud -*********************************************************************** - -.. meta:: - :description: Splunk Observability Cloud makes it easy for you to quickly add simple charts to a new or existing dashboard. For example, you might want to put together a new draft dashboard with simple charts to share with others. If you're troubleshooting a problem, you can add charts for various metrics to a dashboard, share it with others, then close it without even saving it. - -This topic describes how to create simple charts to add to a new or existing dashboard. - -For example, you can create a new draft dashboard and add one or more simple charts to it. You can then :ref:`share the chart ` on the draft dashboard with others. If you want to continue using the charts on the draft dashboard, you can save the dashboard. Or, if you no longer need the charts, you can just clear the draft dashboard without saving. - -You can also add simple charts to existing dashboards that you have write permissions for. - -For information about developing more complex charts, see :ref:`create-charts`. - - -.. _finding-metrics-and-events: -.. _use-metrics-sidebar: - -Find metrics and events to add to a simple chart -============================================================================= - -To start creating a simple chart, use the Metrics Sidebar to find and select the metrics and events you want to display in your chart. - -- To add a new chart to an existing dashboard, open the dashboard. Click the sidebar icon in the top right to open the Metrics Sidebar, if it isn't already open. - -- To add a new chart to a new dashboard, open the navigation :strong:`Menu` and select :strong:`Dashboard`. Open the :strong:`Create` menu (+) in the top right and select :strong:`Dashboard`. Click :strong:`Browse Metrics Sidebar` in the new chart placeholder section to open the Metrics Sidebar. - -To search for a metric to display in a chart, select the :strong:`Find Metrics` option, enter one or more keywords in the search field, and click the search icon or press Enter. To search for an event to display in a chart, select the :strong:`Find Events` option instead. - -If a search keyword also matches metric metadata, such as a dimension name or property value, the metadata displays under the metric name. Click the matching metadata, or the :strong:`Filter` (+) icon, to add it to your search as a filter. To exclude the metadata from your search results, click the :strong:`Exclude` (-) icon. - -Hover over a metric or event name to display information about it. For example, when you hover over a metric name, you can see the metric name, its description, the time it was created, its type, and the number of time series that it reports (filtered by any filters that have been applied to your search query). - -For general guidance on how to browse and search for metrics, see :ref:`metric-finder`. - - -.. _creating-charts: - -Create a simple chart -============================================================================= - -After you've found one or more metrics or events that you want to add to your chart, you have the following options. - - -Add metrics to a simple chart -------------------------------------- - -On the :strong:`Metrics` tab in the Metrics Sidebar, select the :strong:`Find Metrics` option. - -- To add a chart for a single metric, click the metric name. - -- To add a single chart containing one plot for each metric: - - - Select the checkbox next to each item; you can also click :strong:`Select All`. - - Click :strong:`Add Chart`. - -- To add multiple charts to the dashboard, one for each metric: - - - Select the checkbox next to each item; you can also click :strong:`Select all`. - - Select the :strong:`Separate charts` option. - - Click :strong:`Add charts`. - -- To add active filters and matching metadata from each metric result to a chart as a filter: - - - Select the checkbox next to each item; you can also click :strong:`Select all`. - - Select the :strong:`Add with filters` option. - - Click :strong:`Add Chart`. - - -Add events to a simple chart -------------------------------------- - -On the :strong:`Metrics` tab in the Metrics Sidebar, select the :strong:`Find Events` option. - -- To add a chart for a single event, click the event name. - -- To add a single chart containing one plot for each event: - - - Select the checkbox next to each item; you can also click :strong:`Select All`. - - Click :strong:`Add Single Chart`. - -- To add multiple charts to the dashboard, one for each event: - - - Select the checkbox next to each item; you can also click :strong:`Select all`. - - Click :strong:`Multiple Charts`. - -.. note:: New charts are always added to the bottom of a dashboard. Depending on the number of charts on your dashboard, you might need to scroll to see a chart you've just added. Hover over the top edge of a chart in a dashboard to display a control that enables you to move the chart. You can also resize a chart by clicking and dragging the corners or the side and bottom edges. - - -.. _new-dashboard-next-steps: - -Save, share, or clear charts -============================================================================= - -After adding charts to a new dashboard, you have several options: - -- Share the charts. - - If other people are interested in seeing your charts, such as for troubleshooting an issue, you can share the charts, or the entire dashboard, without having to save the dashboard. - - To share a chart, open the :strong:`Chart actions` menu by clicking the |more| icon in the top right of a chart and select :strong:`Share`. - - For more details about sharing charts, see :ref:`sharing-a-chart`. - - To share the dashboard, open the :strong:`Dashboard actions` menu by clicking the |more| icon in the top right of the dashboard and select :strong:`Share`. - -- Save the dashboard. - - If you created a set of charts you want to refer to in the future, save the dashboard. - - To save the dashboard, open the :strong:`Dashboard actions` menu by clicking the |more| icon in the top right of the dashboard and select :strong:`Save As...`. Enter a dashboard name and the dashboard group you want to save the dashboard to. You can save the dashboard to an existing custom or user dashboard group, or you can create a new dashboard group. If you create a new dashboard group, the group is added as a Custom Dashboard group. For information about dashboard group types, see :ref:`dashboard-basics`. - -- Clear the charts. - - When you are done working with an unsaved dashboard and don't need the charts anymore, click :strong:`Clear` to remove all charts and return the dashboard to an empty state. - -- Exit the dashboard without saving it. - - If needed, you can navigate away from your charts and dashboard without saving them. The charts and dashboard are kept as an unsaved dashboard. - - To navigate back to your unsaved dashboard, access the Dashboards page, open the :strong:`Create` (+) menu, and click :strong:`Dashboard (unsaved)`. The unsaved dashboard is also accessible from your list of :strong:`Recent` dashboards at the top of the Dashboards page. - - -Next steps -============================================================================= - -- To find your metrics quickly and easily, consider using the full-featured :ref:`Metric Finder`. - -- To learn how to modify and configure charts, including applying additional analytics functions to make them more informative, see :ref:`chart-builder` and :ref:`gain-insights-through-chart-analytics`. - -- To learn how to create an event feed chart, see :ref:`dashboard-event-feed`. diff --git a/data-visualization/dashboards/dashboard-create-customize.rst b/data-visualization/dashboards/dashboard-create-customize.rst index 00ea44f45..7c73ec0a7 100644 --- a/data-visualization/dashboards/dashboard-create-customize.rst +++ b/data-visualization/dashboards/dashboard-create-customize.rst @@ -7,15 +7,7 @@ Create and customize dashboards .. meta:: :description: Visualize metrics and create customized filters and variables to explore data in real time with dashboards in Splunk Observability Cloud. -You can quickly visualize the metrics you monitor using Splunk Observability Cloud dashboards. This topic -explains how to create and customize these dashboards, as well as how to customize mirrored dashboards. - -Prerequisites -================== - -- If you are unfamiliar with dashboards or need a refresher, see :ref:`dashboard-basics`. - -- See :ref:`simple-charts-dashboards` for information about simple charts. +You can quickly visualize the metrics you monitor using Splunk Observability Cloud dashboards. This topic explains how to create and customize these dashboards, as well as how to customize mirrored dashboards. If you are unfamiliar with dashboards or need a refresher, see :ref:`dashboard-basics`. .. _create-dashboard: diff --git a/data-visualization/dashboards/dashboard-group.rst b/data-visualization/dashboards/dashboard-group.rst index eb055a6bc..a5ad6211e 100644 --- a/data-visualization/dashboards/dashboard-group.rst +++ b/data-visualization/dashboards/dashboard-group.rst @@ -23,7 +23,7 @@ To create a dashboard group from scratch, take the following steps: #. Set write permissions if needed, then click :guilabel:`Create`. To learn more, see :ref:`about-permissions`. #. After that, you land on a dashboard with the same name as the group. You can rename the dashboard from the dashboard's Actions menu (|more|), or begin adding charts to the group. -For more information on creating charts, see :ref:`simple-charts-dashboards` and :ref:`create-charts`. +For more information on creating charts, see :ref:`create-charts`. .. _protect-dashboard: From 67598007ace7b95865563c2367ec76754c0b9463 Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 3 Dec 2024 11:20:23 +0100 Subject: [PATCH 05/42] Rephrase and reformat notes --- data-visualization/charts/create-charts.rst | 24 +++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index 43e618e7f..8b66ec3eb 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -169,24 +169,26 @@ To learn more about different chart types, see :ref:`chart-types`. The chart type you select is applied as a default to all the plots on the chart, but you can use different visualizations for individual plots. To learn more, see :ref:`plot-config-panel`. -Edit a chart -============ - -To edit a chart, open it from any dashboard or the Dashboard panel of a navigator. Editing a chart is essentially identical to building a chart. See :ref:`chart-builder`. - -If you don't have write permissions for the dashboard containing the chart or if you are in a built-in dashboard, you have to use :guilabel:`Save as` to save the edited chart as a new chart. - .. _save-chart: Save a chart ============ -When you finish creating or editing a chart, select :guilabel:`Save`, :guilabel:`Save as`, or :guilabel:`Save and close` from the :guilabel:`Chart actions` drop-down menu of the chart. The button text varies depending on how you created or opened the chart. If the button is not labeled with the option you want, you can select other options from the :guilabel:`Chart actions` menu. +When you finish creating or editing a chart, select :guilabel:`Save`, :guilabel:`Save as`, or :guilabel:`Save and close` from the :guilabel:`Chart actions` menu of the chart. The options vary depending on how you created or opened the chart. -If you don't have write permissions for the dashboard you are viewing, or you are in a built-in dashboard, you can't see an option to save the chart. Instead, you have to use :guilabel:`Save as` to save the chart. +If you don't have write permissions for the dashboard you are viewing or if you are in a built-in dashboard, you can't see an option to save the chart. Instead, you have to use :guilabel:`Save as` to save the chart to another dashboard. -If you don't want to save your changes, select :guilabel:`Close`. +To save your changes, select :guilabel:`Close`. .. note:: - If you select :guilabel:`Close`, you will not be prompted to save the chart, even if you have made some changes. Any unsaved changes will be lost. + Closing a chart doesn't prompt you to save changes. You must save your changes before closing, or unsaved changes will be lost. + +Edit a chart +============ + +To edit a chart, open it from any dashboard or the :strong:`Dashboard` panel of a navigator. + + .. note:: If you don't have write permissions for the dashboard containing the chart or if you are in a built-in dashboard, you have to use :guilabel:`Save as` to save the edited chart to another dashboard. + + From 7db142e696081e998065063ba98cf462e1c5dc56 Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 3 Dec 2024 11:28:02 +0100 Subject: [PATCH 06/42] Update broken labels --- conf.py | 2 +- data-visualization/charts/chart-builder.rst | 12 ++++++------ .../metrics-finder-metadata-catalog.rst | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/conf.py b/conf.py index 4515173de..689b75827 100644 --- a/conf.py +++ b/conf.py @@ -162,7 +162,7 @@ # An RST epilog to add variable names for feature text replacement, and non-breaking space. rst_epilog = """ -.. |ms| replace:: Metrics Sidebar +.. |ms| replace:: metrics sidebar .. |mtab| replace:: Muting Rules tab .. |sn| replace:: ServiceNow .. |sv| replace:: secondary visualization diff --git a/data-visualization/charts/chart-builder.rst b/data-visualization/charts/chart-builder.rst index 5585189da..b384c5da3 100644 --- a/data-visualization/charts/chart-builder.rst +++ b/data-visualization/charts/chart-builder.rst @@ -47,14 +47,14 @@ If your metrics follow the naming conventions for Graphite metrics, see :ref:`gr .. _find-metric: -Use the Metrics Sidebar to find a metric +Use the metrics sidebar to find a metric ------------------------------------------------------------------- -You can also choose the signal by using the Metrics Sidebar to search for metric and histogram metric names, instead of typing one in directly. Select :strong:`Browse` next to the :strong:`Signal` field to display the Metrics Sidebar. +You can also select the signal by using the metrics sidebar to search for metric and histogram metric names, instead of typing one in directly. Select :strong:`Browse` next to the :strong:`Signal` field to display the metrics sidebar. -In the Metrics Sidebar, select the :strong:`Find Metrics` option to search for metrics and histogram metrics. Using the Metrics Sidebar is the same as described in :ref:`use-metrics-sidebar`, except that each selected metric is added as a plot in the chart, instead of as one or more new charts. +In the metrics sidebar, select :strong:`Find metrics` to search for metrics and histogram metrics. Using the metrics sidebar is the same as described in :ref:`create-chart-metric-sidebar`, except that each selected metric is added as a plot in the chart, instead of as one or more new charts. -For information about how to use the :strong:`Find Events` option, see :ref:`chart-events-as-occur`. +For information about how to use the :strong:`Find events` option, see :ref:`chart-events-as-occur`. .. _expression: @@ -234,9 +234,9 @@ For background information on events, see :ref:`events-intro`. Display events as they occur ------------------------------------------------------------------- -The process for adding an event triggered by a :term:`detector`, or occurrences of a custom event, is essentially identical to :ref:`specifying a metric as a signal`. The only real difference is that if you :ref:`use the Metrics Sidebar `, you must select the :strong:`Find Events` option to search for detector or custom event names. +The process for adding an event triggered by a :term:`detector`, or occurrences of a custom event, is essentially identical to :ref:`specifying a metric as a signal`. The only real difference is that if you use the metrics sidebar, you must select the :strong:`Find events` option to search for detector or custom event names. -.. note:: If you clear the :strong:`Find Metrics` option to search only for events, none of the other search options in the Metrics Sidebar are available. You must enter text manually to find matching detector or custom event names. Similarly, if you add a filter, you can search only for metrics, not for events. +.. note:: If you clear the :strong:`Find metrics` option to search only for events, none of the other search options in the metrics sidebar are available. You must enter text manually to find matching detector or custom event names. Similarly, if you add a filter, you can search only for metrics, not for events. .. _event-markers: diff --git a/metrics-and-metadata/metrics-finder-metadata-catalog.rst b/metrics-and-metadata/metrics-finder-metadata-catalog.rst index b3f89d97a..946c3f8f7 100644 --- a/metrics-and-metadata/metrics-finder-metadata-catalog.rst +++ b/metrics-and-metadata/metrics-finder-metadata-catalog.rst @@ -1,7 +1,7 @@ .. _metrics-finder-and-metadata-catalog: ***************************************************************** -Search the Metric Finder and Metadata catalog +Search the Metric Finder and Metadata Catalog ***************************************************************** .. meta:: From e59625f81b1b5ffd83baacfaee2ad53f212c3054 Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 3 Dec 2024 11:30:25 +0100 Subject: [PATCH 07/42] Style fixes --- data-visualization/charts/chart-builder.rst | 2 +- data-visualization/dashboards/dashboards-add.rst | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data-visualization/charts/chart-builder.rst b/data-visualization/charts/chart-builder.rst index b384c5da3..eb57c3c67 100644 --- a/data-visualization/charts/chart-builder.rst +++ b/data-visualization/charts/chart-builder.rst @@ -716,7 +716,7 @@ For example, for a regular wildcard query, :code:`jvm.*` returns anything that s For Graphite wildcards, :code:`jvm.*` returns only something that has no subsequent dots in the name. For example, for :code:`jvm.*`, :code:`jvm.foo` would be returned, but :code:`jvm.foo.bar` and :code:`jvm.foo.bar.foo` would not. -To use the Graphite wildcard, enter the appropriate Graphite syntax into the signal field, then select the Graphite wildcard option. If you are using the Metrics Sidebar, enter any search term with an asterisk between two dot (.) characters, then select :strong:`Graphite wildcard` from the search results list. +To use the Graphite wildcard, enter the appropriate Graphite syntax into the signal field, then select the Graphite wildcard option. If you are using the metrics sidebar, enter any search term with an asterisk between two dot (.) characters, then select :strong:`Graphite wildcard` from the search results list. When the Graphite wildcard option is selected, the ability to filter plots by dimensions is removed. Graphite naming conventions encapsulate dimension values into dot-separated strings and are in effect selected through the use of wildcards. diff --git a/data-visualization/dashboards/dashboards-add.rst b/data-visualization/dashboards/dashboards-add.rst index 1e9de7559..fe61231a4 100644 --- a/data-visualization/dashboards/dashboards-add.rst +++ b/data-visualization/dashboards/dashboards-add.rst @@ -43,9 +43,9 @@ An event feed chart shows a list of events that meet criteria you specify, inclu - custom events that you have manually created in Splunk Infrastructure Monitoring - custom events that have been sent in from an external source -You can use the Metrics Sidebar to quickly add simple event feed charts to your dashboard (see :ref:`create-charts`). Click :menuselection:`Find Events` in the Metrics Sidebar to include only events in your search results. +You can use the metrics sidebar to quickly add simple event feed charts to your dashboard (see :ref:`create-charts`). Select :menuselection:`Find events` in the metrics sidebar to include only events in your search results. -To add charts with more robust event feeds to a dashboard, open the dashboard and then select :menuselection:`Chart` from the dashboard's Actions menu (|more|). (Alternately, you can click :guilabel:`New chart` in the placeholder image at the bottom of every dashboard.) From the chart type selector, select :menuselection:`Event Feed`. See :ref:`chart-types` for more information on Event Feed charts. +To add charts with more robust event feeds to a dashboard, open the dashboard and then select :menuselection:`Chart` from the dashboard's Actions menu (|more|). (Alternately, you can select :guilabel:`New chart` in the placeholder image at the bottom of every dashboard.) From the chart type selector, select :menuselection:`Event Feed`. See :ref:`chart-types` for more information on Event Feed charts. If you don't have :ref:`write permissions` for the dashboard you are viewing, or you are in a built-in dashboard, you need to select :guilabel:`Save as` to save the chart. @@ -53,7 +53,7 @@ You can add multiple event types to the feed by adding a new plot line for each If you add events generated when a detector triggers an alert, the severity of the alert is shown in the feed. -Click :guilabel:`Save As` to save the event feed to the dashboard; the event feed is placed at the bottom of the dashboard. Once in the dashboard, the event feed can be moved and resized like any other chart. You can also click on custom events listed in the feed to edit or delete them. +Select :guilabel:`Save As` to save the event feed to the dashboard; the event feed is placed at the bottom of the dashboard. Once in the dashboard, the event feed can be moved and resized like any other chart. You can also select custom events listed in the feed to edit or delete them. When you hover over an event in a dashboard's event feed chart, a vertical line is displayed in all the charts at the time the event occurred. This feature makes it easy for you to visualize correlations between metric values and the event. (Of course, a line is displayed only when the event occurred during the time frame displayed in the dashboard.) From 33057cab11aee25f1b6c3384526d113c45e5a506 Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 3 Dec 2024 11:32:28 +0100 Subject: [PATCH 08/42] Add numbered steps --- data-visualization/charts/create-charts.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index 8b66ec3eb..09f15147e 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -174,11 +174,11 @@ The chart type you select is applied as a default to all the plots on the chart, Save a chart ============ -When you finish creating or editing a chart, select :guilabel:`Save`, :guilabel:`Save as`, or :guilabel:`Save and close` from the :guilabel:`Chart actions` menu of the chart. The options vary depending on how you created or opened the chart. +#. When you finish creating or editing a chart, select :guilabel:`Save`, :guilabel:`Save as`, or :guilabel:`Save and close` from the :guilabel:`Chart actions` menu of the chart. The options vary depending on how you created or opened the chart. -If you don't have write permissions for the dashboard you are viewing or if you are in a built-in dashboard, you can't see an option to save the chart. Instead, you have to use :guilabel:`Save as` to save the chart to another dashboard. + If you don't have write permissions for the dashboard you are viewing or if you are in a built-in dashboard, you have to use :guilabel:`Save as` to save the chart to another dashboard. -To save your changes, select :guilabel:`Close`. +#. Select :guilabel:`Close`. .. note:: From 01a4544c00b1dbb67068ba4865af64b99431ff2e Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 3 Dec 2024 11:42:08 +0100 Subject: [PATCH 09/42] Remove stacked headings --- data-visualization/charts/chart-types.rst | 5 ----- 1 file changed, 5 deletions(-) diff --git a/data-visualization/charts/chart-types.rst b/data-visualization/charts/chart-types.rst index fca069693..02bf0a43f 100644 --- a/data-visualization/charts/chart-types.rst +++ b/data-visualization/charts/chart-types.rst @@ -8,11 +8,6 @@ Chart types in Splunk Observability Cloud .. meta:: :description: Learn about different chart types and when to use each chart type in Splunk Observability Cloud -.. _charts-overview: - -Overview -==================== - Charts in Splunk Observability Cloud are components of a dashboard. Each chart type provides a different way to represent your data: - :ref:`graph-charts`: Display data points over a period of time. Graph charts come in four different forms. From 1dd0ba64e4bdb8e34d0235deadd05bf9b80ee797 Mon Sep 17 00:00:00 2001 From: ada Date: Fri, 6 Dec 2024 15:52:36 -0800 Subject: [PATCH 10/42] Add info to table of available components per region or realm --- get-started/service-description.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/get-started/service-description.rst b/get-started/service-description.rst index 8c1b9dc58..618de7be5 100644 --- a/get-started/service-description.rst +++ b/get-started/service-description.rst @@ -274,13 +274,13 @@ The following components are available for each global region. Each Cloud provid - * US: Oregon (us-west-2), Virginia (us-east-1) * Europe: Dublin (eu-west-1), Frankfurt (eu-central-1), London (eu-west-2) - * Asia Pacific: Sydney (ap-southeast-2) + * Asia Pacific: Sydney (ap-southeast-2), Tokyo (ap-northeast-1) - * US: Oregon (us-west-1) - * us0, us1, us2 * eu0, eu1, eu2 - * au0 + * au0, jp0 * - Synthetic Monitoring - * US: Oregon (us-west-2), Virginia (us-east-1) From b44eafdbe024b8cbb6fbcc019d4e3125f27b412b Mon Sep 17 00:00:00 2001 From: jcatera Date: Thu, 12 Dec 2024 16:52:14 -0800 Subject: [PATCH 11/42] Adding a note that we don't officially support compatibility with the Java agents of other vendors. --- gdi/get-data-in/application/java/java-otel-requirements.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gdi/get-data-in/application/java/java-otel-requirements.rst b/gdi/get-data-in/application/java/java-otel-requirements.rst index 86b367a1c..395f76862 100644 --- a/gdi/get-data-in/application/java/java-otel-requirements.rst +++ b/gdi/get-data-in/application/java/java-otel-requirements.rst @@ -9,6 +9,8 @@ Java agent compatibility and requirements Meet the following requirements to instrument Java applications for Splunk Observability Cloud. +.. note:: Splunk does not officially support compatibility with Java agents from other vendors. + .. _java-requirements: Make sure you are using compatible Java and JVM versions From e497706602debc9a9be7b4a30ba9369e79d53108 Mon Sep 17 00:00:00 2001 From: Bri Hillmer Date: Fri, 13 Dec 2024 10:07:16 -0700 Subject: [PATCH 12/42] add expectation note --- _templates/layout.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_templates/layout.html b/_templates/layout.html index 553856012..92c05200f 100644 --- a/_templates/layout.html +++ b/_templates/layout.html @@ -181,8 +181,8 @@

Was this
Feedback submitted, thanks!
-

- Did you know that you can edit this page? Learn how! +

+ We review and resolve documentation feedback based on the severity of the issue reported, as well as an assessment of the potential number of customers who might be affected. If you have a question about using Splunk software, we encourage you to check Splunk Answers or Splunk community Slack to see if similar questions have been answered, or to post your question for others to answer. Alternatively, if you have an active support entitlement and believe that your situation is caused by a product defect, file a support case via the Support portal https://login.splunk.com/page/sso_redirect?type=portal.
From 3fd2e4b87606b9c48a41f06ccf869c85e3c9cd01 Mon Sep 17 00:00:00 2001 From: Bri Hillmer Date: Fri, 13 Dec 2024 10:39:08 -0700 Subject: [PATCH 13/42] add text about migration --- _templates/layout.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/_templates/layout.html b/_templates/layout.html index 92c05200f..90a909bbf 100644 --- a/_templates/layout.html +++ b/_templates/layout.html @@ -182,7 +182,11 @@

Was this Feedback submitted, thanks!

- We review and resolve documentation feedback based on the severity of the issue reported, as well as an assessment of the potential number of customers who might be affected. If you have a question about using Splunk software, we encourage you to check Splunk Answers or Splunk community Slack to see if similar questions have been answered, or to post your question for others to answer. Alternatively, if you have an active support entitlement and believe that your situation is caused by a product defect, file a support case via the Support portal https://login.splunk.com/page/sso_redirect?type=portal. + We are currently moving to a new documentation site. Expect a delay in responding to your feedback and applying any updates based on your feedback. Thank you for your patience and understanding while we work to bring you an improved documentation experience! + + We resolve documentation feedback based on the severity of the issue reported, as well as an assessment of the potential number of customers who might be affected. + + If you have a question about using Splunk software, we encourage you to check Splunk Answers or Splunk community Slack to see if similar questions have been answered, or to post your question for others to answer. If you have an active support entitlement and believe that your situation is caused by a product defect, file a support case in the Support portal https://login.splunk.com/page/sso_redirect?type=portal.
From e64b830c49f114910c6cb27e7c1ccc8c0cb6e652 Mon Sep 17 00:00:00 2001 From: Bri Hillmer Date: Fri, 13 Dec 2024 10:59:56 -0700 Subject: [PATCH 14/42] reformat --- _templates/layout.html | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/_templates/layout.html b/_templates/layout.html index 90a909bbf..4ed4dd382 100644 --- a/_templates/layout.html +++ b/_templates/layout.html @@ -179,14 +179,12 @@

Was this

- Feedback submitted, thanks! + Feedback submitted, thank you! We resolve documentation feedback based on the severity of the issue reported, as well as an assessment of the potential number of customers who might be affected.

+ + If you have a question about using Splunk software, we encourage you to check Splunk Answers or Splunk community Slack to see if similar questions have been answered, or to post your question for others to answer. If you have an active support entitlement and believe that your situation is caused by a product defect, file a support case in the Support portal https://login.splunk.com/page/sso_redirect?type=portal.

We are currently moving to a new documentation site. Expect a delay in responding to your feedback and applying any updates based on your feedback. Thank you for your patience and understanding while we work to bring you an improved documentation experience! - - We resolve documentation feedback based on the severity of the issue reported, as well as an assessment of the potential number of customers who might be affected. - - If you have a question about using Splunk software, we encourage you to check Splunk Answers or Splunk community Slack to see if similar questions have been answered, or to post your question for others to answer. If you have an active support entitlement and believe that your situation is caused by a product defect, file a support case in the Support portal https://login.splunk.com/page/sso_redirect?type=portal.
From c52659f8b64cf8d0010838f8a8cfddf85c5e6652 Mon Sep 17 00:00:00 2001 From: ada Date: Fri, 13 Dec 2024 19:01:05 -0800 Subject: [PATCH 15/42] Adds the instructions for a common use case -- to send an alert when a test fails --- synthetics/test-config/synth-alerts.rst | 48 ++++++++++++++++++++----- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/synthetics/test-config/synth-alerts.rst b/synthetics/test-config/synth-alerts.rst index b1a852ddb..aed8dc931 100644 --- a/synthetics/test-config/synth-alerts.rst +++ b/synthetics/test-config/synth-alerts.rst @@ -11,32 +11,64 @@ In Splunk Observability Cloud, detectors monitor your tests and metrics for anom To learn more about advanced alerts and detectors in Splunk Observability Cloud, see :ref:`get-started-detectoralert`. Read on to learn about creating static threshold detectors specific to Synthetics. -Use cases for detectors in Synthetics +Types of detectors in Synthetics ======================================= -You can use detectors to alert on metrics at the test level, or at the page level or synthetic transaction level for Browser tests. The following table provides example use cases for detectors at each of these levels: +In Synthetics, there are detectors to alert on metrics at the test level, at the page level, or at the synthetic transaction level for browser tests. The following table explains each of these detector types: .. list-table:: :header-rows: 1 :widths: 25 75 * - :strong:`Detector type` - - :strong:`Use case` + - :strong:`Description` * - Test-level detectors - - | Create test-level detectors to trigger alerts on metrics that correspond to the entire test. + - | Test-level detectors send alerts on metrics that correspond to an entire test. | - | For example, alert when the count of failed runs, % Uptime, or duration of the entire test exceeds a given threshold. + | Examples: Send an alert when the count of failed runs, % uptime, or duration of the entire test exceeds a given threshold. * - Page-level detectors - - | In Browser tests, create page-level detectors to trigger alerts on metrics corresponding to a single page within a test. For example, alert when the DOM load time, largest contentful paint (LCP), or total image size on a given page exceeds a given threshold. + - | Page-level detectors send alerts on metrics that correspond to a single page within a browser test. + | + | Examples: Send an alert when the DOM load time, largest contentful paint (LCP), or total image size on a given page exceeds a given threshold. | | If you don't scope your alerts to the page level for page-level metrics, the detector monitors the average metric value across pages. See :ref:`page-level-detector` to learn more. * - Transaction-level detectors - - | In Browser tests, create synthetic transaction-level detectors to trigger alerts on metrics based on a synthetic transaction within a test. + - | Synthetic transaction-level detectors send alerts on metrics that correspond to a synthetic transaction within a browser test. | - | You can alert on the three transaction-level metrics that Splunk Synthetic Monitoring captures: Duration, Requests, and Size. See :ref:`transaction-level-detector` to learn more. + | Examples: Send an alert on the three transaction-level metrics that Splunk Synthetic Monitoring captures (duration, requests, and size). See :ref:`transaction-level-detector` to learn more. + + +Sample use case: Send an alert when a synthetic test fails +=============================================================== + +You can set up a detector while initially creating or editing a test, or from the results view for a particular test. A detector can track one or multiple Synthetic Monitoring tests of the same type. + +To set up a detector, do one of the following: + +* While creating or editing a test, select :guilabel:`Create detector`. The detector dialog box opens. +* From the :guilabel:`Test results` page for a particular test, select :guilabel:`Create detector`. The detector dialog box opens. + +In the detector dialog box, enter the following fields: + +#. In the test name list, select the tests you want to include in your detector. Best practice is to select tests that have a similar run length. +#. In the metric list, select :strong:`Uptime`. The uptime metric is 0 when the test fails. +#. In :strong:`+ Add filters` don't add filters for :guilabel:`failed` or :guilabel:`success`. Omit these filters to ensure that the detector sees all datapoints for the test run. + +#. In the :guilabel:`Alert details` section, enter the following: + + * :guilabel:`Trigger threshold`: The threshold to trigger the alert. + * :guilabel:`Orientation`: Only available for uptime metric. Specify whether the metric must fall below or exceed the threshold to trigger the alert. + * :guilabel:`Violates threshold`: How many times the metric must violate the threshold to trigger the alert. + * :guilabel:`Split by location`: Select whether to split the detector by test location. If you don't filter by location, the detector monitors the average value across all locations. + +#. Use the severity selector to select the severity of the alert. +#. Add recipients. +#. Select :guilabel:`Activate`. + +Your detector is now set up to check for failed test runs every minute and to send an alert based on your settings in :guilabel:`Alert details`. .. _synth-detector-setup: From c85d6b65fe16933623e075bfb89357dd0a333399 Mon Sep 17 00:00:00 2001 From: ada Date: Fri, 13 Dec 2024 19:36:03 -0800 Subject: [PATCH 16/42] Updates on wording --- synthetics/test-config/synth-alerts.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/synthetics/test-config/synth-alerts.rst b/synthetics/test-config/synth-alerts.rst index aed8dc931..315813d04 100644 --- a/synthetics/test-config/synth-alerts.rst +++ b/synthetics/test-config/synth-alerts.rst @@ -44,7 +44,7 @@ In Synthetics, there are detectors to alert on metrics at the test level, at the Sample use case: Send an alert when a synthetic test fails =============================================================== -You can set up a detector while initially creating or editing a test, or from the results view for a particular test. A detector can track one or multiple Synthetic Monitoring tests of the same type. +You can set up a detector while initially creating or editing a test, or from the results view for a particular test. A detector can track one or more synthetic tests. To set up a detector, do one of the following: @@ -60,15 +60,15 @@ In the detector dialog box, enter the following fields: #. In the :guilabel:`Alert details` section, enter the following: * :guilabel:`Trigger threshold`: The threshold to trigger the alert. - * :guilabel:`Orientation`: Only available for uptime metric. Specify whether the metric must fall below or exceed the threshold to trigger the alert. + * :guilabel:`Orientation`: Whether the metric must fall below or exceed the threshold to trigger the alert. * :guilabel:`Violates threshold`: How many times the metric must violate the threshold to trigger the alert. - * :guilabel:`Split by location`: Select whether to split the detector by test location. If you don't filter by location, the detector monitors the average value across all locations. + * :guilabel:`Split by location`: Whether to split the detector by test location. If you don't split by location, the detector monitors the average value across all locations. -#. Use the severity selector to select the severity of the alert. +#. Use the severity selector to set the severity of the alert. #. Add recipients. #. Select :guilabel:`Activate`. -Your detector is now set up to check for failed test runs every minute and to send an alert based on your settings in :guilabel:`Alert details`. +Your detector is now set up to check for failed tests every minute and to send an alert based on your settings in :guilabel:`Alert details`. .. _synth-detector-setup: From bcc9b1aa6a8ce28ee0817abfbfa089966aae08d8 Mon Sep 17 00:00:00 2001 From: jcatera Date: Fri, 13 Dec 2024 19:50:11 -0800 Subject: [PATCH 17/42] Replaced the description of two synth metrics with text from an engineer that was verified as accurate. I rewrote the description to ensure it was consistent with the text we have for other metric descriptions. --- synthetics/api-test/api-test-metrics.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/synthetics/api-test/api-test-metrics.rst b/synthetics/api-test/api-test-metrics.rst index 8f612de4e..b1c225967 100644 --- a/synthetics/api-test/api-test-metrics.rst +++ b/synthetics/api-test/api-test-metrics.rst @@ -108,9 +108,9 @@ Each occurrence of a test from a particular device and location at a specific ti * - Uptime - ``synthetics.run.uptime.percent`` - - The percentage of non-failed test runs. Uptime is calculated by taking the average score of all runs in the selected time frame, where a successful run receives a score of 100 and a failure receives a score of 0. + - The uptime of a test run: the value will be 0 if the test run failed and 100 if it succeeded. * - Downtime - ``synthetics.run.downtime.percent`` - - The percentage of failed runs within the selected time frame. Downtime is calculated by taking the average score of all runs in the selected time frame, where a failed run receives a score of 100 and a successful run receives a score of 0. + - The downtime of a test run: The value will be 100 if the test run failed and 0 if it succeeded. From 736e8de8df39391ff5adc903fbda129243375266 Mon Sep 17 00:00:00 2001 From: ada Date: Fri, 13 Dec 2024 20:07:49 -0800 Subject: [PATCH 18/42] Updates on wording --- synthetics/test-config/synth-alerts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synthetics/test-config/synth-alerts.rst b/synthetics/test-config/synth-alerts.rst index 315813d04..bac8998fe 100644 --- a/synthetics/test-config/synth-alerts.rst +++ b/synthetics/test-config/synth-alerts.rst @@ -68,7 +68,7 @@ In the detector dialog box, enter the following fields: #. Add recipients. #. Select :guilabel:`Activate`. -Your detector is now set up to check for failed tests every minute and to send an alert based on your settings in :guilabel:`Alert details`. +Your detector is now set up to check for failed test runs every minute and to send an alert based on your settings in :guilabel:`Alert details`. .. _synth-detector-setup: From 95d51f59ce91b45d0c9bf343b7990f50acdb23b4 Mon Sep 17 00:00:00 2001 From: ada Date: Fri, 13 Dec 2024 21:52:30 -0800 Subject: [PATCH 19/42] First pass on normalizing, alphabetizing, deduplicating, and restricting the advanced config section to just advanced configs --- index.rst | 6 +- synthetics/api-test/api-test.rst | 2 +- synthetics/test-config/built-in-variables.rst | 2 +- synthetics/test-config/devices.rst | 25 +++++ synthetics/test-config/global-variables.rst | 4 +- synthetics/test-config/private-locations.rst | 2 +- synthetics/test-config/public-locations.rst | 2 +- synthetics/test-config/syn-downtimes.rst | 2 +- synthetics/test-config/synth-alerts.rst | 2 +- synthetics/test-config/test-config.rst | 101 ++---------------- .../{test-kpis => test-status}/test-kpis.rst | 0 synthetics/test-status/test-status.rst | 50 +++++++++ synthetics/uptime-test/uptime-test.rst | 2 +- 13 files changed, 93 insertions(+), 107 deletions(-) create mode 100644 synthetics/test-config/devices.rst rename synthetics/{test-kpis => test-status}/test-kpis.rst (100%) create mode 100644 synthetics/test-status/test-status.rst diff --git a/index.rst b/index.rst index e4235e118..05df6fe13 100644 --- a/index.rst +++ b/index.rst @@ -758,17 +758,17 @@ To keep up to date with changes in the products, see the Splunk Observability Cl .. toctree:: :maxdepth: 3 - Uptime Tests for port and HTTP TOGGLE + Uptime tests for port and HTTP TOGGLE .. toctree:: :maxdepth: 3 - Use an API test to test an endpoint TOGGLE + API tests for endpoints TOGGLE .. toctree:: :maxdepth: 3 - synthetics/test-kpis/test-kpis + Test status TOGGLE .. toctree:: :maxdepth: 3 diff --git a/synthetics/api-test/api-test.rst b/synthetics/api-test/api-test.rst index 97a7c0f12..6e0e204d6 100644 --- a/synthetics/api-test/api-test.rst +++ b/synthetics/api-test/api-test.rst @@ -1,7 +1,7 @@ .. _api-test: ************************************ -API Tests for endpoint +API tests for endpoints ************************************ .. meta:: diff --git a/synthetics/test-config/built-in-variables.rst b/synthetics/test-config/built-in-variables.rst index 0bedf04ef..ca3977716 100644 --- a/synthetics/test-config/built-in-variables.rst +++ b/synthetics/test-config/built-in-variables.rst @@ -1,7 +1,7 @@ .. _built-in-variables: *********************************** -Built-in variables to use in tests +Built-in variables *********************************** .. meta:: diff --git a/synthetics/test-config/devices.rst b/synthetics/test-config/devices.rst new file mode 100644 index 000000000..b3d404e82 --- /dev/null +++ b/synthetics/test-config/devices.rst @@ -0,0 +1,25 @@ +.. _devices: + +***************************************** +Devices +***************************************** + +.. meta:: + :description: When you set up a test in Splunk Synthetic Monitoring, you can configure the viewport and network connection of the device from which the test is simulated. + +When you set up a test in Splunk Synthetic Monitoring, you can configure the viewport and network connection of the device from which the test is simulated. + +Because Browser tests capture the visual experience of a page, while Uptime and API tests only capture response data, viewport applies to Browser tests only. Network connection applies to all test types. + + +Viewport +=================================== +Browser tests in Splunk Synthetic Monitoring capture the visual experience of a user interacting with your application. The viewport is the framed area on a device's screen for viewing information, such as the browser window on a desktop. By default, Browser tests run from a desktop-sized viewport. You can configure tests to run from other viewport sizes to test the user experience from a variety of window sizes and device types. + +When you set up a test, you can choose the viewport size from a list of common devices, or set a custom viewport by height and width. + +Network connection +=================================== +You can run Browser, Uptime, or API tests to simulate network connections of various latencies, including Mobile LTE, Mobile 3G, DSL, Mobile 5G, and cable internet. Testing your site from a variety of connection types lets you monitor the experience of users in a variety of settings. + + diff --git a/synthetics/test-config/global-variables.rst b/synthetics/test-config/global-variables.rst index ff92d4b04..f37798c57 100644 --- a/synthetics/test-config/global-variables.rst +++ b/synthetics/test-config/global-variables.rst @@ -1,13 +1,13 @@ .. _global-variables: ***************************************** -Create and use global variables +Global variables ***************************************** .. meta:: :description: Define a variable that you can use in multiple browser and API tests in Splunk Synthetic Monitoring. -Define a global variable once, and then use it across all of your browser and API tests. +Global variables are pre-saved, reusable variables that you define once and use across all your browser and API tests. How can you use a global variable? diff --git a/synthetics/test-config/private-locations.rst b/synthetics/test-config/private-locations.rst index fc31ea30e..60918a1af 100644 --- a/synthetics/test-config/private-locations.rst +++ b/synthetics/test-config/private-locations.rst @@ -5,7 +5,7 @@ Private locations ***************** .. meta:: - :description: Run synthetic tests from an internal site or private web application to quickly find defects using Splunk Synthetic Monitoring. + :description: Run synthetic tests from private locations such as internal sites, private web applications, or private networks. A private location is a software package that offers a quick and easy deployment of Splunk Synthetic Monitoring solutions beyond the public network so that you can find, fix, and prevent web performance defects on any internal web application, in any environment - whether inside or outside of your firewalls. Private locations allow Splunk Synthetics Monitoring users to test sooner in the development cycle and against internal sites or applications that aren't available to the public. diff --git a/synthetics/test-config/public-locations.rst b/synthetics/test-config/public-locations.rst index 412071af4..9babdfdc5 100644 --- a/synthetics/test-config/public-locations.rst +++ b/synthetics/test-config/public-locations.rst @@ -5,7 +5,7 @@ Public locations ***************** .. meta:: - :description: Run synthetic tests from locations set by infrastructure and connectivity providers to simulate performance for users in that location. + :description: Run synthetic tests from locations set by infrastructure and connectivity providers to simulate performance from a range of checkpoints around the world. Public locations are global checkpoints from which you can run synthetic tests to simulate performance for users in that location. diff --git a/synthetics/test-config/syn-downtimes.rst b/synthetics/test-config/syn-downtimes.rst index 0b367dbae..b9e10d419 100644 --- a/synthetics/test-config/syn-downtimes.rst +++ b/synthetics/test-config/syn-downtimes.rst @@ -1,7 +1,7 @@ .. _syn-downtimes: ************************************************************ -Schedule a downtime configuration +Downtime ************************************************************ diff --git a/synthetics/test-config/synth-alerts.rst b/synthetics/test-config/synth-alerts.rst index b1a852ddb..43743880a 100644 --- a/synthetics/test-config/synth-alerts.rst +++ b/synthetics/test-config/synth-alerts.rst @@ -1,7 +1,7 @@ .. _synth-alerts: ************************************************************ -Set up detectors and alerts in Splunk Synthetic Monitoring +Detectors and alerts ************************************************************ .. meta:: diff --git a/synthetics/test-config/test-config.rst b/synthetics/test-config/test-config.rst index e4a8e0089..3b3ca026a 100644 --- a/synthetics/test-config/test-config.rst +++ b/synthetics/test-config/test-config.rst @@ -9,92 +9,19 @@ Advanced test configurations .. toctree:: - synth-alerts built-in-variables + synth-alerts + devices + syn-downtimes global-variables - public-locations private-locations + public-locations rum-synth try-now - syn-downtimes + To simulate diverse types of traffic to your site or application, use a range of configuration options to customize each of your tests. -======================================================================================== -Devices -======================================================================================== - -When you set up a test in Splunk Synthetic Monitoring, you can configure the viewport and network connection of the device from which the test is simulated. - -Because Browser tests capture the visual experience of a page, while Uptime and API tests only capture response data, viewport applies to Browser tests only. Network connection applies to all test types. - ----------------------------------------------------------------------------------------- -Viewport ----------------------------------------------------------------------------------------- -Browser tests in Splunk Synthetic Monitoring capture the visual experience of a user interacting with your application. The viewport is the framed area on a device's screen for viewing information, such as the browser window on a desktop. By default, Browser tests run from a desktop-sized viewport. You can configure tests to run from other viewport sizes to test the user experience from a variety of window sizes and device types. - -When you set up a test, you can choose the viewport size from a list of common devices, or set a custom viewport by height and width. - ----------------------------------------------------------------------------------------- -Network connection ----------------------------------------------------------------------------------------- -You can run Browser, Uptime, or API tests to simulate network connections of various latencies, including Mobile LTE, Mobile 3G, DSL, Mobile 5G, and cable internet. Testing your site from a variety of connection types lets you monitor the experience of users in a variety of settings. - -======================================================================================== -Variables -======================================================================================== -Use variables to fill in fields, provide URLs, and enter other information during your tests. - -.. list-table:: - :header-rows: 1 - :widths: 20 80 - - * - :strong:`Variable type` - - :strong:`Description` - * - Built-in variables - - Built-in variables such as random values, dates and times, or location names, for use in your Browser and API Tests. See :ref:`built-in-variables` to learn more. - * - Global variables - - Pre-saved, reusable variables you can define once and use across all your Browser and API tests. See :ref:`global-variables` to learn more. - -======================================================================================== -Locations -======================================================================================== -Specify locations for your tests to simulate traffic from a range of checkpoints around the world, or use private locations to test sites from within a private network. - -For more, see: - -* :ref:`public-locations` -* :ref:`private-locations` - -.. * See :ref:`private-locations` to set up private locations. - - -======================================================================================== -Test state and current status -======================================================================================== -You can use the play and pause buttons in the more menu (|more|) of your tests to pause or resume data collection. - -The current status of a test is updated every time you load the :guilabel:`Test Overview` page in Splunk Synthetic Monitoring. The following table describes the possible status types for each test. - -.. list-table:: - :header-rows: 1 - :widths: 20, 80 - - * - :strong:`Current status` - - :strong:`Description` - - * - Pending - - Splunk Synthetic Monitoring is still retrieving the status of this test. - - * - Available - - The test is functioning properly. If the test is active, data is being collected at the set interval and can be viewed in the :guilabel:`Test History` page. If the test is paused, it can be unpaused and will resume collecting data. - - * - No Data - - The test isn't currently collecting data. - - * - Failure - - The test encountered a failure. - ======================================================================================== Test naming conventions ======================================================================================== @@ -106,22 +33,6 @@ Choosing informative names for your tests and alerts helps organize content. Her .. image:: /_images/synthetics/ButtercupGames-naming-convention.png :width: 60% - :alt: This image shows two Browser tests with the prefix [ButtercupGames]. - - -================================ -Troubleshoot broken tests -================================ - -See, :ref:`syn-troubleshoot`. + :alt: This image shows two browser tests with the prefix [ButtercupGames]. - -======================================================================================== -Filter tests -======================================================================================== -You can filter by test type, key-value pairs, and more. - -.. image:: /_images/synthetics/syn-filter-test.png - :width: 60% - :alt: This image shows the filter env:prod for all tests on the Synthetic homepage.. diff --git a/synthetics/test-kpis/test-kpis.rst b/synthetics/test-status/test-kpis.rst similarity index 100% rename from synthetics/test-kpis/test-kpis.rst rename to synthetics/test-status/test-kpis.rst diff --git a/synthetics/test-status/test-status.rst b/synthetics/test-status/test-status.rst new file mode 100644 index 000000000..9de75e18c --- /dev/null +++ b/synthetics/test-status/test-status.rst @@ -0,0 +1,50 @@ +.. _test-status: + +*************************************************** +Test status +*************************************************** + +.. meta:: + :description: words + + +.. toctree:: + + test-kpis + +======================================================================================== +Test state and current status +======================================================================================== +You can use the play and pause buttons in the more menu (|more|) of your tests to pause or resume data collection. + +The current status of a test is updated every time you load the :guilabel:`Test Overview` page in Splunk Synthetic Monitoring. The following table describes the possible status types for each test. + +.. list-table:: + :header-rows: 1 + :widths: 20, 80 + + * - :strong:`Current status` + - :strong:`Description` + + * - Pending + - Splunk Synthetic Monitoring is still retrieving the status of this test. + + * - Available + - The test is functioning properly. If the test is active, data is being collected at the set interval and can be viewed in the :guilabel:`Test History` page. If the test is paused, it can be unpaused and will resume collecting data. + + * - No Data + - The test isn't currently collecting data. + + * - Failure + - The test encountered a failure. + + + +======================================================================================== +Filter tests +======================================================================================== +You can filter by test type, key-value pairs, and more. + +.. image:: /_images/synthetics/syn-filter-test.png + :width: 60% + :alt: This image shows the filter env:prod for all tests on the Synthetic homepage.. diff --git a/synthetics/uptime-test/uptime-test.rst b/synthetics/uptime-test/uptime-test.rst index afa21464b..8b7dbe1cc 100644 --- a/synthetics/uptime-test/uptime-test.rst +++ b/synthetics/uptime-test/uptime-test.rst @@ -2,7 +2,7 @@ .. _uptime-test: ************************************************** -Uptime Tests for port and HTTP +Uptime tests for port and HTTP ************************************************** .. meta:: From 666498f367ec3e03768cd96d0df9f98338e8dc40 Mon Sep 17 00:00:00 2001 From: ada Date: Mon, 16 Dec 2024 14:33:43 -0800 Subject: [PATCH 20/42] Added screenshot per request from PM --- _images/synthetics/detector-one.png | Bin 0 -> 148060 bytes synthetics/test-config/synth-alerts.rst | 6 ++++++ 2 files changed, 6 insertions(+) create mode 100644 _images/synthetics/detector-one.png diff --git a/_images/synthetics/detector-one.png b/_images/synthetics/detector-one.png new file mode 100644 index 0000000000000000000000000000000000000000..1d91cebe84807b0ae6f6ef41d6588faf9a673ddd GIT binary patch literal 148060 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�HHrn{i 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 Date: Mon, 16 Dec 2024 19:50:02 -0800 Subject: [PATCH 21/42] Adding pipeline example and link to the environment doc to help customers understand how the resource is mapped to services and pipelines. --- apm/set-up-apm/environments.rst | 14 ++++++++++++++ .../components/resource-processor.rst | 2 ++ 2 files changed, 16 insertions(+) diff --git a/apm/set-up-apm/environments.rst b/apm/set-up-apm/environments.rst index 1ec524c74..e71bfddc3 100644 --- a/apm/set-up-apm/environments.rst +++ b/apm/set-up-apm/environments.rst @@ -61,6 +61,20 @@ The :new-page:`Splunk Distribution of OpenTelemetry Collector agent config file Note that unlike standard attributes, the ``deployment.environment`` tag is set with the ``resource`` processor in OpenTelemetry, because this tag is typically associated with the host or container in which the application is running. +The ``resource/add_environment`` resorce can be then added to any pipeline of the ``service`` section of your configuration file. See +:ref:`Sample configurations ` for more examples. + +.. code-block:: yaml + + service: + pipelines: + metrics: + processors: [resource/add_environment] + logs: + processors: [resource/add_environment] + traces: + processors: [resource/add_environment] + To learn more about how to add span tags via the Splunk Distribution of OpenTelemetry Collector, see :ref:`otel-span-tags`. Alert on specific environments diff --git a/gdi/opentelemetry/components/resource-processor.rst b/gdi/opentelemetry/components/resource-processor.rst index 709fe57b9..abeea7d3b 100644 --- a/gdi/opentelemetry/components/resource-processor.rst +++ b/gdi/opentelemetry/components/resource-processor.rst @@ -51,6 +51,8 @@ Follow these steps to configure and activate the component: 2. Configure the resource processor as described in the next section. 3. Restart the Collector. +.. _sample_configurations: + Sample configurations ---------------------- From 5497a24a3d4bc97b12180c07b01a363ffea396b0 Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 17 Dec 2024 12:26:48 +0100 Subject: [PATCH 22/42] Add Metric Finder method --- data-visualization/charts/create-charts.rst | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index 09f15147e..e2b3a71c3 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -31,6 +31,8 @@ See the following table for different chart creation methods: * - :strong:`Method` - :strong:`Description` + * - Create a chart using the Metric Finder + - Use this method to browse metrics and decide the metric you are interested in before creating a chart. To learn more, see :ref:`create-chart-metric-finder`. * - Create a chart using the metrics sidebar - Use this method to create a simple chart or add a new chart to an existing dashboard. To learn more, see :ref:`create-chart-metric-sidebar`. * - Copy a chart @@ -41,6 +43,19 @@ See the following table for different chart creation methods: - Use this method to programmatically create a chart instead of creating one through the user interface. To learn more, see :ref:`create-chart-via-api`. +.. _create-chart-metrics-finder: + +Create a chart using the Metric Finder +------------------------------------------------ + +If you're not sure which metric you want to track, use the Metric Finder to browse different options before creating a new chart. + +#. From the navigation menu, select :strong:`Metric Finder`. +#. Search for metrics by entering key words into the search bar, or selecting an integration name. +#. Once you find the metric you're interested in, select the metric name to open the Chart Builder, pre-populated with your metric. + +To learn more about using the Metric Finder, see :ref:`metric-finder`. + .. _create-chart-metric-sidebar: Create a chart using the metrics sidebar From 947105595b22f838c35ec4619da2f486b57dd1ed Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 17 Dec 2024 15:58:39 +0100 Subject: [PATCH 23/42] Fix label typo --- data-visualization/charts/create-charts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index e2b3a71c3..6565cafb3 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -43,7 +43,7 @@ See the following table for different chart creation methods: - Use this method to programmatically create a chart instead of creating one through the user interface. To learn more, see :ref:`create-chart-via-api`. -.. _create-chart-metrics-finder: +.. _create-chart-metric-finder: Create a chart using the Metric Finder ------------------------------------------------ From 91f0b533f55a39b7dc406dcb4daaa7fcf9493643 Mon Sep 17 00:00:00 2001 From: trangl Date: Tue, 17 Dec 2024 16:16:42 +0100 Subject: [PATCH 24/42] Wording --- data-visualization/charts/create-charts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index 6565cafb3..42f154253 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -32,7 +32,7 @@ See the following table for different chart creation methods: * - :strong:`Method` - :strong:`Description` * - Create a chart using the Metric Finder - - Use this method to browse metrics and decide the metric you are interested in before creating a chart. To learn more, see :ref:`create-chart-metric-finder`. + - Use this method to browse metrics and decide which metric to track before creating a chart. To learn more, see :ref:`create-chart-metric-finder`. * - Create a chart using the metrics sidebar - Use this method to create a simple chart or add a new chart to an existing dashboard. To learn more, see :ref:`create-chart-metric-sidebar`. * - Copy a chart From 23b02a893d2cd0ed5276416a6d72092de49bafbe Mon Sep 17 00:00:00 2001 From: ada Date: Tue, 17 Dec 2024 17:14:45 -0800 Subject: [PATCH 25/42] Updated the description of concealed global variables based on input from security team --- synthetics/test-config/global-variables.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/synthetics/test-config/global-variables.rst b/synthetics/test-config/global-variables.rst index ff92d4b04..f97b18115 100644 --- a/synthetics/test-config/global-variables.rst +++ b/synthetics/test-config/global-variables.rst @@ -14,13 +14,13 @@ How can you use a global variable? =================================== Use global variables to store non-sensitive information for your browser and API tests. Splunk Synthetic Monitoring saves your global variables, but note that their values are visible to all users in your account. -To preserve your account's security, don't use global variables to store sensitive information such as login credentials, API keys, or credit card information. Instead, either use placeholder values or permanently conceal the global variables that contain sensitive information. +To preserve your account's security, don't use global variables to store sensitive information such as login credentials, API keys, or credit card information. .. _concealed-gv: What happens when you conceal a global variable? ================================================== -When you conceal a global variable, Splunk Synthetic Monitoring permanently hides its value from all users of your account. Concealed values are never revealed; they are scrubbed from the Splunk Synthetic Monitoring UI, from test results, and from alert messages. However, if you send a concealed value to a test endpoint, that endpoint receives its unconcealed value. +When you conceal a global variable, Splunk Synthetic Monitoring encrypts the variable's value in its database and scrubs its value from the Splunk Synthetic Monitoring UI, from test results, and from alert messages. However, concealed global variables are not designed to safeguard sensitive information or critical data. In addition, if you send a concealed value to a test endpoint, that endpoint receives its unconcealed value. Create a global variable From 9fb548b69051affd5efd46e15f840ec8a900786a Mon Sep 17 00:00:00 2001 From: ada Date: Tue, 17 Dec 2024 21:48:26 -0800 Subject: [PATCH 26/42] Updated wording based on reviewer feedback --- synthetics/test-config/devices.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/synthetics/test-config/devices.rst b/synthetics/test-config/devices.rst index b3d404e82..8883909e8 100644 --- a/synthetics/test-config/devices.rst +++ b/synthetics/test-config/devices.rst @@ -9,17 +9,16 @@ Devices When you set up a test in Splunk Synthetic Monitoring, you can configure the viewport and network connection of the device from which the test is simulated. -Because Browser tests capture the visual experience of a page, while Uptime and API tests only capture response data, viewport applies to Browser tests only. Network connection applies to all test types. +Because browser tests capture the visual experience of a page, while uptime and API tests only capture response data, viewport settings apply to browser tests only. Network connection settings apply to all test types. Viewport =================================== -Browser tests in Splunk Synthetic Monitoring capture the visual experience of a user interacting with your application. The viewport is the framed area on a device's screen for viewing information, such as the browser window on a desktop. By default, Browser tests run from a desktop-sized viewport. You can configure tests to run from other viewport sizes to test the user experience from a variety of window sizes and device types. - -When you set up a test, you can choose the viewport size from a list of common devices, or set a custom viewport by height and width. +Browser tests in Splunk Synthetic Monitoring capture the visual experience of a user interacting with your application. The viewport is the framed area on a device's screen for viewing information, such as the browser window on a desktop. By default, browser tests run from a desktop-sized viewport, but you can select a different viewport size from a list of common devices to test the user experience from a variety of window sizes and device types. + Network connection =================================== -You can run Browser, Uptime, or API tests to simulate network connections of various latencies, including Mobile LTE, Mobile 3G, DSL, Mobile 5G, and cable internet. Testing your site from a variety of connection types lets you monitor the experience of users in a variety of settings. +You can run browser, uptime, or API tests to simulate network connections of various latencies, including Mobile LTE, Mobile 3G, DSL, Mobile 5G, and cable internet. Testing your site from a variety of connection types lets you monitor the experience of users in a variety of settings. From b2bcb08ce6d0162ef6c68331e24a95b406ec38b0 Mon Sep 17 00:00:00 2001 From: ada Date: Tue, 17 Dec 2024 22:12:51 -0800 Subject: [PATCH 27/42] Fix screenshot sizing --- synthetics/test-config/synth-alerts.rst | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/synthetics/test-config/synth-alerts.rst b/synthetics/test-config/synth-alerts.rst index 7eec1d918..40099a04c 100644 --- a/synthetics/test-config/synth-alerts.rst +++ b/synthetics/test-config/synth-alerts.rst @@ -41,7 +41,7 @@ In Synthetics, there are detectors to alert on metrics at the test level, at the | Examples: Send an alert on the three transaction-level metrics that Splunk Synthetic Monitoring captures (duration, requests, and size). See :ref:`transaction-level-detector` to learn more. -Sample use case: Send an alert when a synthetic test fails +Best practices for sending an alert when a synthetic test fails =============================================================== You can set up a detector while initially creating or editing a test, or from the results view for a particular test. A detector can track one or more synthetic tests. @@ -69,10 +69,8 @@ In the detector dialog box, enter the following fields: #. Select :guilabel:`Activate`. .. image:: /_images/synthetics/detector-one.png - :width: 40% - :alt: Screenshot showing the troubleshooting tab for a tile in the dashboard with an option to open the data in RUM or APM. - - + :width: 100% + :alt: Setting up a detector for failed tests. Your detector is now set up to check for failed test runs every minute and to send an alert based on your settings in :guilabel:`Alert details`. From ff06e8330314aa3ddf7d09e29bf456f95cd363f9 Mon Sep 17 00:00:00 2001 From: ada Date: Tue, 17 Dec 2024 22:26:43 -0800 Subject: [PATCH 28/42] More updates to wording --- synthetics/test-config/devices.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synthetics/test-config/devices.rst b/synthetics/test-config/devices.rst index 8883909e8..5ebcabdf0 100644 --- a/synthetics/test-config/devices.rst +++ b/synthetics/test-config/devices.rst @@ -14,7 +14,7 @@ Because browser tests capture the visual experience of a page, while uptime and Viewport =================================== -Browser tests in Splunk Synthetic Monitoring capture the visual experience of a user interacting with your application. The viewport is the framed area on a device's screen for viewing information, such as the browser window on a desktop. By default, browser tests run from a desktop-sized viewport, but you can select a different viewport size from a list of common devices to test the user experience from a variety of window sizes and device types. +Browser tests capture the visual experience of a user interacting with your application. The viewport is the framed area on a device's screen for viewing information, such as the browser window on a desktop. By default, browser tests run from a desktop-sized viewport, but in the test creation view you can select a different device type to test the user experience from a different viewport size. Network connection From e80f60a333a1f5da623c8e6bbd65f9647f29046d Mon Sep 17 00:00:00 2001 From: trangl Date: Wed, 18 Dec 2024 13:43:19 +0100 Subject: [PATCH 29/42] Switch methods order --- data-visualization/charts/create-charts.rst | 50 +++++++++++---------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/data-visualization/charts/create-charts.rst b/data-visualization/charts/create-charts.rst index 42f154253..f52a18cc0 100644 --- a/data-visualization/charts/create-charts.rst +++ b/data-visualization/charts/create-charts.rst @@ -31,30 +31,31 @@ See the following table for different chart creation methods: * - :strong:`Method` - :strong:`Description` + * - Create a chart using the Chart Builder + - Use this method to create a complex chart with customizations during the creation process. To learn more, see :ref:`create-chart-with-chart-builder`. + * - Create a chart using the metrics sidebar + - Use this method to create a simple chart or add a new chart to an existing dashboard. This method is useful for users who are new to Splunk Observability Cloud and are not familiar with more complex chart customizations. To learn more, see :ref:`create-chart-metric-sidebar`. * - Create a chart using the Metric Finder - Use this method to browse metrics and decide which metric to track before creating a chart. To learn more, see :ref:`create-chart-metric-finder`. - * - Create a chart using the metrics sidebar - - Use this method to create a simple chart or add a new chart to an existing dashboard. To learn more, see :ref:`create-chart-metric-sidebar`. * - Copy a chart - Use this method to add a copy or move a chart to another dashboard. To learn more, see :ref:`copy-charts`. - * - Create a chart using the Chart Builder - - Use this method to create a more complex chart with customizations during the creation process. To learn more, see :ref:`create-chart-with-chart-builder`. * - Create a chart using the API - Use this method to programmatically create a chart instead of creating one through the user interface. To learn more, see :ref:`create-chart-via-api`. -.. _create-chart-metric-finder: +.. _create-chart-with-chart-builder: -Create a chart using the Metric Finder ------------------------------------------------- +Create a new chart using the Chart Builder +------------------------------------------ -If you're not sure which metric you want to track, use the Metric Finder to browse different options before creating a new chart. +Follow these steps to create a chart in the Chart Builder: -#. From the navigation menu, select :strong:`Metric Finder`. -#. Search for metrics by entering key words into the search bar, or selecting an integration name. -#. Once you find the metric you're interested in, select the metric name to open the Chart Builder, pre-populated with your metric. +#. In the :strong:`Create` menu on the top navigation bar, select :strong:`Chart`. Alternatively, select :guilabel:`New chart` on custom dashboards. +#. Search for metrics or events you want to plot on your chart. For more information, see :ref:`chart-builder`. + + .. note:: You can add functions to your chart with the :strong:`F(x)` column. See :ref:`plot-analytics` and :ref:`analytics-ref` for more details. -To learn more about using the Metric Finder, see :ref:`metric-finder`. +#. Customize your chart. See :ref:`chart-options-tab`. .. _create-chart-metric-sidebar: @@ -111,6 +112,19 @@ Create charts with events #. Select the check box next to each item you want to add. #. Select :strong:`Multiple charts`. +.. _create-chart-metric-finder: + +Create a chart using the Metric Finder +------------------------------------------------ + +If you're not sure which metric you want to track, use the Metric Finder to browse different options before creating a new chart. + +#. From the navigation menu, select :strong:`Metric Finder`. +#. Search for metrics by entering key words into the search bar, or selecting an integration name. +#. Once you find the metric you're interested in, select the metric name to open the Chart Builder, pre-populated with your metric. + +To learn more about using the Metric Finder, see :ref:`metric-finder`. + .. _copy-charts: Copy a chart @@ -149,18 +163,6 @@ Once you copy charts to the clipboard, several options from the :strong:`Create` * - Clear clipboard - Select this option to clear the clipboard content without pasting charts to a dashboard. -.. _create-chart-with-chart-builder: - -Create a new chart using the Chart Builder ------------------------------------------- - -#. In the :strong:`Create` menu on the top navigation bar, select :strong:`Chart`. Alternatively, select :guilabel:`New chart` on custom dashboards. -#. Search for metrics or events you want to plot on your chart. For more information, see :ref:`chart-builder`. - - .. note:: You can add functions to your chart with the :strong:`F(x)` column. See :ref:`plot-analytics` and :ref:`analytics-ref` for more details. - -#. Customize your chart. See :ref:`chart-options-tab`. - .. _create-chart-via-api: Create a chart using Splunk Observability Cloud API From 16074f0557b7cce8b48593f067ce7ea7377da4d7 Mon Sep 17 00:00:00 2001 From: Bri Hillmer Date: Wed, 18 Dec 2024 09:45:30 -0700 Subject: [PATCH 30/42] update refs --- get-started/get-started-guide/get-started-guide.rst | 2 +- get-started/get-started-guide/initial-rollout.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/get-started/get-started-guide/get-started-guide.rst b/get-started/get-started-guide/get-started-guide.rst index 0272e2cf7..168f6eb30 100644 --- a/get-started/get-started-guide/get-started-guide.rst +++ b/get-started/get-started-guide/get-started-guide.rst @@ -79,7 +79,7 @@ The journey for getting started with Splunk Observability Cloud has 3 phases: on See :ref:`Phase 1 optional and advanced configurations `. - * :ref:`advanced-config-3rd-party` - * :ref:`phase3-network-exp` + * :ref:`phase2-network-exp` * :ref:`phase2-profiling` * :ref:`phase2-related-content` diff --git a/get-started/get-started-guide/initial-rollout.rst b/get-started/get-started-guide/initial-rollout.rst index 9ae599014..1a0bab43a 100644 --- a/get-started/get-started-guide/initial-rollout.rst +++ b/get-started/get-started-guide/initial-rollout.rst @@ -105,7 +105,7 @@ When using the Splunk Distribution of OpenTelemetry Collector, you can use recei See :ref:`monitor-data-sources` for a list of receivers. -.. _phase3-network-exp: +.. _phase2-network-exp: Set up Network Explorer to monitor network environment ---------------------------------------------------------- From c6a12443175eb8853d73674659bbd3a99228db29 Mon Sep 17 00:00:00 2001 From: Max Bechtold Date: Wed, 18 Dec 2024 14:58:08 -0600 Subject: [PATCH 31/42] initial commit --- metrics-and-metadata/metric-categories.rst | 84 +++++++++++++++++++++- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/metrics-and-metadata/metric-categories.rst b/metrics-and-metadata/metric-categories.rst index f7c58c32f..78210c9e1 100644 --- a/metrics-and-metadata/metric-categories.rst +++ b/metrics-and-metadata/metric-categories.rst @@ -8,9 +8,10 @@ Metric categories .. meta:: :description: Learn about metric categories in Splunk Observability Cloud. -These are the available categories for metrics in Splunk Observability Cloud: - +Metric categories for realms us0 and us1 +=========================================== +The following metric categories are used in the realms ``us0`` and ``us1``: .. raw:: html @@ -22,6 +23,85 @@ These are the available categories for metrics in Splunk Observability Cloud:
+Metric categories for other realms +=========================================== + +The following metric categories are used for any realms that aren't ``us0`` or ``us1``: + +.. list-table:: + :header-rows: 1 + :widths: 20 80 + :width: 100% + + * - :strong:`Category type` + - :strong:`Description` + + * - 0 + - | No information about the category type of the metric. + | Note: Category type information for metrics is only available after 03/16/2023. Any metrics created before that date has category type ``0``. + + * - 1 + - Host + + * - 2 + - Container + + * - 3 + - | Custom + | Metrics reported to Splunk Observability Cloud outside of those reported by default, such as host, container, or bundled metrics. Custom metrics might result in increased data ingest costs. + * - 4 + - Hi-resolution + + * - 5 + - Internal + + * - 6 + - Tracing metrics + + * - 7 + - | Bundled + | In host-based subscription plans, additional metrics sent through Infrastructure Monitoring public cloud integrations that are not attributed to specific hosts or containers. + * - 8 + - APM hosts + + * - 9 + - APM container + + * - 10 + - APM identity + + * - 11 + - APM bundled metrics + + * - 12 + - | APM Troubleshooting MetricSets + | This category is not part of the report. + * - 13 + - APM Monitoring MetricSets + + * - 14 + - Infrastructure Monitoring function + + * - 15 + - APM function + + * - 16 + - | RUM Troubleshooting MetricSets + | This category is not part of the report. + * - 17 + - RUM Monitoring MetricSets + + * - 18 + - Network Explorer metrics + + * - 19 + - Runtime metrics + + * - 20 + - Synthetics metrics + +.. note:: In subscription plans based on metric time series (MTS), all metrics are categorized as custom metrics and billed accordingly. + From 476e3d0cb7a234da1e294a2285c3bd4de07efb8f Mon Sep 17 00:00:00 2001 From: Tracey Carter Date: Wed, 18 Dec 2024 13:57:00 -0800 Subject: [PATCH 32/42] added statement on SCP logs security --- splunkplatform/unified-id/unified-identity.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/splunkplatform/unified-id/unified-identity.rst b/splunkplatform/unified-id/unified-identity.rst index 1d6eef51c..ac983e9e8 100644 --- a/splunkplatform/unified-id/unified-identity.rst +++ b/splunkplatform/unified-id/unified-identity.rst @@ -277,6 +277,8 @@ Point-and-click log analysis One important advantage of the integration is that users can now query their Splunk Cloud Platform logs in Log Observer's no-code UI. Users can create advanced queries without knowing SPL with Log Observer's filters and aggregations. See :ref:`logs-queries` for more information. +When you use Log Observer Connect, your logs remain in your Splunk Cloud Platform instance and are accessible only to Log Observer Connect. Log Observer Connect does not store or index your logs data. + Related Content ------------------------------------------------------------------------------------------ From 29bdb1e3f04202e1974d9de81bf8cada5a915879 Mon Sep 17 00:00:00 2001 From: ada Date: Wed, 18 Dec 2024 15:09:26 -0800 Subject: [PATCH 33/42] Update info on predefined devices --- synthetics/test-config/devices.rst | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/synthetics/test-config/devices.rst b/synthetics/test-config/devices.rst index 5ebcabdf0..31b0a0b1a 100644 --- a/synthetics/test-config/devices.rst +++ b/synthetics/test-config/devices.rst @@ -5,20 +5,22 @@ Devices ***************************************** .. meta:: - :description: When you set up a test in Splunk Synthetic Monitoring, you can configure the viewport and network connection of the device from which the test is simulated. + :description: Select a predefined device to simulate a specific viewport size and network connection for a test. -When you set up a test in Splunk Synthetic Monitoring, you can configure the viewport and network connection of the device from which the test is simulated. +When you set up a test in Splunk Synthetic Monitoring, you can select a predefined device to simulate a specific viewport size and network connection for that test. Every predefined device is a combination of a specific viewport size and network connection. -Because browser tests capture the visual experience of a page, while uptime and API tests only capture response data, viewport settings apply to browser tests only. Network connection settings apply to all test types. +* A viewport is the framed area on a device's screen for viewing information, such as the browser window on a desktop. Since a viewport is an integral part of the visual experience of a user interacting with your application or site, viewport settings only apply to visual tests (browser tests). Viewport settings don't apply to API or uptime tests, because these tests are non-visual -- they only capture response data from your application or site. +* A network connection is the network type, speed, bandwidth, and latency experienced by a device. Since a network connection is an integral part of all experiences, network connection settings apply to all test types. Testing your site or application from a variety of network connections helps you to monitor the experience of users in a variety of environments. -Viewport -=================================== -Browser tests capture the visual experience of a user interacting with your application. The viewport is the framed area on a device's screen for viewing information, such as the browser window on a desktop. By default, browser tests run from a desktop-sized viewport, but in the test creation view you can select a different device type to test the user experience from a different viewport size. - +Select a device type for Splunk Synthetic Monitoring tests +========================================================== -Network connection -=================================== -You can run browser, uptime, or API tests to simulate network connections of various latencies, including Mobile LTE, Mobile 3G, DSL, Mobile 5G, and cable internet. Testing your site from a variety of connection types lets you monitor the experience of users in a variety of settings. +All tests have the device type :guilabel:`Default Desktop` by default. To change this for any test, follow these steps: +#. From the landing page of Splunk Observability Cloud, navigate to Splunk Synthetic Monitoring. +#. Select the test that you want to change. +#. Select :guilabel:`Edit test`. The test creation view opens. +#. In the :guilabel:`Device` field, select one of the predefined devices. +#. Select :guilabel:`Save`. From 347795baea546c6f4a45fb927135adb55e892b2b Mon Sep 17 00:00:00 2001 From: ada Date: Thu, 19 Dec 2024 10:19:31 -0800 Subject: [PATCH 34/42] Exact wording from security team --- synthetics/test-config/global-variables.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synthetics/test-config/global-variables.rst b/synthetics/test-config/global-variables.rst index f97b18115..3e4b6acb1 100644 --- a/synthetics/test-config/global-variables.rst +++ b/synthetics/test-config/global-variables.rst @@ -20,7 +20,7 @@ To preserve your account's security, don't use global variables to store sensiti What happens when you conceal a global variable? ================================================== -When you conceal a global variable, Splunk Synthetic Monitoring encrypts the variable's value in its database and scrubs its value from the Splunk Synthetic Monitoring UI, from test results, and from alert messages. However, concealed global variables are not designed to safeguard sensitive information or critical data. In addition, if you send a concealed value to a test endpoint, that endpoint receives its unconcealed value. +When you conceal a global variable, Splunk Synthetic Monitoring encrypts the variable's value in its database and scrubs its value from the Splunk Synthetic Monitoring UI, from test results, and from alert messages. However, concealed global variables were not designed to safeguard sensitive information or critical data; do not misuse them for such purposes. Create a global variable From 5c306addbeb5a0bc674bbeea422f70098a3c7433 Mon Sep 17 00:00:00 2001 From: trangl Date: Thu, 19 Dec 2024 20:08:44 +0100 Subject: [PATCH 35/42] Remove API example for chart types topic --- data-visualization/charts/chart-types.rst | 80 +---------------------- 1 file changed, 2 insertions(+), 78 deletions(-) diff --git a/data-visualization/charts/chart-types.rst b/data-visualization/charts/chart-types.rst index 02bf0a43f..15a865450 100644 --- a/data-visualization/charts/chart-types.rst +++ b/data-visualization/charts/chart-types.rst @@ -98,86 +98,10 @@ A list chart can display up to 100 items at a time. .. image:: /_images/data-visualization/charts/list-chart.png :alt: This screenshot shows a list chart illustrating the number of active hosts per AWS EC2 instance type. -Sorting list charts +Sort list charts ------------------- -The API lets you sort values in list charts by specifying the ``options.sortBy`` property in the request to create or update a chart. -You can sort on one of the dimensions in the MTS for the chart, a data point, the metric name, or the ``publish()`` method ``label`` argument of the SignalFlow statement that generates the data. To choose one of these options, specify one of the keyword values shown in the following table: - -.. list-table:: - :header-rows: 1 - :widths: 10 40 50 - - * - :strong:`Keyword` - - :strong:`Alias in the user interface` - - :strong:`Description` - - * - ```` - - Dimension name - - One of the dimensions of the displayed MTS. To see the available dimensions, follow the instructions following this table. - - * - ``sf_metric`` - - Plot name - - The ``label`` argument of the SignalFlow ``publish()`` that provides the displayed data. This is also the plot name of the corresponding signal in the user interface. - - * - ``sf_originatingMetric`` - - Metric - - Name of the metric for the displayed MTS. - - * - ``value`` - - Value - - Value of the data point when Splunk Observability Cloud receives it. - -In addition, you can sort by any dimension of an MTS displayed in the chart. - -To see a list of entities on which you can sort: - -#. In the user interface, open the chart. -#. Select the :strong:`Chart options` tab. -#. Open the :strong:`Sort` dropdown list. In the list, :strong:`Value` is the alias for ``value``, :strong:`Plot name` is the alias for ``sf_metric``, and :strong:`Metric` is the alias for ``sf_originatingMetric``. All other list items are dimension names. - - - -Examples -++++++++++ - -To sort a list chart by value, specify the following in the request body: - -.. code-block:: - - { - options: { - "sortBy": "value", - ... - } - } - - -To sort by plot name, specify the following: - -.. code-block:: - - { - options: { - "sortBy": "sf_metric", - ... - } - } - -To sort by the dimension ``demo_datacenter``, specify the following: - -.. code-block:: - - { - options: { - "sortBy": "demo_datacenter", - ... - } - } - - -.. note:: - Splunk Observability Cloud doesn't guarantee the sort order of identical values in the input stream. +You can sort a list chart using the API. For more information, see the :new-ref:`Sort a list chart ` section in the `Splunk Observability Cloud Developer Guide`. List chart prefix and suffix ---------------------------- From af84554b29bea8c7b2a4409fcb7545a4def6e6d8 Mon Sep 17 00:00:00 2001 From: trangl Date: Thu, 19 Dec 2024 20:11:33 +0100 Subject: [PATCH 36/42] Update wrong label --- data-visualization/charts/chart-types.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-visualization/charts/chart-types.rst b/data-visualization/charts/chart-types.rst index 15a865450..f6ce86aff 100644 --- a/data-visualization/charts/chart-types.rst +++ b/data-visualization/charts/chart-types.rst @@ -101,7 +101,7 @@ A list chart can display up to 100 items at a time. Sort list charts ------------------- -You can sort a list chart using the API. For more information, see the :new-ref:`Sort a list chart ` section in the `Splunk Observability Cloud Developer Guide`. +You can sort a list chart using the API. For more information, see the :new-page:`Sort a list chart ` section in the `Splunk Observability Cloud Developer Guide`. List chart prefix and suffix ---------------------------- From 61f547c335dd1b26c272f643b568cddb748269d1 Mon Sep 17 00:00:00 2001 From: ada Date: Thu, 19 Dec 2024 11:23:44 -0800 Subject: [PATCH 37/42] Remove wording per security team --- synthetics/test-config/global-variables.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/synthetics/test-config/global-variables.rst b/synthetics/test-config/global-variables.rst index 3e4b6acb1..aa96b9610 100644 --- a/synthetics/test-config/global-variables.rst +++ b/synthetics/test-config/global-variables.rst @@ -27,22 +27,22 @@ Create a global variable =============================== There are two ways to create a global variable: -#. Add a new global variable in the vault: +* Add a new global variable in the vault: - a. From the Splunk Synthetic Monitoring landing page, select :guilabel:`Synthetics configuration`. The :guilabel:`Synthetics configuration` page opens, on the :guilabel:`Global variables` tab. - b. Select :guilabel:`+ Add` to open the creation dialog box. + #. From the Splunk Synthetic Monitoring landing page, select :guilabel:`Synthetics configuration`. The :guilabel:`Synthetics configuration` page opens, on the :guilabel:`Global variables` tab. + #. Select :guilabel:`+ Add` to open the creation dialog box. -#. Add a new global variable while editing a test: +* Add a new global variable while editing a test: - a. In the right-hand :guilabel:`Variables` column, scroll to :guilabel:`Global variables` and select :guilabel:`Add`. + In the right-hand :guilabel:`Variables` column, scroll to :guilabel:`Global variables` and select :guilabel:`Add`. -Once you're in the :guilabel:`Add global variable` dialog box, enter the following: +When you're in the :guilabel:`Add global variable` dialog box, enter the following: #. In the :guilabel:`env` field, enter the name of the variable. You will use this key to access your variable within a test. #. In the :guilabel:`value` field, enter the value that will replace the variable when the test is run. #. (Optional) In the :guilabel:`Description` field, enter a description to explain the purpose of the variable for future reference. A description is particularly helpful when you conceal the variable and cannot reveal its value. -#. (Optional) Select :guilabel:`Conceal value` to permanently conceal the value to all users. -#. Once you're satisfied with your global variable, select :guilabel:`Add`. +#. (Optional) Select :guilabel:`Conceal value`. +#. Select :guilabel:`Add`. Edit a global variable From e0aa73c48abd8dfcf399ba72b379c9d8de2a9c6f Mon Sep 17 00:00:00 2001 From: jcatera Date: Fri, 20 Dec 2024 10:38:27 -0800 Subject: [PATCH 38/42] Fixed broken sublists in the rST and confirmed that they render correctly locally. --- .../on-call-schedules/schedule-examples.rst | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/sp-oncall/on-call-schedules/schedule-examples.rst b/sp-oncall/on-call-schedules/schedule-examples.rst index 17ee6c369..1bcbb22f6 100644 --- a/sp-oncall/on-call-schedules/schedule-examples.rst +++ b/sp-oncall/on-call-schedules/schedule-examples.rst @@ -32,11 +32,11 @@ Configure the Business Hours rotation #. Navigate to the team you'd like to implement this schedule for and add all of the appropriate users using the :guilabel:`Invite User` button. #. Navigate to the :menuselection:`Rotations` tab and select :guilabel:`Add Rotation`. -#. Name the rotation "Business Hours" and select "Partial Day" for the shift type +#. Name the rotation "Business Hours" and select "Partial Day" for the shift type. #. Name the first shift either after the user who will be occupying it or just call it "Shift 1" and set the hours. #. Select :guilabel:`Save Shift`. - .. note:: Ignore the "Handoff happens every X week" and "The next handoff happens X" fields because this shift is being created with the intent to not handoff. + .. note:: Ignore the "Handoff happens every X week" and "The next handoff happens X" fields because this shift is being created with the intent to not handoff. #. Next, add the appropriate user to this shift by selecting :guilabel:`Manage Members` and then :guilabel:`Select a User to add`. #. After adding the appropriate user, select :guilabel:`Add Another Shift`. @@ -49,12 +49,14 @@ Configure the Nights and Weekends rotation #. Create the "Nights and Weekends' rotation by selecting :guilabel:`Add a Rotation`. #. Name the rotation "Nights and Weekends" and select :guilabel:`Partial Day` for the first shift type. #. Name the first shift "Weeknights". - #. In the section with Monday through Friday in blue lettering, deselect Friday. Also, change the hours to cover all week-hours that are not covered by the Business Hours rotation. For example, if your business hours are 8 AM to 5 PM, your Weeknights shift should be 5 PM to 8 AM. If your Business Hours are 9 AM to 4 PM, your Weeknights - shift should be 4 PM to 9 AM. + + #. In the section with Monday through Friday in blue lettering, deselect Friday. Also, change the hours to cover all week-hours that are not covered by the Business Hours rotation. For example, if your business hours are 8 AM to 5 PM, your Weeknights shift should be 5 PM to 8 AM. If your Business Hours are 9 AM to 4 PM, your Weeknights shift should be 4 PM to 9 AM. #. Change the :guilabel:`The next handoff happens` date to the next upcoming Monday. #. Select :guilabel:`Save Shift`. #. To add users to this shift, select :guilabel:`Manage Members` then :guilabel:`Select a User to add`. The order that you add the users in will dictate the week they end up on-duty. The first user you add will do the current week, the next user the week after, the third user the third week. You can re-order them after adding by dragging them on the :menuselection:`Members` page. + #. After adding the appropriate users, select :guilabel:`Add another Shift` and select :guilabel:`Multi-day` for the type. + #. Name this shift “Weekends” and adjust the hours to those desired. #. Select :guilabel:`Save Shift`. #. To add users to this shift, select :guilabel:`Manage Members` then :guilabel:`Select a User to add`. The order that you add the users in will dictate the week they end up on-duty. You can re-order these users after adding by dragging them around within this menu. @@ -123,20 +125,19 @@ Navigate to the team you'd like to implement this schedule for and add all of th #. Navigate to the :menuselection:`Rotations` tab and select :guilabel:`Add Rotation`. #. Name the rotation "Business Hours" and select "Partial Day" for the shift type. - #. Name the first shift either after the user who will be occupying it or just call it "Shift 1" and set the hours. - #. Set the shift hours. - #. Select :guilabel:`Save Shift`. + #. Name the first shift either after the user who will be occupying it or just call it "Shift 1" and set the hours. + #. Set the shift hours. + #. Select :guilabel:`Save Shift`. - .. note:: Ignore the "Handoff happens every X week" and "The next handoff happens X" fields because this shift is being created with the intent to not handoff. + .. note:: Ignore the "Handoff happens every X week" and "The next handoff happens X" fields because this shift is being created with the intent to not handoff. - #. Next, add the appropriate user to this shift by selecting :guilabel:`Manage Members` and then :guilabel:`Select a User to add`. - #. After adding the appropriate user, select :guilabel:`Add Another Shift`. + #. Next, add the appropriate user to this shift by selecting :guilabel:`Manage Members` and then :guilabel:`Select a User to add`. + #. After adding the appropriate user, select :guilabel:`Add Another Shift`. #. Select :guilabel:`Partial Day` and repeat the process from the previous steps. You will end up creating one shift for each user you would like on-call simultaneously during the business day. #. When finished, select :guilabel:`I'm Done, Save this Rotation`. - Configure the Escalation Policies ------------------------------------------ @@ -157,4 +158,4 @@ The next part of this configuration will involve assigning a routing key to the #. Select :guilabel:`Add Key` and name the routing key "bus-hours-only". #. In the dropdown menu, select the :guilabel:`Busines Hours Only` escalation policy, located under the team you created it for. #. Select the blue checkbox to save your changes. -#. Once you've created this routing key, go into your monitoring tools and assign this routing key to the alerts you only want to page during business hours. Optionally, follow the rules engine steps. You should be able to locate instructions on where to edit the routing key in your specific monitoring tool by finding that tool's integration guide. If you have any questions, contact victorops-support@splunk.com. \ No newline at end of file +#. Once you've created this routing key, go into your monitoring tools and assign this routing key to the alerts you only want to page during business hours. Optionally, follow the rules engine steps. You should be able to locate instructions on where to edit the routing key in your specific monitoring tool by finding that tool's integration guide. If you have any questions, contact victorops-support@splunk.com. From 686ceacdeb547c3ee0aa4ccb39f315fe1f2783ef Mon Sep 17 00:00:00 2001 From: jcatera Date: Fri, 20 Dec 2024 10:49:15 -0800 Subject: [PATCH 39/42] Fixed more syntax issues. --- .../on-call-schedules/schedule-examples.rst | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/sp-oncall/on-call-schedules/schedule-examples.rst b/sp-oncall/on-call-schedules/schedule-examples.rst index 1bcbb22f6..303c32e74 100644 --- a/sp-oncall/on-call-schedules/schedule-examples.rst +++ b/sp-oncall/on-call-schedules/schedule-examples.rst @@ -35,11 +35,10 @@ Configure the Business Hours rotation #. Name the rotation "Business Hours" and select "Partial Day" for the shift type. #. Name the first shift either after the user who will be occupying it or just call it "Shift 1" and set the hours. #. Select :guilabel:`Save Shift`. - .. note:: Ignore the "Handoff happens every X week" and "The next handoff happens X" fields because this shift is being created with the intent to not handoff. - #. Next, add the appropriate user to this shift by selecting :guilabel:`Manage Members` and then :guilabel:`Select a User to add`. #. After adding the appropriate user, select :guilabel:`Add Another Shift`. + #. Select :guilabel:`Partial Day` and repeat the process from the previous steps. You will end up creating one shift for each user you would like on-call simultaneously during the business day. #. When finished, select :guilabel:`I'm Done, Save this Rotation`. @@ -71,7 +70,7 @@ The next part of the configuration process will involve creating a Secondary rot #. Name the rotation “Secondary” and select :guilabel:`24/7` for the shift type. #. Name the shift “Secondary Shift” and change the handoff time to the appropriate one. This is typically when business hours begin for your organization. #. Change the :guilabel:`The next handoff happens` date to the next upcoming Monday. -#. Select :guilabel:`Save Shift`/ +#. Select :guilabel:`Save Shift`. #. To add users to the shift :guilabel:`Manage Members` then :guilabel:`Select a User to add`.The order that you add the users in will dictate the week they end up on-duty. The first user you add will do the current week, the next user the week after, the third user the third week. You can re-order these users after adding by dragging them around within this menu. #. When finished, select :guilabel:`I'm Done, Save this Rotation`. @@ -121,18 +120,18 @@ Main points: Configure the Business Hours rotation -------------------------------------------- -Navigate to the team you'd like to implement this schedule for and add all of the appropriate users using the :guilabel:`Invite User` button. +#. Navigate to the team you'd like to implement this schedule for and add all of the appropriate users using the :guilabel:`Invite User` button. #. Navigate to the :menuselection:`Rotations` tab and select :guilabel:`Add Rotation`. #. Name the rotation "Business Hours" and select "Partial Day" for the shift type. - #. Name the first shift either after the user who will be occupying it or just call it "Shift 1" and set the hours. - #. Set the shift hours. - #. Select :guilabel:`Save Shift`. + #. Name the first shift either after the user who will be occupying it or just call it "Shift 1" and set the hours. + #. Set the shift hours. + #. Select :guilabel:`Save Shift`. - .. note:: Ignore the "Handoff happens every X week" and "The next handoff happens X" fields because this shift is being created with the intent to not handoff. + .. note:: Ignore the "Handoff happens every X week" and "The next handoff happens X" fields because this shift is being created with the intent to not handoff. - #. Next, add the appropriate user to this shift by selecting :guilabel:`Manage Members` and then :guilabel:`Select a User to add`. - #. After adding the appropriate user, select :guilabel:`Add Another Shift`. + #. Next, add the appropriate user to this shift by selecting :guilabel:`Manage Members` and then :guilabel:`Select a User to add`. + #. After adding the appropriate user, select :guilabel:`Add Another Shift`. #. Select :guilabel:`Partial Day` and repeat the process from the previous steps. You will end up creating one shift for each user you would like on-call simultaneously during the business day. #. When finished, select :guilabel:`I'm Done, Save this Rotation`. From 927564ec68ef69f36d6e0dbf09cb7e84f49b8374 Mon Sep 17 00:00:00 2001 From: adasplunk Date: Fri, 20 Dec 2024 13:28:45 -0800 Subject: [PATCH 40/42] Update synthetics/test-config/synth-alerts.rst Co-authored-by: jcatera-splunk --- synthetics/test-config/synth-alerts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synthetics/test-config/synth-alerts.rst b/synthetics/test-config/synth-alerts.rst index 40099a04c..235e5fc9e 100644 --- a/synthetics/test-config/synth-alerts.rst +++ b/synthetics/test-config/synth-alerts.rst @@ -48,7 +48,7 @@ You can set up a detector while initially creating or editing a test, or from th To set up a detector, do one of the following: -* While creating or editing a test, select :guilabel:`Create detector`. The detector dialog box opens. +* When creating or editing a test, select :guilabel:`Create detector` to open the detector dialog box. * From the :guilabel:`Test results` page for a particular test, select :guilabel:`Create detector`. The detector dialog box opens. In the detector dialog box, enter the following fields: From 5b32bb24d5fc1a1b8d6f1ed7eca3a3f586a18cb2 Mon Sep 17 00:00:00 2001 From: adasplunk Date: Fri, 20 Dec 2024 13:28:58 -0800 Subject: [PATCH 41/42] Update synthetics/test-config/synth-alerts.rst Co-authored-by: jcatera-splunk --- synthetics/test-config/synth-alerts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synthetics/test-config/synth-alerts.rst b/synthetics/test-config/synth-alerts.rst index 235e5fc9e..de4434f1b 100644 --- a/synthetics/test-config/synth-alerts.rst +++ b/synthetics/test-config/synth-alerts.rst @@ -49,7 +49,7 @@ You can set up a detector while initially creating or editing a test, or from th To set up a detector, do one of the following: * When creating or editing a test, select :guilabel:`Create detector` to open the detector dialog box. -* From the :guilabel:`Test results` page for a particular test, select :guilabel:`Create detector`. The detector dialog box opens. +* From the :guilabel:`Test results` page for a particular test, select :guilabel:`Create detector` to open the detector dialog box. In the detector dialog box, enter the following fields: From 4f8499fc8a7981d2df98fff50d713407646ec848 Mon Sep 17 00:00:00 2001 From: Paul Williams Date: Mon, 23 Dec 2024 09:44:52 -0800 Subject: [PATCH 42/42] Add raw HTML around one include --- gdi/opentelemetry/components/apache-spark-receiver.rst | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gdi/opentelemetry/components/apache-spark-receiver.rst b/gdi/opentelemetry/components/apache-spark-receiver.rst index 3f43c20f7..14e78b1d4 100644 --- a/gdi/opentelemetry/components/apache-spark-receiver.rst +++ b/gdi/opentelemetry/components/apache-spark-receiver.rst @@ -67,7 +67,15 @@ The following settings are optional: * Valid time units are ``ns``, ``us`` (or ``µs``), ``ms``, ``s``, ``m``, ``h``. -* .. include:: /_includes/gdi/collector-settings-initialdelay.rst +* .. raw:: html + +
+ + .. include:: /_includes/gdi/collector-settings-initialdelay.rst + + .. raw:: html + +
* ``endpoint``. ``http://localhost:4040`` by default. Apache Spark endpoint to connect to in the form of ``[http][://]{host}[:{port}]``.