From 537db2de7131ff7bb1a882fea5b75a0986b85577 Mon Sep 17 00:00:00 2001 From: Maxim Svistunov Date: Fri, 30 Aug 2019 15:28:37 +0200 Subject: [PATCH 1/6] Add the "Examining cluster metrics" section Several fixes and improvements Add a note on running demanding queries --- _topic_map.yml | 2 + images/metrics-screen.png | Bin 0 -> 82442 bytes ...monitoring-contents-of-the-metrics-ui.adoc | 35 ++++++++++++++++++ ...ring-exploring-the-visualized-metrics.adoc | 26 +++++++++++++ .../monitoring-running-metrics-queries.adoc | 30 +++++++++++++++ .../examining-cluster-metrics.adoc | 17 +++++++++ .../managing-cluster-alerts.adoc | 2 +- 7 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 images/metrics-screen.png create mode 100644 modules/monitoring-contents-of-the-metrics-ui.adoc create mode 100644 modules/monitoring-exploring-the-visualized-metrics.adoc create mode 100644 modules/monitoring-running-metrics-queries.adoc create mode 100644 monitoring/cluster-monitoring/examining-cluster-metrics.adoc diff --git a/_topic_map.yml b/_topic_map.yml index eb5d704c3dc8..5289e5bb50d2 100644 --- a/_topic_map.yml +++ b/_topic_map.yml @@ -786,6 +786,8 @@ Topics: File: configuring-the-monitoring-stack - Name: Managing cluster alerts File: managing-cluster-alerts + - Name: Examining cluster metrics + File: examining-cluster-metrics - Name: Accessing Prometheus, Alertmanager, and Grafana File: prometheus-alertmanager-and-grafana - Name: Exposing custom application metrics for autoscaling diff --git a/images/metrics-screen.png b/images/metrics-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..4058f7f196dd18084122f424eea18dbc04402e12 GIT binary patch literal 82442 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 *Metrics* of the {product-title} web console. + +image::../images/metrics-screen.png[] + +. Actions. +* Add query. +* Expand all query tables. +* Delete all queries. +. Hide the plot. +. The interactive plot. +. The catalog of available metrics. +. Add query. +. Run queries. +. Query forms. +. Expand or collapse the form. +. The query. +. Clear query. +. Disable query. +. Actions for a specific query. +* Disable query. +* Hide all series of the query from the plot. +* Delete query. +. The metrics table for a query. +. Color assigned to the graph of the metric. Clicking the square shows or hides the metric's graph. + +Additionally, there is a link to the old Prometheus interface next to the title of the page. diff --git a/modules/monitoring-exploring-the-visualized-metrics.adoc b/modules/monitoring-exploring-the-visualized-metrics.adoc new file mode 100644 index 000000000000..4bc6966ecbe7 --- /dev/null +++ b/modules/monitoring-exploring-the-visualized-metrics.adoc @@ -0,0 +1,26 @@ +// Module included in the following assemblies: +// +// * monitoring/cluster-monitoring/examining-cluster-metrics.adoc + +[id="exploring-the-visualized-metrics_{context}"] += Exploring the visualized metrics + +After running the queries, the metrics are displayed on the interactive plot. The X axis of the plot represents time. The Y axis represents the metrics values. Each metric is shown as a colored graph. You can manipulate the plot and explore the metrics. + +.Procedure + +. Initially, all metrics from all enabled queries are shown on the plot. You can select which metrics are shown. +* To hide all metrics from a query, click the action button of the query and click "Hide all series". +* To hide a specific metric, go to the query table and click the colored square near the metric name. +. To zoom into the plot and change the shown time range, do one of the following: ++ +-- +* Visually select the time range by clicking and dragging on the plot horizontally. +* Use the menu in the left upper corner to select the time range. +-- ++ +To reset the time range, click "Reset Zoom". +. To see outputs of all queries at a specific point in time, hold the mouse cursor on the plot at that point. Query outputs will appear in a popup box. +. For more detailed information about metrics of a specific query, expand the table of that query. Every metric is shown with its current value. +. To hide the plot, use the "Hide Graph" button. + diff --git a/modules/monitoring-running-metrics-queries.adoc b/modules/monitoring-running-metrics-queries.adoc new file mode 100644 index 000000000000..f912c6740dd5 --- /dev/null +++ b/modules/monitoring-running-metrics-queries.adoc @@ -0,0 +1,30 @@ +// Module included in the following assemblies: +// +// * monitoring/cluster-monitoring/examining-cluster-metrics.adoc + +[id="running-metrics-queries_{context}"] += Running metrics queries + +You begin working with metrics by entering one or several Prometheus Query Language (PromQL) queries. + +.Procedure + +. Open the OpenShift Container Platform web console and navigate to *Monitoring* -> *Metrics*. + +. In the query field, enter your PromQL query. +* To show all available metrics and PromQL functions, use the "Insert Metric at Cursor" button. +. For multiple queries, use the "Add Query" button. +. For deleting queries, click the action button for the query and select "Delete query". +. For keeping but not running a query, click the "Disable query" button. +. Once you finish creating queries, click the "Run Queries" button. The metrics from the queries are visualized on the plot. If a query is invalid, the UI shows an error message. ++ +[NOTE] +==== +Queries that operate on large amounts of data might timeout or overload the browser when drawing timeseries graphs. To avoid this, you might prefer to hide the graph and calibrate your query using only the metrics table. Then, after finding a feasible query, enable the plot to draw the graphs. +==== ++ +. Optional: The page URL now contains the queries you ran. To use this set of queries again in the future, save this URL. + +.Additional resources + +See the link:https://prometheus.io/docs/prometheus/latest/querying/basics/[Prometheus Query Language documentation]. diff --git a/monitoring/cluster-monitoring/examining-cluster-metrics.adoc b/monitoring/cluster-monitoring/examining-cluster-metrics.adoc new file mode 100644 index 000000000000..c40ee23f5cb3 --- /dev/null +++ b/monitoring/cluster-monitoring/examining-cluster-metrics.adoc @@ -0,0 +1,17 @@ +[id="examining-cluster-metrics"] += Examining cluster metrics +include::modules/common-attributes.adoc[] +:context: querying-metrics + +toc::[] + +{product-title} 4 provides a Web interface to Prometheus, which enables you to run Prometheus Query Language (PromQL) queries and examine the metrics visualized on a plot. This provides an extensive overview of the cluster state and enables you to troubleshoot problems. + +include::modules/monitoring-contents-of-the-metrics-ui.adoc[leveloffset=+1] +include::modules/monitoring-running-metrics-queries.adoc[leveloffset=+1] +include::modules/monitoring-exploring-the-visualized-metrics.adoc[leveloffset=+1] + +.Next steps + +xref:../../monitoring/cluster-monitoring/prometheus-alertmanager-and-grafana.adoc#prometheus-alertmanager-and-grafana[Access the Prometheus, Alertmanager, and Grafana.] + diff --git a/monitoring/cluster-monitoring/managing-cluster-alerts.adoc b/monitoring/cluster-monitoring/managing-cluster-alerts.adoc index 84f0431e5f3f..4ec7572c890b 100644 --- a/monitoring/cluster-monitoring/managing-cluster-alerts.adoc +++ b/monitoring/cluster-monitoring/managing-cluster-alerts.adoc @@ -16,5 +16,5 @@ include::modules/monitoring-expiring-silences.adoc[leveloffset=+1] .Next steps -xref:../../monitoring/cluster-monitoring/prometheus-alertmanager-and-grafana.adoc#prometheus-alertmanager-and-grafana[Access the Prometheus, Alertmanager, and Grafana.] +xref:../../monitoring/cluster-monitoring/examining-cluster-metrics.adoc#examining-cluster-metrics[Examine cluster metrics.] From e2f55eae52a9a308ecbf0ee09d1fceebfaf482b3 Mon Sep 17 00:00:00 2001 From: Maxim Svistunov Date: Fri, 20 Sep 2019 12:06:20 +0200 Subject: [PATCH 2/6] Add prefix to all images used in monitoring --- ...t-overview.png => monitoring-alert-overview.png} | Bin ...ew.png => monitoring-alerting-rule-overview.png} | Bin ...erts-screen.png => monitoring-alerts-screen.png} | Bin ...ics-screen.png => monitoring-metrics-screen.png} | Bin ...es-screen.png => monitoring-silences-screen.png} | Bin .../{yaml-screen.png => monitoring-yaml-screen.png} | Bin modules/monitoring-contents-of-the-alerting-ui.adoc | 6 +++--- modules/monitoring-contents-of-the-metrics-ui.adoc | 2 +- ...information-about-alerts-and-alerting-rules.adoc | 4 ++-- 9 files changed, 6 insertions(+), 6 deletions(-) rename images/{alert-overview.png => monitoring-alert-overview.png} (100%) rename images/{alerting-rule-overview.png => monitoring-alerting-rule-overview.png} (100%) rename images/{alerts-screen.png => monitoring-alerts-screen.png} (100%) rename images/{metrics-screen.png => monitoring-metrics-screen.png} (100%) rename images/{silences-screen.png => monitoring-silences-screen.png} (100%) rename images/{yaml-screen.png => monitoring-yaml-screen.png} (100%) diff --git a/images/alert-overview.png b/images/monitoring-alert-overview.png similarity index 100% rename from images/alert-overview.png rename to images/monitoring-alert-overview.png diff --git a/images/alerting-rule-overview.png b/images/monitoring-alerting-rule-overview.png similarity index 100% rename from images/alerting-rule-overview.png rename to images/monitoring-alerting-rule-overview.png diff --git a/images/alerts-screen.png b/images/monitoring-alerts-screen.png similarity index 100% rename from images/alerts-screen.png rename to images/monitoring-alerts-screen.png diff --git a/images/metrics-screen.png b/images/monitoring-metrics-screen.png similarity index 100% rename from images/metrics-screen.png rename to images/monitoring-metrics-screen.png diff --git a/images/silences-screen.png b/images/monitoring-silences-screen.png similarity index 100% rename from images/silences-screen.png rename to images/monitoring-silences-screen.png diff --git a/images/yaml-screen.png b/images/monitoring-yaml-screen.png similarity index 100% rename from images/yaml-screen.png rename to images/monitoring-yaml-screen.png diff --git a/modules/monitoring-contents-of-the-alerting-ui.adoc b/modules/monitoring-contents-of-the-alerting-ui.adoc index 0b81979722d6..b73229c8c743 100644 --- a/modules/monitoring-contents-of-the-alerting-ui.adoc +++ b/modules/monitoring-contents-of-the-alerting-ui.adoc @@ -11,7 +11,7 @@ The main three pages of the Alerting UI are the *Alerts*, the *Silences*, and th The *Alerts* page is located in *Monitoring* -> *Alerts* of the {product-title} web console. -image::alerts-screen.png[] +image::monitoring-alerts-screen.png[] . Filtering alerts by their names. . Filtering the alerts by their states. To fire, some alerts need a certain condition to be true for the duration of a timeout. If a condition of an alert is currently true, but the timeout has not been reached, such an alert is in the *Pending* state. @@ -23,7 +23,7 @@ image::alerts-screen.png[] The *Silences* page is located in *Monitoring* -> *Silences* of the {product-title} web console. -image::silences-screen.png[] +image::monitoring-silences-screen.png[] . Creating a silence for an alert. . Filtering silences by their name. @@ -35,7 +35,7 @@ image::silences-screen.png[] The *YAML* page is located in *Monitoring* -> *Alerting* -> *YAML* of the OpenShift Container Platform web console. -image::yaml-screen.png[] +image::monitoring-yaml-screen.png[] . Upload a file with Alertmanager configuration. . Examine and edit the current Alertmanager configuration. diff --git a/modules/monitoring-contents-of-the-metrics-ui.adoc b/modules/monitoring-contents-of-the-metrics-ui.adoc index 16adea91f3f9..29343411d44d 100644 --- a/modules/monitoring-contents-of-the-metrics-ui.adoc +++ b/modules/monitoring-contents-of-the-metrics-ui.adoc @@ -9,7 +9,7 @@ This section shows and explains the contents of the Metrics UI, a Web interface The *Metrics* page is located in *Monitoring* -> *Metrics* of the {product-title} web console. -image::../images/metrics-screen.png[] +image::monitoring-metrics-screen.png[] . Actions. * Add query. diff --git a/modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc b/modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc index 0a98cf39373d..c5a63e281f18 100644 --- a/modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc +++ b/modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc @@ -21,7 +21,7 @@ You can find an alert and see information about it or its governing alerting rul + To see alert details, click on the name of the alert. This is the page with alert details: + -image::alert-overview.png[] +image::monitoring-alert-overview.png[] + The page has the graph with timeseries of the alert. It also has information about the alert, including: + @@ -32,7 +32,7 @@ The page has the graph with timeseries of the alert. It also has information abo + To see alerting rule details, click the button in the last column and select *View Alerting Rule*. This is the page with alerting rule details: + -image::alerting-rule-overview.png[] +image::monitoring-alerting-rule-overview.png[] + The page has information about the alerting rule, including: + From 86f61b0bdb0f37eaac70c5da769ae58bd8751ba9 Mon Sep 17 00:00:00 2001 From: Maxim Svistunov Date: Fri, 20 Sep 2019 12:37:29 +0200 Subject: [PATCH 3/6] Fix markup for button names --- .../monitoring-exploring-the-visualized-metrics.adoc | 6 +++--- modules/monitoring-running-metrics-queries.adoc | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/monitoring-exploring-the-visualized-metrics.adoc b/modules/monitoring-exploring-the-visualized-metrics.adoc index 4bc6966ecbe7..fa6867cbd2bb 100644 --- a/modules/monitoring-exploring-the-visualized-metrics.adoc +++ b/modules/monitoring-exploring-the-visualized-metrics.adoc @@ -10,7 +10,7 @@ After running the queries, the metrics are displayed on the interactive plot. Th .Procedure . Initially, all metrics from all enabled queries are shown on the plot. You can select which metrics are shown. -* To hide all metrics from a query, click the action button of the query and click "Hide all series". +* To hide all metrics from a query, click the action button of the query and click *Hide all series*. * To hide a specific metric, go to the query table and click the colored square near the metric name. . To zoom into the plot and change the shown time range, do one of the following: + @@ -19,8 +19,8 @@ After running the queries, the metrics are displayed on the interactive plot. Th * Use the menu in the left upper corner to select the time range. -- + -To reset the time range, click "Reset Zoom". +To reset the time range, click *Reset Zoom*. . To see outputs of all queries at a specific point in time, hold the mouse cursor on the plot at that point. Query outputs will appear in a popup box. . For more detailed information about metrics of a specific query, expand the table of that query. Every metric is shown with its current value. -. To hide the plot, use the "Hide Graph" button. +. To hide the plot, use the *Hide Graph* button. diff --git a/modules/monitoring-running-metrics-queries.adoc b/modules/monitoring-running-metrics-queries.adoc index f912c6740dd5..15cac8d69f36 100644 --- a/modules/monitoring-running-metrics-queries.adoc +++ b/modules/monitoring-running-metrics-queries.adoc @@ -12,11 +12,11 @@ You begin working with metrics by entering one or several Prometheus Query Langu . Open the OpenShift Container Platform web console and navigate to *Monitoring* -> *Metrics*. . In the query field, enter your PromQL query. -* To show all available metrics and PromQL functions, use the "Insert Metric at Cursor" button. -. For multiple queries, use the "Add Query" button. -. For deleting queries, click the action button for the query and select "Delete query". -. For keeping but not running a query, click the "Disable query" button. -. Once you finish creating queries, click the "Run Queries" button. The metrics from the queries are visualized on the plot. If a query is invalid, the UI shows an error message. +* To show all available metrics and PromQL functions, use the *Insert Metric at Cursor* button. +. For multiple queries, use the *Add Query* button. +. For deleting queries, click the action button for the query and select *Delete query*. +. For keeping but not running a query, click the *Disable query* button. +. Once you finish creating queries, click the *Run Queries* button. The metrics from the queries are visualized on the plot. If a query is invalid, the UI shows an error message. + [NOTE] ==== From c2b29f917fef443d2fe419a867f4b34af93dbce3 Mon Sep 17 00:00:00 2001 From: Maxim Svistunov Date: Fri, 20 Sep 2019 13:34:02 +0200 Subject: [PATCH 4/6] Fix instructions & wording for UI navigation; other small fixes --- ...rometheus-alerting-ui-grafana-using-the-web-console.adoc | 6 +++--- ...ring-configuring-cluster-for-application-monitoring.adoc | 4 ++-- modules/monitoring-contents-of-the-alerting-ui.adoc | 6 +++--- modules/monitoring-contents-of-the-metrics-ui.adoc | 2 +- modules/monitoring-editing-silences.adoc | 2 +- modules/monitoring-expiring-silences.adoc | 2 +- modules/monitoring-exploring-the-visualized-metrics.adoc | 6 +++--- ...getting-information-about-alerts-and-alerting-rules.adoc | 2 +- modules/monitoring-getting-information-about-silences.adoc | 2 +- modules/monitoring-running-metrics-queries.adoc | 2 +- modules/monitoring-silencing-alerts.adoc | 4 ++-- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/modules/monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console.adoc b/modules/monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console.adoc index e29b75af4985..8668a733c87e 100644 --- a/modules/monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console.adoc +++ b/modules/monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console.adoc @@ -20,9 +20,9 @@ The Alerting UI accessed in this procedure is the new interface for Alertmanager . Navigate to the {product-title} Web console and authenticate. -. To access Prometheus, navigate to "Monitoring" -> "Metrics". +. To access Prometheus, navigate to the "Monitoring" -> "Metrics" page. + -To access the Alerting UI, navigate to "Monitoring" -> "Alerts" or "Monitoring" -> "Silences". +To access the Alerting UI, navigate to the "Monitoring" -> "Alerting" page. + -To access Grafana, navigate to "Monitoring" -> "Dashboards". +To access Grafana, navigate to the "Monitoring" -> "Dashboards" page. diff --git a/modules/monitoring-configuring-cluster-for-application-monitoring.adoc b/modules/monitoring-configuring-cluster-for-application-monitoring.adoc index be7634dcdcf9..5df7c79db188 100644 --- a/modules/monitoring-configuring-cluster-for-application-monitoring.adoc +++ b/modules/monitoring-configuring-cluster-for-application-monitoring.adoc @@ -13,6 +13,6 @@ Before application developers can monitor their applications, the human operator .Procedure -. In the {product-title} web console, navigate to *Operators* -> *OperatorHub* and install the Prometheus Operator in the namespace where your application is. +. In the {product-title} web console, navigate to the *Operators* -> *OperatorHub* page and install the Prometheus Operator in the namespace where your application is. -. Navigate to *Catalog* -> *Developer Catalog* and install Prometheus, Alertmanager, Prometheus Rule, and Service Monitor in the same namespace. +. Navigate to the *Catalog* -> *Developer Catalog* page and install Prometheus, Alertmanager, Prometheus Rule, and Service Monitor in the same namespace. diff --git a/modules/monitoring-contents-of-the-alerting-ui.adoc b/modules/monitoring-contents-of-the-alerting-ui.adoc index b73229c8c743..07903d84f412 100644 --- a/modules/monitoring-contents-of-the-alerting-ui.adoc +++ b/modules/monitoring-contents-of-the-alerting-ui.adoc @@ -9,7 +9,7 @@ This section shows and explains the contents of the Alerting UI, a Web interface The main three pages of the Alerting UI are the *Alerts*, the *Silences*, and the *YAML* pages. -The *Alerts* page is located in *Monitoring* -> *Alerts* of the {product-title} web console. +The *Alerts* page is accessible by clicking *Monitoring* -> *Alerts* in the {product-title} web console. image::monitoring-alerts-screen.png[] @@ -21,7 +21,7 @@ image::monitoring-alerts-screen.png[] . Value of the Severity label of the alert. . Actions you can do with the alert. -The *Silences* page is located in *Monitoring* -> *Silences* of the {product-title} web console. +The *Silences* page is accessible by clicking *Monitoring* -> *Silences* in the {product-title} web console. image::monitoring-silences-screen.png[] @@ -33,7 +33,7 @@ image::monitoring-silences-screen.png[] . Number of alerts that are being silenced by the silence. . Actions you can do with a silence. -The *YAML* page is located in *Monitoring* -> *Alerting* -> *YAML* of the OpenShift Container Platform web console. +The *YAML* page is accessible by clicking *Monitoring* -> *Alerting* -> *YAML* in the {product-title} web console. image::monitoring-yaml-screen.png[] diff --git a/modules/monitoring-contents-of-the-metrics-ui.adoc b/modules/monitoring-contents-of-the-metrics-ui.adoc index 29343411d44d..d92eebc7071c 100644 --- a/modules/monitoring-contents-of-the-metrics-ui.adoc +++ b/modules/monitoring-contents-of-the-metrics-ui.adoc @@ -7,7 +7,7 @@ This section shows and explains the contents of the Metrics UI, a Web interface to Prometheus. -The *Metrics* page is located in *Monitoring* -> *Metrics* of the {product-title} web console. +The *Metrics* page is accessible by clicking *Monitoring* -> *Metrics* in the {product-title} web console. image::monitoring-metrics-screen.png[] diff --git a/modules/monitoring-editing-silences.adoc b/modules/monitoring-editing-silences.adoc index 9eb5572a9eaa..3101a993c4c8 100644 --- a/modules/monitoring-editing-silences.adoc +++ b/modules/monitoring-editing-silences.adoc @@ -9,7 +9,7 @@ You can edit a silence, which will expire the existing silence and create a new .Procedure -. Navigate to the *Monitoring* -> *Silences* screen. +. Navigate to the *Monitoring* -> *Alerting* -> *Silences* page. . For the silence you want to modify, click the button in the last column and click *Edit silence*. + diff --git a/modules/monitoring-expiring-silences.adoc b/modules/monitoring-expiring-silences.adoc index b03f2349efec..604b1f74ac6a 100644 --- a/modules/monitoring-expiring-silences.adoc +++ b/modules/monitoring-expiring-silences.adoc @@ -9,7 +9,7 @@ You can expire a silence. Expiring a silence deactivates it forever. .Procedure -. Navigate to the *Monitoring* -> *Silences* page. +. Navigate to the *Monitoring* -> *Alerting* -> *Silences* page. . For the silence you want to expire, click the button in the last column and click *Expire Silence*. + diff --git a/modules/monitoring-exploring-the-visualized-metrics.adoc b/modules/monitoring-exploring-the-visualized-metrics.adoc index fa6867cbd2bb..a16179f6cc9b 100644 --- a/modules/monitoring-exploring-the-visualized-metrics.adoc +++ b/modules/monitoring-exploring-the-visualized-metrics.adoc @@ -20,7 +20,7 @@ After running the queries, the metrics are displayed on the interactive plot. Th -- + To reset the time range, click *Reset Zoom*. -. To see outputs of all queries at a specific point in time, hold the mouse cursor on the plot at that point. Query outputs will appear in a popup box. -. For more detailed information about metrics of a specific query, expand the table of that query. Every metric is shown with its current value. -. To hide the plot, use the *Hide Graph* button. +. To display outputs of all queries at a specific point in time, hold the mouse cursor on the plot at that point. The query outputs will appear in a popup box. +. For more detailed information about metrics of a specific query, expand the table of that query using the dropdown button. Every metric is shown with its current value. +. To hide the plot, click *Hide Graph*. diff --git a/modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc b/modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc index c5a63e281f18..0d391144ccad 100644 --- a/modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc +++ b/modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc @@ -9,7 +9,7 @@ You can find an alert and see information about it or its governing alerting rul .Procedure -. Open the {product-title} web console and navigate to *Monitoring* -> *Alerts*. +. Open the {product-title} web console and navigate to the *Monitoring* -> *Alerting* -> *Alerts* page. . Optional: Filter the alerts by name using the *Filter alerts by name* field. diff --git a/modules/monitoring-getting-information-about-silences.adoc b/modules/monitoring-getting-information-about-silences.adoc index 45edbe8fd554..f695b54bfbf8 100644 --- a/modules/monitoring-getting-information-about-silences.adoc +++ b/modules/monitoring-getting-information-about-silences.adoc @@ -9,7 +9,7 @@ You can find a silence and view its details. .Procedure -. Open the {product-title} web console and navigate to *Monitoring* -> *Silences*. +. Open the {product-title} web console and navigate to the *Monitoring* -> *Alerting* -> *Silences* page. . Optional: Filter the silences by name using the *Filter Silences by name* field. diff --git a/modules/monitoring-running-metrics-queries.adoc b/modules/monitoring-running-metrics-queries.adoc index 15cac8d69f36..ffdb43d8b2af 100644 --- a/modules/monitoring-running-metrics-queries.adoc +++ b/modules/monitoring-running-metrics-queries.adoc @@ -9,7 +9,7 @@ You begin working with metrics by entering one or several Prometheus Query Langu .Procedure -. Open the OpenShift Container Platform web console and navigate to *Monitoring* -> *Metrics*. +. Open the {product-title} web console and navigate to the *Monitoring* -> *Metrics* page. . In the query field, enter your PromQL query. * To show all available metrics and PromQL functions, use the *Insert Metric at Cursor* button. diff --git a/modules/monitoring-silencing-alerts.adoc b/modules/monitoring-silencing-alerts.adoc index 50f7e700d368..c918b5a11766 100644 --- a/modules/monitoring-silencing-alerts.adoc +++ b/modules/monitoring-silencing-alerts.adoc @@ -11,7 +11,7 @@ You can either silence a specific alert or silence alerts that match a specifica To silence a set of alerts by creating an alert specification: -. Navigate to the *Monitoring* -> *Silences* page of the {product-title} web console. +. Navigate to the *Monitoring* -> *Alerting* -> *Silences* page of the {product-title} web console. . Click *Create Silence*. @@ -21,7 +21,7 @@ To silence a set of alerts by creating an alert specification: To silence a specific alert: -. Navigate to the *Monitoring* -> *Alerts* page of the {product-title} web console. +. Navigate to the *Monitoring* -> *Alerting* -> *Alerts* page of the {product-title} web console. . For the alert that you want to silence, click the button in the last column and click *Silence Alert*. The *Create Silence* form will appear with prepopulated specification of the chosen alert. From f4ca1e7de006d04c3b8c37f95fbecb953497cb9d Mon Sep 17 00:00:00 2001 From: Maxim Svistunov Date: Fri, 20 Sep 2019 15:54:34 +0200 Subject: [PATCH 5/6] Various wording fixes --- ...metheus-alerting-ui-grafana-using-the-web-console.adoc | 6 +++--- ...ccessing-prometheus-alertmanager-grafana-directly.adoc | 4 ++-- modules/monitoring-contents-of-the-alerting-ui.adoc | 2 +- modules/monitoring-contents-of-the-metrics-ui.adoc | 2 +- modules/monitoring-exploring-the-visualized-metrics.adoc | 2 +- modules/monitoring-running-metrics-queries.adoc | 8 ++++---- .../cluster-monitoring/examining-cluster-metrics.adoc | 2 +- .../cluster-monitoring/managing-cluster-alerts.adoc | 2 +- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console.adoc b/modules/monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console.adoc index 8668a733c87e..f39e1991d3ba 100644 --- a/modules/monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console.adoc +++ b/modules/monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console.adoc @@ -3,9 +3,9 @@ // * monitoring/cluster-monitoring/prometheus-alertmanager-and-grafana.adoc [id="monitoring-accessing-prometheus-alerting-ui-grafana-using-the-web-console_{context}"] -= Accessing Prometheus, Alerting UI, and Grafana using the Web console += Accessing Prometheus, Alerting UI, and Grafana using the web console -You can access Prometheus, Alerting UI, and Grafana web UIs using a Web browser through the {product-title} Web console. +You can access Prometheus, Alerting UI, and Grafana web UIs using a web browser through the {product-title} web console. [NOTE] ==== @@ -18,7 +18,7 @@ The Alerting UI accessed in this procedure is the new interface for Alertmanager .Procedure -. Navigate to the {product-title} Web console and authenticate. +. Navigate to the {product-title} web console and authenticate. . To access Prometheus, navigate to the "Monitoring" -> "Metrics" page. + diff --git a/modules/monitoring-accessing-prometheus-alertmanager-grafana-directly.adoc b/modules/monitoring-accessing-prometheus-alertmanager-grafana-directly.adoc index eaacd0d5da9d..ca1293f04024 100644 --- a/modules/monitoring-accessing-prometheus-alertmanager-grafana-directly.adoc +++ b/modules/monitoring-accessing-prometheus-alertmanager-grafana-directly.adoc @@ -5,7 +5,7 @@ [id="monitoring-accessing-prometheus-alertmanager-grafana-directly_{context}"] = Accessing Prometheus, Alertmanager, and Grafana directly -You can access Prometheus, Alertmanager, and Grafana web UIs using the `oc` tool and a Web browser. +You can access Prometheus, Alertmanager, and Grafana web UIs using the `oc` tool and a web browser. [NOTE] ==== @@ -38,5 +38,5 @@ For example, this is the resulting URL for Alertmanager: https://alertmanager-main-openshift-monitoring.apps._url_.openshift.com ---- -. Navigate to the address using a Web browser and authenticate. +. Navigate to the address using a web browser and authenticate. diff --git a/modules/monitoring-contents-of-the-alerting-ui.adoc b/modules/monitoring-contents-of-the-alerting-ui.adoc index 07903d84f412..26f84c11729b 100644 --- a/modules/monitoring-contents-of-the-alerting-ui.adoc +++ b/modules/monitoring-contents-of-the-alerting-ui.adoc @@ -5,7 +5,7 @@ [id="contents-of-the-alerting-ui_{context}"] = Contents of the Alerting UI -This section shows and explains the contents of the Alerting UI, a Web interface to the Alertmanager. +This section shows and explains the contents of the Alerting UI, a web interface to the Alertmanager. The main three pages of the Alerting UI are the *Alerts*, the *Silences*, and the *YAML* pages. diff --git a/modules/monitoring-contents-of-the-metrics-ui.adoc b/modules/monitoring-contents-of-the-metrics-ui.adoc index d92eebc7071c..9d05685dabcd 100644 --- a/modules/monitoring-contents-of-the-metrics-ui.adoc +++ b/modules/monitoring-contents-of-the-metrics-ui.adoc @@ -5,7 +5,7 @@ [id="contents-of-the-metrics-ui_{context}"] = Contents of the Metrics UI -This section shows and explains the contents of the Metrics UI, a Web interface to Prometheus. +This section shows and explains the contents of the Metrics UI, a web interface to Prometheus. The *Metrics* page is accessible by clicking *Monitoring* -> *Metrics* in the {product-title} web console. diff --git a/modules/monitoring-exploring-the-visualized-metrics.adoc b/modules/monitoring-exploring-the-visualized-metrics.adoc index a16179f6cc9b..7728342da732 100644 --- a/modules/monitoring-exploring-the-visualized-metrics.adoc +++ b/modules/monitoring-exploring-the-visualized-metrics.adoc @@ -10,7 +10,7 @@ After running the queries, the metrics are displayed on the interactive plot. Th .Procedure . Initially, all metrics from all enabled queries are shown on the plot. You can select which metrics are shown. -* To hide all metrics from a query, click the action button of the query and click *Hide all series*. +* To hide all metrics from a query, click {kebab} for the query and click *Hide all series*. * To hide a specific metric, go to the query table and click the colored square near the metric name. . To zoom into the plot and change the shown time range, do one of the following: + diff --git a/modules/monitoring-running-metrics-queries.adoc b/modules/monitoring-running-metrics-queries.adoc index ffdb43d8b2af..dd7fe669ed70 100644 --- a/modules/monitoring-running-metrics-queries.adoc +++ b/modules/monitoring-running-metrics-queries.adoc @@ -12,15 +12,15 @@ You begin working with metrics by entering one or several Prometheus Query Langu . Open the {product-title} web console and navigate to the *Monitoring* -> *Metrics* page. . In the query field, enter your PromQL query. -* To show all available metrics and PromQL functions, use the *Insert Metric at Cursor* button. -. For multiple queries, use the *Add Query* button. -. For deleting queries, click the action button for the query and select *Delete query*. +* To show all available metrics and PromQL functions, click *Insert Metric at Cursor*. +. For multiple queries, click *Add Query*. +. For deleting queries, click {kebab} for the query, then select *Delete query*. . For keeping but not running a query, click the *Disable query* button. . Once you finish creating queries, click the *Run Queries* button. The metrics from the queries are visualized on the plot. If a query is invalid, the UI shows an error message. + [NOTE] ==== -Queries that operate on large amounts of data might timeout or overload the browser when drawing timeseries graphs. To avoid this, you might prefer to hide the graph and calibrate your query using only the metrics table. Then, after finding a feasible query, enable the plot to draw the graphs. +Queries that operate on large amounts of data might timeout or overload the browser when drawing timeseries graphs. To avoid this, hide the graph and calibrate your query using only the metrics table. Then, after finding a feasible query, enable the plot to draw the graphs. ==== + . Optional: The page URL now contains the queries you ran. To use this set of queries again in the future, save this URL. diff --git a/monitoring/cluster-monitoring/examining-cluster-metrics.adoc b/monitoring/cluster-monitoring/examining-cluster-metrics.adoc index c40ee23f5cb3..9fe6461bd17b 100644 --- a/monitoring/cluster-monitoring/examining-cluster-metrics.adoc +++ b/monitoring/cluster-monitoring/examining-cluster-metrics.adoc @@ -5,7 +5,7 @@ include::modules/common-attributes.adoc[] toc::[] -{product-title} 4 provides a Web interface to Prometheus, which enables you to run Prometheus Query Language (PromQL) queries and examine the metrics visualized on a plot. This provides an extensive overview of the cluster state and enables you to troubleshoot problems. +{product-title} {product-version} provides a web interface to Prometheus, which enables you to run Prometheus Query Language (PromQL) queries and examine the metrics visualized on a plot. This functionality provides an extensive overview of the cluster state and enables you to troubleshoot problems. include::modules/monitoring-contents-of-the-metrics-ui.adoc[leveloffset=+1] include::modules/monitoring-running-metrics-queries.adoc[leveloffset=+1] diff --git a/monitoring/cluster-monitoring/managing-cluster-alerts.adoc b/monitoring/cluster-monitoring/managing-cluster-alerts.adoc index 4ec7572c890b..3f235a8e3a12 100644 --- a/monitoring/cluster-monitoring/managing-cluster-alerts.adoc +++ b/monitoring/cluster-monitoring/managing-cluster-alerts.adoc @@ -5,7 +5,7 @@ include::modules/common-attributes.adoc[] toc::[] -{product-title} 4 provides a Web interface to the Alertmanager, which enables you to manage alerts. This section demonstrates how to use the Alerting UI. +{product-title} {product-version} provides a web interface to the Alertmanager, which enables you to manage alerts. This section demonstrates how to use the Alerting UI. include::modules/monitoring-contents-of-the-alerting-ui.adoc[leveloffset=+1] include::modules/monitoring-getting-information-about-alerts-and-alerting-rules.adoc[leveloffset=+1] From 5ffc634346fadb822bae9424f565265d24fc97bf Mon Sep 17 00:00:00 2001 From: Maxim Svistunov Date: Fri, 20 Sep 2019 16:15:38 +0200 Subject: [PATCH 6/6] Miniscule stylistic fixes --- modules/monitoring-exploring-the-visualized-metrics.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/monitoring-exploring-the-visualized-metrics.adoc b/modules/monitoring-exploring-the-visualized-metrics.adoc index 7728342da732..23ff5f03d4a3 100644 --- a/modules/monitoring-exploring-the-visualized-metrics.adoc +++ b/modules/monitoring-exploring-the-visualized-metrics.adoc @@ -20,7 +20,7 @@ After running the queries, the metrics are displayed on the interactive plot. Th -- + To reset the time range, click *Reset Zoom*. -. To display outputs of all queries at a specific point in time, hold the mouse cursor on the plot at that point. The query outputs will appear in a popup box. -. For more detailed information about metrics of a specific query, expand the table of that query using the dropdown button. Every metric is shown with its current value. +. To display outputs of all queries at a specific point in time, hold the mouse cursor on the plot at that point. The query outputs will appear in a pop-up box. +. For more detailed information about metrics of a specific query, expand the table of that query using the drop-down button. Every metric is shown with its current value. . To hide the plot, click *Hide Graph*.