summaryrefslogtreecommitdiffstats
path: root/web/gui
diff options
context:
space:
mode:
Diffstat (limited to 'web/gui')
-rw-r--r--web/gui/README.md22
-rw-r--r--web/gui/confluence/README.md2
-rw-r--r--web/gui/custom/README.md17
-rw-r--r--web/gui/dashboard_info.js394
-rw-r--r--web/gui/main.js3
5 files changed, 398 insertions, 40 deletions
diff --git a/web/gui/README.md b/web/gui/README.md
index 69db6becb..fbd7da4df 100644
--- a/web/gui/README.md
+++ b/web/gui/README.md
@@ -13,16 +13,16 @@ before:
action](https://user-images.githubusercontent.com/1153921/101513938-fae28380-3939-11eb-9434-8ad86a39be62.gif)
Learn more about how dashboards work and how they're populated using the `dashboards.js` file in our [web dashboards
-overview](/web/README.md).
+overview](https://github.com/netdata/netdata/blob/master/web/README.md).
By default, Netdata starts a web server for its dashboard at port `19999`. Open up your web browser of choice and
navigate to `http://NODE:19999`, replacing `NODE` with the IP address or hostname of your Agent. If you're unsure, try
`http://localhost:19999` first.
-Netdata uses an [internal, static-threaded web server](/web/server/README.md) to host the HTML, CSS, and JavaScript
+Netdata uses an [internal, static-threaded web server](https://github.com/netdata/netdata/blob/master/web/server/README.md) to host the HTML, CSS, and JavaScript
files that make up the local Agent dashboard. You don't have to configure anything to access it, although you can adjust
-[your settings](/web/server/README.md#other-netdataconf-web-section-options) in the `netdata.conf` file, or run Netdata
-behind an [Nginx proxy](https://learn.netdata.cloud/docs/agent/running-behind-nginx), and so on.
+[your settings](https://github.com/netdata/netdata/blob/master/web/server/README.md#other-netdataconf-web-section-options) in the `netdata.conf` file, or run Netdata
+behind an [Nginx proxy](https://github.com/netdata/netdata/blob/master/docs/Running-behind-nginx.md), and so on.
## Navigating the local dashboard
@@ -40,8 +40,8 @@ dashboard](https://user-images.githubusercontent.com/1153921/101509403-f7e59400-
Netdata is broken up into multiple **sections**, such as **System Overview**,
**CPU**, **Disk**, and more. Inside each section you'll find a number of charts,
-broken down into [contexts](/web/README.md#contexts) and
-[families](/web/README.md#families).
+broken down into [contexts](https://github.com/netdata/netdata/blob/master/web/README.md#contexts) and
+[families](https://github.com/netdata/netdata/blob/master/web/README.md#families).
An example of the **Memory** section on a Linux desktop system.
@@ -69,7 +69,7 @@ Use the calendar to select multiple days. Click on a date to begin the timeframe
Click **Apply** to re-render all visualizations with new metrics data, or **Clear** to restore the default timeframe.
-[Increase the metrics retention policy](/docs/store/change-metrics-storage.md) for your node to see more historical
+[Increase the metrics retention policy](https://github.com/netdata/netdata/blob/master/docs/store/change-metrics-storage.md) for your node to see more historical
timeframes.
### Metrics menus
@@ -80,7 +80,7 @@ section, and menus link to the section they're associated with.
![A screenshot of metrics menus](https://user-images.githubusercontent.com/1153921/80834638-f08f2880-8ba5-11ea-99ae-f610b2885fd6.png)
Most metrics menu items will contain several **submenu** entries, which represent any
-[families](/web/README.md#families) from that section. Netdata automatically
+[families](https://github.com/netdata/netdata/blob/master/web/README.md#families) from that section. Netdata automatically
generates these submenu entries.
Here's a **Disks** menu with several submenu entries for each disk drive and
@@ -100,7 +100,7 @@ a War Room's name to jump to the Netdata Cloud web interface.
menus](https://user-images.githubusercontent.com/1153921/80837210-3f8b8c80-8bab-11ea-9c75-128c2d823ef8.png)
If you want to know more about how Cloud populates this menu, and the Agent-Cloud integration at a high level, see our
-document on [using the Agent with Netdata Cloud](/docs/agent-cloud.md).
+document on [using the Agent with Netdata Cloud](https://github.com/netdata/netdata/blob/master/docs/agent-cloud.md).
## Customizing the local dashboard
@@ -163,5 +163,5 @@ file](https://user-images.githubusercontent.com/1153921/62798924-570e6c80-ba94-1
## Custom dashboards
-For information on creating custom dashboards from scratch, see the [custom dashboards](/web/gui/custom/README.md) or
-[Atlassian Confluence dashboards](/web/gui/confluence/README.md) guides.
+For information on creating custom dashboards from scratch, see the [custom dashboards](https://github.com/netdata/netdata/blob/master/web/gui/custom/README.md) or
+[Atlassian Confluence dashboards](https://github.com/netdata/netdata/blob/master/web/gui/confluence/README.md) guides.
diff --git a/web/gui/confluence/README.md b/web/gui/confluence/README.md
index 64dacdf38..9e7b8025f 100644
--- a/web/gui/confluence/README.md
+++ b/web/gui/confluence/README.md
@@ -85,7 +85,7 @@ This badge is now auto-refreshing. It will update itself based on the update fre
> Keep in mind you can add badges with custom Netdata queries too. Netdata automatically creates badges for all the
> alarms, but every chart, every dimension on every chart, can be used for a badge. And Netdata badges are quite
-> powerful! Check [Creating Badges](/web/api/badges/README.md) for more information on badges.
+> powerful! Check [Creating Badges](https://github.com/netdata/netdata/blob/master/web/api/badges/README.md) for more information on badges.
So, let's create a table and add this badge for both our web servers:
diff --git a/web/gui/custom/README.md b/web/gui/custom/README.md
index cdd5d4260..0751f2087 100644
--- a/web/gui/custom/README.md
+++ b/web/gui/custom/README.md
@@ -1,7 +1,11 @@
<!--
title: "Custom dashboards"
description: "Build custom dashboards with key metrics from one or more nodes running the Netdata Agent and host them anywhere."
-custom_edit_url: https://github.com/netdata/netdata/edit/master/web/gui/custom/README.md
+custom_edit_url: "https://github.com/netdata/netdata/edit/master/web/gui/custom/README.md"
+sidebar_label: "Custom dashboards"
+learn_status: "Published"
+learn_topic_type: "Tasks"
+learn_rel_path: "Operations"
-->
# Custom dashboards
@@ -28,7 +32,7 @@ monitoring two servers on the same page:
![image](https://cloud.githubusercontent.com/assets/2662304/14252187/d8d5f78e-fa8e-11e5-990d-99821d38c874.png)
---
+
## Web directory
@@ -72,7 +76,6 @@ header:
</html>
```
----
## dashboard.js
@@ -163,7 +166,7 @@ that do not specify a Netdata server, add this before loading `dashboard.js`:
<script type="text/javascript">var netdataServer = "http://your.netdata.server:19999";</script>
```
----
+
## Adding charts
@@ -242,7 +245,7 @@ Each chart can get data from a different Netdata server. You can specify the Net
></div>
```
-If you have ephemeral monitoring setup ([More info here](/streaming/README.md#monitoring-ephemeral-nodes)) and have no
+If you have ephemeral monitoring setup ([More info here](https://github.com/netdata/netdata/blob/master/streaming/README.md#monitoring-ephemeral-nodes)) and have no
direct access to the nodes dashboards, you can use the following:
```html
@@ -366,7 +369,7 @@ select specific dimensions using this:
```
Netdata supports coma (`,`) or pipe (`|`) separated [simple
-patterns](/libnetdata/simple_pattern/README.md) for dimensions. By default it
+patterns](https://github.com/netdata/netdata/blob/master/libnetdata/simple_pattern/README.md) for dimensions. By default it
searches for both dimension IDs and dimension NAMEs. You can control the target
of the match with: `data-append-options="match-ids"` or
`data-append-options="match-names"`. Spaces in `data-dimensions=""` are matched
@@ -434,7 +437,7 @@ it, using this:
### API options
-You can append Netdata **[REST API v1](/web/api/README.md)** data options, using this:
+You can append Netdata **[REST API v1](https://github.com/netdata/netdata/blob/master/web/api/README.md)** data options, using this:
```html
<div data-netdata="unique.id"
diff --git a/web/gui/dashboard_info.js b/web/gui/dashboard_info.js
index 11cfda54a..d34a4df13 100644
--- a/web/gui/dashboard_info.js
+++ b/web/gui/dashboard_info.js
@@ -297,12 +297,6 @@ netdataDashboard.menu = {
info: 'Docker containers state and disk usage.'
},
- 'fping': {
- title: 'fping',
- icon: '<i class="fas fa-exchange-alt"></i>',
- info: 'Network latency statistics, via <b>fping</b>. <b>fping</b> is a program to send ICMP echo probes to network hosts, similar to <code>ping</code>, but much better performing when pinging multiple hosts. fping versions after 3.15 can be directly used as netdata plugins.'
- },
-
'ping': {
title: 'Ping',
icon: '<i class="fas fa-exchange-alt"></i>',
@@ -585,6 +579,36 @@ netdataDashboard.menu = {
info: undefined
},
+ 'iis': {
+ title: 'IIS',
+ icon: '<i class="fas fa-eye"></i>',
+ info: undefined
+ },
+
+ 'mssql': {
+ title: 'MS SQL Server',
+ icon: '<i class="fas fa-database"></i>',
+ info: undefined
+ },
+
+ 'ad': {
+ title: 'Active Directory',
+ icon: '<i class="fab fa-windows"></i>',
+ info: undefined
+ },
+
+ 'adcs': {
+ title: 'AD Certification Service',
+ icon: '<i class="fab fa-windows"></i>',
+ info: undefined
+ },
+
+ 'adfs': {
+ title: 'AD Federation Service',
+ icon: '<i class="fab fa-windows"></i>',
+ info: undefined
+ },
+
'perf': {
title: 'Perf Counters',
icon: '<i class="fas fa-tachometer-alt"></i>',
@@ -738,6 +762,12 @@ netdataDashboard.menu = {
title: 'Cassandra',
icon: '<i class="fas fa-database"></i>',
info: 'Performance metrics for Cassandra, the open source distributed NoSQL database management system'
+ },
+
+ 'consul': {
+ title: 'Consul',
+ icon: '<i class="fas fa-circle-notch"></i>',
+ info: 'Consul performance and health metrics. For details, see <a href="https://developer.hashicorp.com/consul/docs/agent/telemetry#key-metrics" target="_blank">Key Metrics</a>.'
}
};
@@ -4225,6 +4255,114 @@ netdataDashboard.context = {
},
// ------------------------------------------------------------------------
+ // Consul
+ 'consul.node_health_check_status': {
+ info: 'The current status of the <a href="https://developer.hashicorp.com/consul/tutorials/developer-discovery/service-registration-health-checks#monitor-a-node" target="_blank">node health check</a>. A node health check monitors the health of the entire node. If the node health check fails, Consul marks the node as unhealthy.'
+ },
+ 'consul.service_health_check_status': {
+ info: 'The current status of the <a href="https://developer.hashicorp.com/consul/tutorials/developer-discovery/service-registration-health-checks#monitor-a-service" target="_blank">service health check</a>. A service check only affects the health of the service it is associated with. If the service health check fails, the DNS interface stops returning that service.'
+ },
+ 'consul.client_rpc_requests_rate': {
+ info: 'The number of RPC requests to a Consul server.'
+ },
+ 'consul.client_rpc_requests_exceeded_rate': {
+ info: 'The number of rate-limited RPC requests to a Consul server. An Increase of this metric either indicates the load is getting high enough to limit the rate or a <a href="https://developer.hashicorp.com/consul/docs/agent/config/config-files#limits" target="_blank">incorrectly configured</a> Consul agent.'
+ },
+ 'consul.client_rpc_requests_failed_rate': {
+ info: 'The number of failed RPC requests to a Consul server.'
+ },
+ 'consul.memory_allocated': {
+ info: 'The amount of memory allocated by the Consul process.'
+ },
+ 'consul.memory_sys': {
+ info: 'The amount of memory obtained from the OS.'
+ },
+ 'consul.gc_pause_time': {
+ info: 'The amount of time spent in garbage collection (GC) pauses. GC pause is a "stop-the-world" event, meaning that all runtime threads are blocked until GC completes. If memory usage is high, the Go runtime may GC so frequently that it starts to slow down Consul.'
+ },
+ 'consul.kvs_apply_time': {
+ info: 'The time it takes to complete an update to the KV store.'
+ },
+ 'consul.kvs_apply_operations_rate': {
+ info: 'The number of KV store updates.'
+ },
+ 'consul.txn_apply_time': {
+ info: 'The time spent applying a transaction operation.'
+ },
+ 'consul.txn_apply_operations_rate': {
+ info: 'The number of applied transaction operations.'
+ },
+ 'consul.raft_commit_time': {
+ info: 'The time it takes to commit a new entry to the Raft log on the leader.'
+ },
+ 'consul.raft_commits_rate': {
+ info: 'The number of applied Raft transactions.'
+ },
+ 'consul.autopilot_health_status': {
+ info: 'The overall health of the local server cluster. The status is healthy if <b>all servers</b> are considered healthy by Autopilot.'
+ },
+ 'consul.autopilot_server_health_status': {
+ info: 'Whether the server is healthy according to the current <a href="https://developer.hashicorp.com/consul/tutorials/datacenter-operations/autopilot-datacenter-operations#server-health-checking", target="_blank">Autopilot configuration</a>.'
+ },
+ 'consul.autopilot_server_stable_time': {
+ info: 'The time this server has been in its current state.'
+ },
+ 'consul.autopilot_server_serf_status': {
+ info: 'The SerfHealth check status for the server.'
+ },
+ 'consul.autopilot_server_voter_status': {
+ info: 'Whether the server is a voting member of the Raft cluster.'
+ },
+ 'consul.autopilot_failure_tolerance': {
+ info: 'The number of voting servers that the cluster can lose while continuing to function.'
+ },
+ 'consul.network_lan_rtt': {
+ info: '<a href="https://developer.hashicorp.com/consul/docs/architecture/coordinates#working-with-coordinates" target="_blank">Estimated</a> network round-trip time between this node and other nodes of the cluster.'
+ },
+ 'consul.raft_leader_last_contact_time': {
+ info: 'The time since the leader was last able to contact the follower nodes when checking its leader lease.'
+ },
+ 'consul.raft_follower_last_contact_leader_time': {
+ info: 'The time elapsed since this server last contacted the leader.'
+ },
+ 'consul.raft_leader_elections_rate': {
+ info: 'The number of leadership elections. Increments whenever a Consul server starts an election.'
+ },
+ 'consul.raft_leadership_transitions_rate': {
+ info: 'The number of leadership elections. Increments whenever a Consul server becomes a leader.'
+ },
+ 'consul.server_leadership_status': {
+ info: 'The Consul server leadership status.'
+ },
+ 'consul.raft_thread_main_saturation_perc': {
+ info: 'An approximate measurement of the proportion of time the main Raft goroutine is busy and unavailable to accept new work.'
+ },
+ 'consul.raft_thread_fsm_saturation_perc': {
+ info: 'An approximate measurement of the proportion of time the Raft FSM goroutine is busy and unavailable to accept new work.'
+ },
+ 'consul.raft_fsm_last_restore_duration': {
+ info: 'The time taken to restore the FSM from a snapshot on an agent restart or from the leader calling <i>installSnapshot</i>.'
+ },
+ 'consul.raft_leader_oldest_log_age': {
+ info: 'The time elapsed since the oldest journal was written to the leader\'s journal storage. This can be important for the health of replication when the write rate is high and the snapshot is large, because followers may not be able to recover from a restart if recovery takes longer than the minimum for the current leader.'
+ },
+ 'consul.raft_rpc_install_snapshot_time': {
+ info: 'The time it takes to process the <i>installSnapshot</i> RPC call.'
+ },
+ 'consul.raft_boltdb_freelist_bytes': {
+ info: 'The number of bytes necessary to encode the freelist metadata. When <a href="https://developer.hashicorp.com/consul/docs/agent/config/config-files#NoFreelistSync" target="_blank">raft_boltdb.NoFreelistSync</a> is set to <i>false</i> these metadata bytes must also be written to disk for each committed log.'
+ },
+ 'consul.raft_boltdb_logs_per_batch_rate': {
+ info: 'The number of logs written per batch to the database.'
+ },
+ 'consul.raft_boltdb_store_logs_time': {
+ info: 'The amount of time spent writing logs to the database.'
+ },
+ 'consul.license_expiration_time': {
+ info: 'The amount of time remaining before Consul Enterprise license expires. When the license expires, some Consul Enterprise features will stop working.'
+ },
+
+ // ------------------------------------------------------------------------
// WMI (Process)
'wmi.processes_cpu_time': {
@@ -4281,6 +4419,93 @@ netdataDashboard.context = {
},
// ------------------------------------------------------------------------
+ // WMI (IIS)
+
+ 'iis.website_isapi_extension_requests_count': {
+ info: 'The number of <a href="https://learn.microsoft.com/en-us/previous-versions/iis/6.0-sdk/ms525282(v=vs.90)" target="_blank">ISAPI extension</a> requests that are processed concurrently by the web service.'
+ },
+ 'iis.website_errors_rate': {
+ info: '<p>The number of requests that cannot be satisfied by the server.</p><p><b>DocumentLocked</b> - the requested document was locked. Usually reported as HTTP error 423. <b>DocumentNotFound</b> - the requested document was not found. Usually reported as HTTP error 404.</p>'
+ },
+
+ // ------------------------------------------------------------------------
+ // WMI (Service)
+
+ 'wmi.service_status': {
+ info: 'The current <a href="https://learn.microsoft.com/en-us/windows/win32/services/service-status-transitions" target="_blank">status</a> of the service.'
+ },
+
+ // ------------------------------------------------------------------------
+ // WMI (MSSQL)
+
+ 'mssql.instance_accessmethods_page_splits': {
+ info : 'Page split happens when the page does not have more space. This chart shows the number of page splits per second that occur as the result of overflowing index pages.'
+ },
+
+ 'mssql.instance_cache_hit_ratio': {
+ info : 'Indicates the percentage of pages found in the buffer cache without having to read from disk. The ratio is the total number of cache hits divided by the total number of cache lookups over the last few thousand page accesses. After a long period of time, the ratio moves very little. Because reading from the cache is much less expensive than reading from disk, you want this ratio to be high.'
+ },
+
+ 'mssql.instance_bufman_checkpoint_pages': {
+ info : 'Indicates the number of pages flushed to disk per second by a checkpoint or other operation that require all dirty pages to be flushed.'
+ },
+
+ 'mssql.instance_bufman_page_life_expectancy': {
+ info : 'Indicates the number of seconds a page will stay in the buffer pool without references.'
+ },
+
+ 'mssql.instance_memmgr_external_benefit_of_memory': {
+ info : 'It is used by the engine to balance memory usage between cache and is useful to support when troubleshooting cases with unexpected cache growth. The value is presented as an integer based on an internal calculation.'
+ },
+
+ 'mssql.instance_sql_errors': {
+ info: 'Errors in Microsoft SQL Server.</p><p><b>Db_offline</b> - Tracks severe errors that cause SQL Server to take the current database offline. <b>Info</b> - Information related to error messages that provide information to users but do not cause errors. <b>Kill_connection</b> - Tracks severe errors that cause SQL Server to kill the current connection. <b>User</b> - User errors.</p>'
+ },
+
+ 'mssql.instance_sqlstats_auto_parameterization_attempts': {
+ info: 'Auto-parameterization occurs when an instance of SQL Server tries to parameterize a Transact-SQL request by replacing some literals with parameters so that reuse of the resulting cached execution plan across multiple similar-looking requests is possible. Note that auto-parameterizations are also known as simple parameterizations in newer versions of SQL Server. This counter does not include forced parameterizations.'
+ },
+
+ 'mssql.instance_sqlstats_batch_requests': {
+ info: 'This statistic is affected by all constraints (such as I/O, number of users, cache size, complexity of requests, and so on). High batch requests mean good throughput.'
+ },
+
+ 'mssql.instance_sqlstats_safe_auto_parameterization_attempts': {
+ info: 'Note that auto-parameterizations are also known as simple parameterizations in later versions of SQL Server.'
+ },
+
+ 'mssql.instance_sqlstats_sql_compilations': {
+ info: 'Indicates the number of times the compile code path is entered. Includes compiles caused by statement-level recompilations in SQL Server. After SQL Server user activity is stable, this value reaches a steady state.'
+ },
+
+ // ------------------------------------------------------------------------
+ // WMI (AD)
+
+ 'ad.dra_replication_intersite_compressed_traffic': {
+ info: 'The compressed size, in bytes, of inbound and outbound compressed replication data (size after compression, from DSAs in other sites).'
+ },
+
+ 'ad.dra_replication_intrasite_compressed_traffic': {
+ info: 'The number of bytes replicated that were not compressed (that is., from DSAs in the same site).'
+ },
+
+ 'ad.dra_replication_properties_updated': {
+ info: 'The number of properties that are updated due to incoming property winning the reconciliation logic that determines the final value to be replicated.'
+ },
+
+ 'ad.dra_replication_objects_filtered': {
+ info: 'The number of objects received from inbound replication partners that contained no updates that needed to be applied.'
+ },
+
+ 'ad.dra_replication_pending_syncs': {
+ info: 'The number of directory synchronizations that are queued for this server but not yet processed.'
+ },
+
+ 'ad.dra_replication_sync_requests': {
+ info: 'The number of directory synchronizations that are queued for this server but not yet processed.'
+ },
+
+ // ------------------------------------------------------------------------
// APACHE
'apache.connections': {
@@ -4419,6 +4644,150 @@ netdataDashboard.context = {
},
// ------------------------------------------------------------------------
+ // NGINX Plus
+ 'nginxplus.client_connections_rate': {
+ info: 'Accepted and dropped (not handled) connections. A connection is considered <b>dropped</b> if the worker process is unable to get a connection for the request by establishing a new connection or reusing an open one.'
+ },
+ 'nginxplus.client_connections_count': {
+ info: 'The current number of client connections. A connection is considered <b>idle</b> if there are currently no active requests.'
+ },
+ 'nginxplus.ssl_handshakes_rate': {
+ info: 'Successful and failed SSL handshakes.'
+ },
+ 'nginxplus.ssl_session_reuses_rate': {
+ info: 'The number of session reuses during SSL handshake.'
+ },
+ 'nginxplus.ssl_handshakes_failures_rate': {
+ info: '<p>SSL handshake failures.</p><p><b>NoCommonProtocol</b> - failed because of no common protocol. <b>NoCommonCipher</b> - failed because of no shared cipher. <b>Timeout</b> - failed because of a timeout. <b>PeerRejectedCert</b> - failed because a client rejected the certificate.</p>'
+ },
+ 'nginxplus.ssl_verification_errors_rate': {
+ info: '<p>SSL verification errors.</p><p><b>NoCert</b> - a client did not provide the required certificate. <b>ExpiredCert</b> - an expired or not yet valid certificate was presented by a client. <b>RevokedCert</b> - a revoked certificate was presented by a client. <b>HostnameMismatch</b> - server\'s certificate does not match the hostname. <b>Other</b> - other SSL certificate verification errors.</p>'
+ },
+ 'nginxplus.http_requests_rate': {
+ info: 'The number of HTTP requests received from clients.'
+ },
+ 'nginxplus.http_requests_count': {
+ info: 'The current number of client requests.'
+ },
+ 'nginxplus.uptime': {
+ info: 'The time elapsed since the NGINX process was started.'
+ },
+ 'nginxplus.http_server_zone_requests_rate': {
+ info: 'The number of requests to the HTTP Server Zone.'
+ },
+ 'nginxplus.http_server_zone_responses_per_code_class_rate': {
+ info: 'The number of responses from the HTTP Server Zone. Responses grouped by HTTP status code class.'
+ },
+ 'nginxplus.http_server_zone_traffic_rate': {
+ info: 'The amount of data transferred to and from the HTTP Server Zone.'
+ },
+ 'nginxplus.http_server_zone_requests_processing_count': {
+ info: 'The number of client requests that are currently being processed by the HTTP Server Zone.'
+ },
+ 'nginxplus.http_server_zone_requests_discarded_rate': {
+ info: 'The number of requests to the HTTP Server Zone completed without sending a response.'
+ },
+ 'nginxplus.http_location_zone_requests_rate': {
+ info: 'The number of requests to the HTTP Location Zone.'
+ },
+ 'nginxplus.http_location_zone_responses_per_code_class_rate': {
+ info: 'The number of responses from the HTTP Location Zone. Responses grouped by HTTP status code class.'
+ },
+ 'nginxplus.http_location_zone_traffic_rate': {
+ info: 'The amount of data transferred to and from the HTTP Location Zone.'
+ },
+ 'nginxplus.http_location_zone_requests_discarded_rate': {
+ info: 'The number of requests to the HTTP Location Zone completed without sending a response.'
+ },
+ 'nginxplus.http_upstream_peers_count': {
+ info: 'The number of HTTP Upstream servers.'
+ },
+ 'nginxplus.http_upstream_zombies_count': {
+ info: 'The current number of HTTP Upstream servers removed from the group but still processing active client requests.'
+ },
+ 'nginxplus.http_upstream_keepalive_count': {
+ info: 'The current number of idle keepalive connections to the HTTP Upstream.'
+ },
+ 'nginxplus.http_upstream_server_requests_rate': {
+ info: 'The number of client requests forwarded to the HTTP Upstream Server.'
+ },
+ 'nginxplus.http_upstream_server_responses_per_code_class_rate': {
+ info: 'The number of responses received from the HTTP Upstream Server. Responses grouped by HTTP status code class.'
+ },
+ 'nginxplus.http_upstream_server_response_time': {
+ info: 'The average time to get a complete response from the HTTP Upstream Server.'
+ },
+ 'nginxplus.http_upstream_server_response_header_time': {
+ info: 'The average time to get a response header from the HTTP Upstream Server.'
+ },
+ 'nginxplus.http_upstream_server_traffic_rate': {
+ info: 'The amount of traffic transferred to and from the HTTP Upstream Server.'
+ },
+ 'nginxplus.http_upstream_server_state': {
+ info: 'The current state of the HTTP Upstream Server. Status active if set to 1.'
+ },
+ 'nginxplus.http_upstream_server_connections_count': {
+ info: 'The current number of active connections to the HTTP Upstream Server.'
+ },
+ 'nginxplus.http_upstream_server_downtime': {
+ info: 'The time the HTTP Upstream Server has spent in the <b>unavail</b>, <b>checking</b>, and <b>unhealthy</b> states.'
+ },
+ 'nginxplus.http_cache_state': {
+ info: 'HTTP cache current state. <b>Cold</b> means that the cache loader process is still loading data from disk into the cache.'
+ },
+ 'nginxplus.http_cache_iops': {
+ info: '<p>HTTP cache IOPS.</p><p><b>Served</b> - valid, expired, and revalidated responses read from the cache. <b>Written</b> - miss, expired, and bypassed responses written to the cache. <b>Bypassed</b> - miss, expired, and bypass responses.</p>'
+ },
+ 'nginxplus.http_cache_io': {
+ info: '<p>HTTP cache IO.</p><p><b>Served</b> - valid, expired, and revalidated responses read from the cache. <b>Written</b> - miss, expired, and bypassed responses written to the cache. <b>Bypassed</b> - miss, expired, and bypass responses.</p>'
+ },
+ 'nginxplus.http_cache_size': {
+ info: 'The current size of the cache.'
+ },
+ 'nginxplus.stream_server_zone_connections_rate': {
+ info: 'The number of accepted connections to the Stream Server Zone.'
+ },
+ 'nginxplus.stream_server_zone_sessions_per_code_class_rate': {
+ info: 'The number of completed sessions for the Stream Server Zone. Sessions grouped by status code class.'
+ },
+ 'nginxplus.stream_server_zone_traffic_rate': {
+ info: 'The amount of data transferred to and from the Stream Server Zone.'
+ },
+ 'nginxplus.stream_server_zone_connections_processing_count': {
+ info: 'The number of client connections to the Stream Server Zone that are currently being processed.'
+ },
+ 'nginxplus.stream_server_zone_connections_discarded_rate': {
+ info: 'The number of connections to the Stream Server Zone completed without creating a session.'
+ },
+ 'nginxplus.stream_upstream_peers_count': {
+ info: 'The number of Stream Upstream servers.'
+ },
+ 'nginxplus.stream_upstream_zombies_count': {
+ info: 'The current number of HTTP Upstream servers removed from the group but still processing active client connections.'
+ },
+ 'nginxplus.stream_upstream_server_connections_rate': {
+ info: 'The number of connections forwarded to the Stream Upstream Server.'
+ },
+ 'nginxplus.stream_upstream_server_traffic_rate': {
+ info: 'The amount of traffic transferred to and from the Stream Upstream Server.'
+ },
+ 'nginxplus.stream_upstream_server_state': {
+ info: 'The current state of the Stream Upstream Server. Status active if set to 1.'
+ },
+ 'nginxplus.stream_upstream_server_downtime': {
+ info: 'The time the Stream Upstream Server has spent in the <b>unavail</b>, <b>checking</b>, and <b>unhealthy</b> states.'
+ },
+ 'nginxplus.stream_upstream_server_connections_count': {
+ info: 'The current number of connections to the Stream Upstream Server.'
+ },
+ 'nginxplus.resolver_zone_requests_rate': {
+ info: '<p>Resolver zone DNS requests.</p><p><b>Name</b> - requests to resolve names to addresses. <b>Srv</b> - requests to resolve SRV records. <b>Addr</b> - requests to resolve addresses to names.</p>'
+ },
+ 'nginxplus.resolver_zone_responses_rate': {
+ info: '<p>Resolver zone DNS responses.</p><p><b>NoError</b> - successful responses. <b>FormErr</b> - format error responses. <b>ServFail</b> - server failure responses. <b>NXDomain</b> - host not found responses. <b>NotImp</b> - unimplemented responses. <b>Refused</b> - operation refused responses. <b>TimedOut</b> - timed out requests. <b>Unknown</b> - requests completed with an unknown error.</p>'
+ },
+
+ // ------------------------------------------------------------------------
// HTTP check
'httpcheck.responsetime': {
@@ -4488,19 +4857,6 @@ netdataDashboard.context = {
},
// ------------------------------------------------------------------------
- // fping
-
- 'fping.quality': {
- colors: NETDATA.colors[10],
- height: 0.5
- },
-
- 'fping.packets': {
- height: 0.5
- },
-
-
- // ------------------------------------------------------------------------
// containers
'cgroup.cpu_limit': {
diff --git a/web/gui/main.js b/web/gui/main.js
index a2a186703..20f455fda 100644
--- a/web/gui/main.js
+++ b/web/gui/main.js
@@ -4932,8 +4932,7 @@ function handleSignInMessage(e) {
netdataRegistryCallback(registryAgents);
if (e.data.redirectURI && !window.location.href.includes(e.data.redirectURI)) {
- // lgtm false-positive - redirectURI does not come from user input, but from iframe callback
- window.location.replace(e.data.redirectURI); // lgtm[js/client-side-unvalidated-url-redirection]
+ window.location.replace(e.data.redirectURI);
}
}