This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 1753e5e Support Prometheus node-exporter VM metrics monitoring (#6277)
1753e5e is described below
commit 1753e5e0db1216de33b57ef712e937849874167c
Author: wankai123 <[email protected]>
AuthorDate: Sat Jan 30 09:17:59 2021 +0800
Support Prometheus node-exporter VM metrics monitoring (#6277)
---
CHANGES.md | 1 +
docs/en/setup/backend/backend-receivers.md | 1 +
.../src/main/resources/otel-oc-rules/vm.yaml | 96 ++++++++++
.../main/resources/ui-initialized-templates/vm.yml | 203 +++++++++++++++++++++
4 files changed, 301 insertions(+)
diff --git a/CHANGES.md b/CHANGES.md
index b901b4a..46dc3a0 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -81,6 +81,7 @@ Release Notes.
* Chore: Remove duplicate codes in Envoy ALS handler.
* Remove the strict rule of OAL disable statement parameter.
* Fix a legal metric query adoption bug. Don't support global level metric
query.
+* Add VM MAL and ui-template configration, support Prometheus node-exporter VM
metrics that pushed from OpenTelemetry-collector.
* Remove unused log query parameters.
#### UI
diff --git a/docs/en/setup/backend/backend-receivers.md
b/docs/en/setup/backend/backend-receivers.md
index e1777ff..b88ed64 100644
--- a/docs/en/setup/backend/backend-receivers.md
+++ b/docs/en/setup/backend/backend-receivers.md
@@ -123,6 +123,7 @@ to be the identification of the metric data.
|----|----|-----|----|
|istio-controlplane| Metrics of Istio control panel |
otel-oc-rules/istio-controlplane.yaml | Istio Control Panel -> OpenTelemetry
Collector --OC format--> SkyWalking OAP Server |
|oap| Metrics of SkyWalking OAP server itself | otel-oc-rules/oap.yaml |
SkyWalking OAP Server(SelfObservability) -> OpenTelemetry Collector --OC
format--> SkyWalking OAP Server |
+|vm| Metrics of VMs | otel-oc-rules/vm.yaml | Prometheus node-exporter(VMs) ->
OpenTelemetry Collector --OC format--> SkyWalking OAP Server |
## Meter receiver
diff --git
a/oap-server/server-bootstrap/src/main/resources/otel-oc-rules/vm.yaml
b/oap-server/server-bootstrap/src/main/resources/otel-oc-rules/vm.yaml
new file mode 100644
index 0000000..e0f25c2
--- /dev/null
+++ b/oap-server/server-bootstrap/src/main/resources/otel-oc-rules/vm.yaml
@@ -0,0 +1,96 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This will parse a textual representation of a duration. The formats
+# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS}
+# with days considered to be exactly 24 hours.
+# <p>
+# Examples:
+# <pre>
+# "PT20.345S" -- parses as "20.345 seconds"
+# "PT15M" -- parses as "15 minutes" (where a minute is 60 seconds)
+# "PT10H" -- parses as "10 hours" (where an hour is 3600 seconds)
+# "P2D" -- parses as "2 days" (where a day is 24 hours or 86400
seconds)
+# "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes"
+# "P-6H3M" -- parses as "-6 hours and +3 minutes"
+# "-P6H3M" -- parses as "-6 hours and -3 minutes"
+# "-P-6H+3M" -- parses as "+6 hours and -3 minutes"
+# </pre>
+expSuffix: tag({tags -> tags.node_identifier_host_name = 'vm::' +
tags.node_identifier_host_name}).service(['node_identifier_host_name'])
+metricPrefix: meter_vm
+metricsRules:
+
+ #node cpu
+ - name: cpu_total_percentage
+ exp: (node_cpu_seconds_total * 100).tagNotEqual('mode' ,
'idle').sum(['node_identifier_host_name']).rate('PT1M')
+ - name: cpu_average_used
+ exp: (node_cpu_seconds_total * 100).sum(['node_identifier_host_name' ,
'mode']).rate('PT1M')
+ - name: cpu_load1
+ exp: node_load1 * 100
+ - name: cpu_load5
+ exp: node_load5 * 100
+ - name: cpu_load15
+ exp: node_load15 * 100
+
+ #node Memory
+ - name: memory_total
+ exp: node_memory_MemTotal_bytes
+ - name: memory_available
+ exp: node_memory_MemAvailable_bytes
+ - name: memory_used
+ exp: node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes
+ - name: memory_swap_free
+ exp: node_memory_SwapFree_bytes
+ - name: memory_swap_total
+ exp: node_memory_SwapTotal_bytes
+ - name: memory_swap_percentage
+ exp: 100 - ((node_memory_SwapFree_bytes * 100) /
node_memory_SwapTotal_bytes)
+
+ #node filesystem
+ - name: filesystem_percentage
+ exp: 100 - ((node_filesystem_avail_bytes *
100).sum(['node_identifier_host_name' , 'mountpoint']) /
node_filesystem_size_bytes.sum(['node_identifier_host_name' , 'mountpoint']))
+
+ #node disk
+ - name: disk_read
+ exp:
node_disk_read_bytes_total.sum(['node_identifier_host_name']).rate('PT1M')
+ - name: disk_written
+ exp:
node_disk_written_bytes_total.sum(['node_identifier_host_name']).rate('PT1M')
+
+ #node network
+ - name: network_receive
+ exp:
node_network_receive_bytes_total.sum(['node_identifier_host_name']).irate()
+ - name: network_transmit
+ exp:
node_network_transmit_bytes_total.sum(['node_identifier_host_name']).irate()
+
+ #node netstat
+ - name: tcp_curr_estab
+ exp: node_netstat_Tcp_CurrEstab
+ - name: tcp_tw
+ exp: node_sockstat_TCP_tw
+ - name: tcp_alloc
+ exp: node_sockstat_TCP_alloc
+ - name: sockets_used
+ exp: node_sockstat_sockets_used
+ - name: udp_inuse
+ exp: node_sockstat_UDP_inuse
+
+ #node filefd
+ - name: filefd_allocated
+ exp: node_filefd_allocated
+ - name: filefd_maximum
+ exp: node_filefd_maximum
+
+
+
diff --git
a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/vm.yml
b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/vm.yml
new file mode 100644
index 0000000..c29c74a
--- /dev/null
+++
b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/vm.yml
@@ -0,0 +1,203 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# UI templates initialized file includes the default template when the
SkyWalking OAP starts up at the first time.
+#
+# Also, SkyWalking would detect the existing templates in the database, once
they are missing, all templates in this file
+# could be added automatically.
+
+templates:
+ - name: "VM"
+ # The type includes DASHBOARD, TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT.
+ # DASHBOARD type templates could have multiple definitions, by using
different names.
+ # TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT type templates should be defined
once, as they are used in the topology page only.
+ type: "DASHBOARD"
+ # Configuration could be defined through UI, and use `export` to format in
the standard JSON.
+ configuration: |-
+ [
+ {
+ "name": "VM",
+ "type": "service",
+ "children": [
+ {
+ "name": "VM",
+ "children": [
+ {
+ "width": "4",
+ "title": "CPU Usage",
+ "height": "100",
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName": "meter_vm_cpu_total_percentage",
+ "queryMetricType": "readMetricsValue",
+ "chartType": "ChartNum",
+ "unit": "%"
+ },
+ {
+ "width": "4",
+ "title": "Memory RAM Usage",
+ "height": "100",
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName": "meter_vm_memory_used",
+ "queryMetricType": "readMetricsValue",
+ "chartType": "ChartNum",
+ "unit": "MB",
+ "aggregation": "/",
+ "aggregationNum": "1048576"
+ },
+ {
+ "width": "4",
+ "title": "Memory Swap Usage",
+ "height": "100",
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName": "meter_vm_memory_swap_percentage",
+ "queryMetricType": "readMetricsValue",
+ "chartType": "ChartNum",
+ "unit": "%"
+ },
+ {
+ "width": "4",
+ "title": "CPU Average Used",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "LABELED_VALUE",
+ "queryMetricType": "readLabeledMetricsValues",
+ "chartType": "ChartLine",
+ "metricName": "meter_vm_cpu_average_used",
+ "metricLabels": "",
+ "unit": "%",
+ "labelsIndex": ""
+ },
+ {
+ "width": "4",
+ "title": "CPU Load",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName":
"meter_vm_cpu_load1,meter_vm_cpu_load5,meter_vm_cpu_load15",
+ "queryMetricType": "readMetricsValues",
+ "chartType": "ChartLine",
+ "aggregation": "/",
+ "aggregationNum": "100"
+ },
+ {
+ "width": "4",
+ "title": "Memory RAM",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName":
"meter_vm_memory_total,meter_vm_memory_available,meter_vm_memory_used",
+ "queryMetricType": "readMetricsValues",
+ "chartType": "ChartArea",
+ "aggregation": "/",
+ "aggregationNum": "1048576",
+ "unit": "MB"
+ },
+ {
+ "width": "4",
+ "title": "Memory Swap",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName":
"meter_vm_memory_swap_free,meter_vm_memory_swap_total",
+ "queryMetricType": "readMetricsValues",
+ "chartType": "ChartArea",
+ "aggregation": "/",
+ "aggregationNum": "1048576",
+ "unit": "MB"
+ },
+ {
+ "width": "4",
+ "title": "File System Mountpoint Usage",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "LABELED_VALUE",
+ "metricName": "meter_vm_filesystem_percentage",
+ "queryMetricType": "readLabeledMetricsValues",
+ "chartType": "ChartLine",
+ "aggregation": "+",
+ "aggregationNum": "0",
+ "unit": "%"
+ },
+ {
+ "width": "4",
+ "title": "Disk R/W",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName": "meter_vm_disk_read,meter_vm_disk_written",
+ "queryMetricType": "readMetricsValues",
+ "chartType": "ChartLine",
+ "aggregation": "/",
+ "aggregationNum": "1024",
+ "unit": "KB/s"
+ },
+ {
+ "width": "4",
+ "title": "Network Bandwidth Usage",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName":
"meter_vm_network_receive,meter_vm_network_transmit",
+ "queryMetricType": "readMetricsValues",
+ "chartType": "ChartArea",
+ "aggregation": "/",
+ "aggregationNum": "1024",
+ "unit": "KB/s"
+ },
+ {
+ "width": "4",
+ "title": "Network Status",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName":
"meter_vm_tcp_curr_estab,meter_vm_tcp_tw,meter_vm_tcp_alloc,meter_vm_sockets_used,meter_vm_udp_inuse",
+ "queryMetricType": "readMetricsValues",
+ "chartType": "ChartLine"
+ },
+ {
+ "width": "4",
+ "title": "Filefd Allocated",
+ "height": 350,
+ "entityType": "Service",
+ "independentSelector": false,
+ "metricType": "REGULAR_VALUE",
+ "metricName": "meter_vm_filefd_allocated",
+ "queryMetricType": "readMetricsValues",
+ "chartType": "ChartLine"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ # Activated as the DASHBOARD type, makes this templates added into the UI
page automatically.
+ # False means providing a basic template, user needs to add it manually.
+ activated: true
+ # True means wouldn't show up on the dashboard. Only keeps the definition
in the storage.
+ disabled: false
\ No newline at end of file