未验证 提交 109e6dea 编写于 作者: Y yswdqz 提交者: GitHub

Support MySQL/PostgreSQL cluster mode (#9937)

上级 61607bdc
......@@ -61,14 +61,14 @@
<include>trace-sampling-policy-settings.yml</include>
<include>oal/*.oal</include>
<include>fetcher-prom-rules/*.yaml</include>
<include>envoy-metrics-rules/*.yaml</include>
<include>envoy-metrics-rules/**</include>
<include>meter-analyzer-config/*.yaml</include>
<include>zabbix-rules/*.yaml</include>
<include>openapi-definitions/*/*.yaml</include>
<include>otel-rules/**</include>
<include>ui-initialized-templates/*/*.json</include>
<include>lal/*</include>
<include>log-mal-rules/*</include>
<include>log-mal-rules/**</include>
<include>telegraf-rules/*</include>
</includes>
<outputDirectory>config</outputDirectory>
......
......@@ -83,6 +83,7 @@
* Support `sampledTrace` in LAL.
* Support multiple rules with different names under the same layer of LAL script.
* (Optimization) Reduce the buffer size(queue) of MAL(only) metric streams. Set L1 queue size as 1/20, L2 queue size as 1/2.
* Support monitoring MySQL/PostgreSQL in the cluster mode.
* [**Breaking Change**] Migrate to BanyanDB v0.2.0.
* Adopt new OR logical operator for,
1. `MeasureIDs` query
......
......@@ -14,7 +14,8 @@ SkyWalking leverages prometheus/mysqld_exporter for collecting metrics data. It
3. Config SkyWalking [OpenTelemetry receiver](opentelemetry-receiver.md).
### MySQL Monitoring
MySQL monitoring provides monitoring of the status and resources of the MySQL server. MySQL server is cataloged as a `Layer: MYSQL` `Service` in OAP.
MySQL monitoring provides monitoring of the status and resources of the MySQL server. MySQL cluster is cataloged as a `Layer: MYSQL` `Service` in OAP.
Each MySQL server is cataloged as an `Instance` in OAP.
#### Supported Metrics
| Monitoring Panel | Unit | Metric Name | Description | Data Source |
|-----|------|-----|-----|-----|
......
......@@ -64,8 +64,8 @@ SkyWalking leverages [fluentbit](https://fluentbit.io/) or other log agents for
3. Config PostgreSQL to enable slow log. [Example](../../../../test/e2e-v2/cases/postgresql/postgres-exporter/postgresql.conf).
### Slow SQL Monitoring
Slow SQL monitoring provides monitoring of the slow SQL statements of the PostgreSQL server. PostgreSQL server is cataloged as a `Layer: POSTGRESQL` `Service` in OAP.
Slow SQL monitoring provides monitoring of the slow SQL statements of the PostgreSQL server. PostgreSQL Cluster is cataloged as a `Layer: POSTGRESQL` `Service` in OAP.
Each PostgreSQL server is cataloged as an `Instance` in OAP.
#### Supported Metrics
| Monitoring Panel | Unit | Metric Name | Description | Data Source |
|-----|------|-----|-----|-----|
......
......@@ -356,7 +356,7 @@ receiver-otel:
selector: ${SW_OTEL_RECEIVER:default}
default:
enabledHandlers: ${SW_OTEL_RECEIVER_ENABLED_HANDLERS:"oc,otlp"}
enabledOtelRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_RULES:"apisix,k8s/*,istio-controlplane,vm,mysql,postgresql,oap"}
enabledOtelRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_RULES:"apisix,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap"}
receiver-zipkin:
selector: ${SW_RECEIVER_ZIPKIN:-}
......
# 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>
filter: "{ tags -> tags.job_name == 'mysql-monitoring' }" # The OpenTelemetry job name
expSuffix: tag({tags -> tags.host_name = 'mysql::' + tags.host_name}).service(['host_name'] , Layer.MYSQL).instance(['host_name'], ['service_instance_id'], Layer.MYSQL)
metricPrefix: meter_mysql
metricsRules:
# mysql configurations
- name: instance_uptime
exp: mysql_global_status_uptime
- name: instance_innodb_buffer_pool_size
exp: mysql_global_variables_innodb_buffer_pool_size
- name: instance_max_connections
exp: mysql_global_variables_max_connections
- name: instance_thread_cache_size
exp: mysql_global_variables_thread_cache_size
# database throughput
- name: instance_commands_insert_rate
exp: mysql_global_status_commands_total.tagEqual('command','insert').rate('PT1M')
- name: instance_commands_select_rate
exp: mysql_global_status_commands_total.tagEqual('command','select').rate('PT1M')
- name: instance_commands_delete_rate
exp: mysql_global_status_commands_total.tagEqual('command','delete').rate('PT1M')
- name: instance_commands_update_rate
exp: mysql_global_status_commands_total.tagEqual('command','update').rate('PT1M')
- name: instance_qps
exp: mysql_global_status_queries.rate('PT1M')
- name: instance_tps
exp: mysql_global_status_commands_total.tagMatch('command','rollback|commit').rate('PT1M')
# connections
## threads
- name: instance_threads_connected
exp: mysql_global_status_threads_connected
- name: instance_threads_created
exp: mysql_global_status_threads_created
- name: instance_threads_running
exp: mysql_global_status_threads_running
- name: instance_threads_cached
exp: mysql_global_status_threads_cached
## connect
- name: instance_connects_aborted
exp: mysql_global_status_aborted_connects
- name: instance_connects_available
exp: mysql_global_variables_max_connections.sum(['host_name','service_instance_id']) - mysql_global_status_threads_connected.sum(['host_name','service_instance_id'])
- name: instance_connection_errors_max_connections
exp: mysql_global_status_connection_errors_total.tagEqual('error','max_connection')
- name: instance_connection_errors_internal
exp: mysql_global_status_connection_errors_total.tagEqual('error','internal')
# slow queries
- name: instance_slow_queries_rate
exp: mysql_global_status_slow_queries.rate('PT1M')
......@@ -32,16 +32,6 @@ filter: "{ tags -> tags.job_name == 'mysql-monitoring' }" # The OpenTelemetry jo
expSuffix: tag({tags -> tags.host_name = 'mysql::' + tags.host_name}).service(['host_name'] , Layer.MYSQL)
metricPrefix: meter_mysql
metricsRules:
# mysql configurations
- name: uptime
exp: mysql_global_status_uptime
- name: innodb_buffer_pool_size
exp: mysql_global_variables_innodb_buffer_pool_size
- name: max_connections
exp: mysql_global_variables_max_connections
- name: thread_cache_size
exp: mysql_global_variables_thread_cache_size
# database throughput
- name: commands_insert_rate
exp: mysql_global_status_commands_total.tagEqual('command','insert').rate('PT1M')
......@@ -54,7 +44,7 @@ metricsRules:
- name: qps
exp: mysql_global_status_queries.rate('PT1M')
- name: tps
exp: mysql_global_status_commands_total.tagMatch('command','rollback|commit').rate('PT1M')
exp: mysql_global_status_commands_total.tagMatch('command','rollback|commit').sum(['host_name']).rate('PT1M')
# connections
## threads
......
# 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>
filter: "{ tags -> tags.job_name == 'postgresql-monitoring' }" # The OpenTelemetry job name
expSuffix: tag({tags -> tags.host_name = 'postgresql::' + tags.host_name}).service(['host_name'] , Layer.POSTGRESQL).instance(['host_name'],['service_instance_id'], Layer.POSTGRESQL)
metricPrefix: meter_pg
metricsRules:
# postgresql configurations
- name: instance_shared_buffers
exp: pg_settings_shared_buffers_bytes
- name: instance_effective_cache
exp: pg_settings_effective_cache_size_bytes
- name: instance_maintenance_work_mem
exp: pg_settings_maintenance_work_mem_bytes
- name: instance_work_mem
exp: pg_settings_work_mem_bytes
- name: instance_seq_page_cost
exp: pg_settings_seq_page_cost
- name: instance_random_page_cost
exp: pg_settings_random_page_cost
- name: instance_max_wal_size
exp: pg_settings_max_wal_size_bytes
- name: instance_max_parallel_workers
exp: pg_settings_max_parallel_workers
- name: instance_max_worker_processes
exp: pg_settings_max_worker_processes
# dashboards
## rows
- name: instance_fetched_rows_rate
exp: pg_stat_database_tup_fetched.sum(['datname','host_name','service_instance_id']).rate('PT1M')
- name: instance_deleted_rows_rate
exp: pg_stat_database_tup_deleted.sum(['datname','host_name','service_instance_id']).rate('PT1M')
- name: instance_inserted_rows_rate
exp: pg_stat_database_tup_inserted.sum(['datname','host_name','service_instance_id']).rate('PT1M')
- name: instance_updated_rows_rate
exp: pg_stat_database_tup_updated.sum(['datname','host_name','service_instance_id']).rate('PT1M')
- name: instance_returned_rows_rate
exp: pg_stat_database_tup_returned.sum(['datname','host_name','service_instance_id']).rate('PT1M')
## locks
- name: instance_locks_count
exp: pg_locks_count.tag({tags -> tags.mode = tags.datname + ":" + tags.mode}).sum(['mode','host_name','service_instance_id'])
## sessions
- name: instance_active_sessions
exp: pg_stat_activity_count.tagEqual('state','active').sum(['datname' , 'host_name','service_instance_id'])
- name: instance_idle_sessions
exp: pg_stat_activity_count.tagMatch('state','idle|idle in transaction|idle in transaction (aborted)').sum(['datname','host_name','service_instance_id'])
## transactions
- name: instance_committed_transactions_rate
exp: pg_stat_database_xact_commit.sum(['datname','host_name','service_instance_id']).rate('PT1M')
- name: instance_rolled_back_transactions_rate
exp: pg_stat_database_xact_rollback.sum(['datname','host_name','service_instance_id']).rate('PT1M')
## cache and temporary file
- name: instance_cache_hit_rate
exp: (pg_stat_database_blks_hit*100 / (pg_stat_database_blks_read + pg_stat_database_blks_hit)).sum(['datname','host_name','service_instance_id'])
- name: instance_temporary_files_rate
exp: pg_stat_database_temp_bytes.sum(['datname','host_name','service_instance_id']).rate('PT1M')
## checkpoint
- name: instance_checkpoint_write_time_rate
exp: pg_stat_bgwriter_checkpoint_write_time_total.rate('PT1M')
- name: instance_checkpoint_sync_time_rate
exp: pg_stat_bgwriter_checkpoint_sync_time_total.rate('PT1M')
- name: instance_checkpoint_req_rate
exp: pg_stat_bgwriter_checkpoints_req_total.rate('PT1M')
- name: instance_checkpoints_timed_rate
exp: pg_stat_bgwriter_checkpoints_timed_total.rate('PT1M')
## conflicts and deadlocks
- name: instance_conflicts_rate
exp: pg_stat_database_conflicts.sum(['datname','host_name','service_instance_id']).rate('PT1M')
- name: instance_deadlocks_rate
exp: pg_stat_database_deadlocks.sum(['datname','host_name','service_instance_id']).rate('PT1M')
## buffers
- name: instance_buffers_checkpoint
exp: pg_stat_bgwriter_buffers_checkpoint.rate('PT1M')
- name: instance_buffers_clean
exp: pg_stat_bgwriter_buffers_clean.rate('PT1M')
- name: instance_buffers_backend_fsync
exp: pg_stat_bgwriter_buffers_backend_fsync.rate('PT1M')
- name: instance_buffers_alloc
exp: pg_stat_bgwriter_buffers_alloc.rate('PT1M')
- name: instance_buffers_backend
exp: pg_stat_bgwriter_buffers_backend.rate('PT1M')
......@@ -32,59 +32,39 @@ filter: "{ tags -> tags.job_name == 'postgresql-monitoring' }" # The OpenTelemet
expSuffix: tag({tags -> tags.host_name = 'postgresql::' + tags.host_name}).service(['host_name'] , Layer.POSTGRESQL)
metricPrefix: meter_pg
metricsRules:
# postgresql configurations
- name: shared_buffers
exp: pg_settings_shared_buffers_bytes
- name: effective_cache
exp: pg_settings_effective_cache_size_bytes
- name: maintenance_work_mem
exp: pg_settings_maintenance_work_mem_bytes
- name: work_mem
exp: pg_settings_work_mem_bytes
- name: seq_page_cost
exp: pg_settings_seq_page_cost
- name: random_page_cost
exp: pg_settings_random_page_cost
- name: max_wal_size
exp: pg_settings_max_wal_size_bytes
- name: max_parallel_workers
exp: pg_settings_max_parallel_workers
- name: max_worker_processes
exp: pg_settings_max_worker_processes
# dashboards
## rows
- name: fetched_rows_rate
exp: pg_stat_database_tup_fetched.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_tup_fetched.sum(['service_instance_id','host_name']).rate('PT1M')
- name: deleted_rows_rate
exp: pg_stat_database_tup_deleted.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_tup_deleted.sum(['service_instance_id','host_name']).rate('PT1M')
- name: inserted_rows_rate
exp: pg_stat_database_tup_inserted.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_tup_inserted.sum(['service_instance_id','host_name']).rate('PT1M')
- name: updated_rows_rate
exp: pg_stat_database_tup_updated.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_tup_updated.sum(['service_instance_id','host_name']).rate('PT1M')
- name: returned_rows_rate
exp: pg_stat_database_tup_returned.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_tup_returned.sum(['service_instance_id','host_name']).rate('PT1M')
## locks
- name: locks_count
exp: pg_locks_count.tag({tags -> tags.mode = tags.datname + ":" + tags.mode}).sum(['mode','host_name'])
exp: pg_locks_count.tag({tags -> tags.mode = tags.datname + ":" + tags.mode}).sum(['service_instance_id','host_name'])
## sessions
- name: active_sessions
exp: pg_stat_activity_count.tagEqual('state','active').sum(['datname' , 'host_name'])
exp: pg_stat_activity_count.tagEqual('state','active').sum(['service_instance_id' , 'host_name'])
- name: idle_sessions
exp: pg_stat_activity_count.tagMatch('state','idle|idle in transaction|idle in transaction (aborted)').sum(['datname' , 'host_name'])
exp: pg_stat_activity_count.tagMatch('state','idle|idle in transaction|idle in transaction (aborted)').sum(['service_instance_id' , 'host_name'])
## transactions
- name: committed_transactions_rate
exp: pg_stat_database_xact_commit.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_xact_commit.sum(['service_instance_id','host_name']).rate('PT1M')
- name: rolled_back_transactions_rate
exp: pg_stat_database_xact_rollback.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_xact_rollback.sum(['service_instance_id','host_name']).rate('PT1M')
## cache and temporary file
- name: cache_hit_rate
exp: (pg_stat_database_blks_hit*100 / (pg_stat_database_blks_read + pg_stat_database_blks_hit)).sum(['datname','host_name'])
exp: (pg_stat_database_blks_hit*100 / (pg_stat_database_blks_read + pg_stat_database_blks_hit)).sum(['service_instance_id','host_name'])
- name: temporary_files_rate
exp: pg_stat_database_temp_bytes.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_temp_bytes.sum(['service_instance_id','host_name']).rate('PT1M')
## checkpoint
- name: checkpoint_write_time_rate
......@@ -98,9 +78,9 @@ metricsRules:
## conflicts and deadlocks
- name: conflicts_rate
exp: pg_stat_database_conflicts.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_conflicts.sum(['service_instance_id','host_name']).rate('PT1M')
- name: deadlocks_rate
exp: pg_stat_database_deadlocks.sum(['datname','host_name']).rate('PT1M')
exp: pg_stat_database_deadlocks.sum(['service_instance_id','host_name']).rate('PT1M')
## buffers
- name: buffers_checkpoint
......
/**
* 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.
*/
[
{
"id":"mysql-instance ",
"configuration":{
"children":[
{
"x":0,
"y":0,
"w":6,
"h":9,
"i":"0",
"type":"Widget",
"metricTypes":[
"readMetricsValue"
],
"metrics":[
"meter_mysql_instance_uptime"
],
"graph":{
"type":"Card",
"fontSize":40,
"textAlign":"center",
"showUnit":true
},
"metricConfig":[
{
"calculation":"secondToDay"
}
],
"widget":{
"title":"MySQL Uptime (day)"
}
},
{
"x":0,
"y":9,
"w":6,
"h":10,
"i":"1",
"type":"Widget",
"metricTypes":[
"readMetricsValues"
],
"metrics":[
"meter_mysql_instance_qps"
],
"graph":{
"type":"Line",
"step":false,
"smooth":false,
"showSymbol":false,
"showXAxis":true,
"showYAxis":true
},
"widget":{
"title":"Current QPS"
}
},
{
"x":12,
"y":0,
"w":6,
"h":9,
"i":"2",
"type":"Widget",
"metricTypes":[
"readMetricsValue"
],
"metrics":[
"meter_mysql_instance_innodb_buffer_pool_size"
],
"graph":{
"type":"Card",
"fontSize":40,
"textAlign":"center",
"showUnit":true
},
"metricConfig":[
{
"calculation":"byteToMB"
}
],
"widget":{
"title":"Innodb Buffer Pool Size (MB)"
}
},
{
"x":6,
"y":0,
"w":6,
"h":9,
"i":"3",
"type":"Widget",
"metricTypes":[
"readMetricsValue"
],
"metrics":[
"meter_mysql_instance_max_connections"
],
"graph":{
"type":"Card",
"fontSize":40,
"textAlign":"center",
"showUnit":true
},
"widget":{
"title":"Max Connections"
}
},
{
"x":18,
"y":0,
"w":6,
"h":9,
"i":"4",
"type":"Widget",
"metricTypes":[
"readMetricsValue"
],
"metrics":[
"meter_mysql_instance_thread_cache_size"
],
"graph":{
"type":"Card",
"fontSize":40,
"textAlign":"center",
"showUnit":true
},
"widget":{
"title":"Thread Cache Size"
}
},
{
"x":6,
"y":9,
"w":6,
"h":10,
"i":"5",
"type":"Widget",
"metricTypes":[
"readMetricsValues"
],
"metrics":[
"meter_mysql_instance_tps"
],
"graph":{
"type":"Line",
"step":false,
"smooth":false,
"showSymbol":false,
"showXAxis":true,
"showYAxis":true
},
"widget":{
"title":"Current TPS"
}
},
{
"x":12,
"y":9,
"w":6,
"h":10,
"i":"6",
"type":"Widget",
"metricTypes":[
"readMetricsValues",
"readMetricsValues",
"readMetricsValues",
"readMetricsValues"
],
"metrics":[
"meter_mysql_instance_commands_insert_rate",
"meter_mysql_instance_commands_select_rate",
"meter_mysql_instance_commands_delete_rate",
"meter_mysql_instance_commands_update_rate"
],
"graph":{
"type":"Area",
"opacity":0.4,
"showXAxis":true,
"showYAxis":true
},
"widget":{
"title":"Commands Trend (rows per second)"
}
},
{
"x":6,
"y":19,
"w":6,
"h":10,
"i":"7",
"type":"Widget",
"metricTypes":[
"readMetricsValues",
"readMetricsValues",
"readMetricsValues",
"readMetricsValues"
],
"metrics":[
"meter_mysql_instance_threads_cached",
"meter_mysql_instance_threads_running",
"meter_mysql_instance_threads_created",
"meter_mysql_instance_threads_connected"
],
"graph":{
"type":"Area",
"opacity":0.4,
"showXAxis":true,
"showYAxis":true
},
"widget":{
"title":"Threads"
}
},
{
"x":0,
"y":19,
"w":6,
"h":10,
"i":"8",
"type":"Widget",
"metricTypes":[
"readMetricsValues",
"readMetricsValues"
],
"metrics":[
"meter_mysql_instance_connects_available",
"meter_mysql_instance_connects_aborted"
],
"graph":{
"type":"Line",
"step":false,
"smooth":false,
"showSymbol":false,
"showXAxis":true,
"showYAxis":true
},
"widget":{
"title":"Connects"
}
},
{
"x":18,
"y":9,
"w":6,
"h":10,
"i":"10",
"type":"Widget",
"metricTypes":[
"readMetricsValues"
],
"metrics":[
"meter_mysql_instance_slow_queries_rate"
],
"graph":{
"type":"Line",
"step":false,
"smooth":false,
"showSymbol":false,
"showXAxis":true,
"showYAxis":true
},
"widget":{
"title":"Slow Queries Trend (queries per second)"
}
},
{
"x":12,
"y":19,
"w":6,
"h":10,
"i":"11",
"type":"Widget",
"metricTypes":[
"readMetricsValues",
"readMetricsValues"
],
"metrics":[
"meter_mysql_instance_connection_errors_internal",
"meter_mysql_instance_connection_errors_max_connections"
],
"graph":{
"type":"Line",
"step":false,
"smooth":false,
"showSymbol":false,
"showXAxis":true,
"showYAxis":true
},
"widget":{
"title":"Connection Errors"
}
}
],
"layer":"MYSQL",
"entity":"ServiceInstance",
"name":"MySQL-Instance",
"id":"mysql-instance",
"isRoot":false
}
}
]
\ No newline at end of file
......@@ -17,7 +17,7 @@
[
{
"id":"b6e3763c-882d-417f-8556-3cf0187cb8db",
"id":"mysql-root",
"configuration":{
"children":[
{
......@@ -53,7 +53,7 @@
}
}
],
"id":"b6e3763c-882d-417f-8556-3cf0187cb8db",
"id":"mysql-root",
"layer":"MYSQL",
"entity":"All",
"name":"MySQL-Root",
......
......@@ -17,7 +17,7 @@
[
{
"id":"2ca19857-dcdb-491a-9739-d7ab79beb60b",
"id":"mysql-service",
"configuration":{
"children":[
{
......@@ -35,35 +35,7 @@
"x":0,
"y":0,
"w":6,
"h":9,
"i":"0",
"type":"Widget",
"metricTypes":[
"readMetricsValue"
],
"metrics":[
"meter_mysql_uptime"
],
"graph":{
"type":"Card",
"fontSize":40,
"textAlign":"center",
"showUnit":true
},
"metricConfig":[
{
"calculation":"secondToDay"
}
],
"widget":{
"title":"MySQL Uptime (day)"
}
},
{
"x":0,
"y":9,
"w":6,
"h":10,
"h":13,
"i":"1",
"type":"Widget",
"metricTypes":[
......@@ -84,85 +56,11 @@
"title":"Current QPS"
}
},
{
"x":12,
"y":0,
"w":6,
"h":9,
"i":"2",
"type":"Widget",
"metricTypes":[
"readMetricsValue"
],
"metrics":[
"meter_mysql_innodb_buffer_pool_size"
],
"graph":{
"type":"Card",
"fontSize":40,
"textAlign":"center",
"showUnit":true
},
"metricConfig":[
{
"calculation":"byteToMB"
}
],
"widget":{
"title":"Innodb Buffer Pool Size (MB)"
}
},
{
"x":6,
"y":0,
"w":6,
"h":9,
"i":"3",
"type":"Widget",
"metricTypes":[
"readMetricsValue"
],
"metrics":[
"meter_mysql_max_connections"
],
"graph":{
"type":"Card",
"fontSize":40,
"textAlign":"center",
"showUnit":true
},
"widget":{
"title":"Max Connections"
}
},
{
"x":18,
"y":0,
"w":6,
"h":9,
"i":"4",
"type":"Widget",
"metricTypes":[
"readMetricsValue"
],
"metrics":[
"meter_mysql_thread_cache_size"
],
"graph":{
"type":"Card",
"fontSize":40,
"textAlign":"center",
"showUnit":true
},
"widget":{
"title":"Thread Cache Size"
}
},
{
"x":6,
"y":9,
"w":6,
"h":10,
"h":13,
"i":"5",
"type":"Widget",
"metricTypes":[
......@@ -185,9 +83,9 @@
},
{
"x":12,
"y":9,
"y":0,
"w":6,
"h":10,
"h":13,
"i":"6",
"type":"Widget",
"metricTypes":[
......@@ -214,9 +112,9 @@
},
{
"x":6,
"y":19,
"y":13,
"w":6,
"h":10,
"h":14,
"i":"7",
"type":"Widget",
"metricTypes":[
......@@ -243,9 +141,9 @@
},
{
"x":0,
"y":19,
"y":13,
"w":6,
"h":10,
"h":13,
"i":"8",
"type":"Widget",
"metricTypes":[
......@@ -270,9 +168,9 @@
},
{
"x":18,
"y":9,
"y":0,
"w":6,
"h":10,
"h":13,
"i":"10",
"type":"Widget",
"metricTypes":[
......@@ -295,9 +193,9 @@
},
{
"x":12,
"y":19,
"y":13,
"w":6,
"h":10,
"h":14,
"i":"11",
"type":"Widget",
"metricTypes":[
......@@ -352,6 +250,36 @@
]
}
]
},
{
"name":"Instances",
"children":[
{
"x":0,
"y":0,
"w":24,
"h":29,
"i":"0",
"type":"Widget",
"graph":{
"type":"InstanceList",
"dashboardName":"MySQL-Instance",
"fontSize":12
},
"metrics":[
"meter_mysql_instance_uptime"
],
"metricTypes":[
"readMetricsValue",
""
],
"metricConfig":[
{
"calculation":"secondToDay"
}
]
}
]
}
]
}
......@@ -359,8 +287,8 @@
"layer":"MYSQL",
"entity":"Service",
"name":"MySQL-Service",
"id":"2ca19857-dcdb-491a-9739-d7ab79beb60b",
"id":"mysql-service",
"isRoot":false
}
}
]
]
\ No newline at end of file
......@@ -17,7 +17,7 @@
[
{
"id":"90ec4ee8-3df2-4bd9-bcb1-2d50cbe49634",
"id":"postgresql-root",
"configuration":{
"children":[
{
......@@ -56,7 +56,7 @@
"layer":"POSTGRESQL",
"entity":"All",
"name":"PostgreSQL-Root",
"id":"90ec4ee8-3df2-4bd9-bcb1-2d50cbe49634",
"id":"postgresql-root",
"isRoot":true
}
}
......
......@@ -15,44 +15,69 @@
# This file is used to show how to write configuration files and can be used to test.
cases:
# service list
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
expected: expected/service.yml
# metrics
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_uptime --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_innodb_buffer_pool_size --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_max_connections --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_thread_cache_size --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_select_rate --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_insert_rate --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_update_rate --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_delete_rate --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_qps --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_tps --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
cases:
# service list
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
expected: expected/service.yml
# service metrics
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_select_rate --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_insert_rate --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_update_rate --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_delete_rate --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_qps --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_tps --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_connected --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_created --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_running --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_connected --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_created --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_running --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_connects_aborted --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_connects_available --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
# slow sql
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql records list --name=top_n_database_statement |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/db-has-value.yml
\ No newline at end of file
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_connects_aborted --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_connects_available --service-name=mysql::root[root] |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
# instance metrics
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_uptime --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_innodb_buffer_pool_size --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_max_connections --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_thread_cache_size --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_select_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_insert_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_update_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_delete_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_qps --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_tps --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_connected --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_created --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_running --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_connects_aborted --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_connects_available --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
# slow sql
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql records list --name=top_n_database_statement |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/db-has-value.yml
\ No newline at end of file
......@@ -46,12 +46,25 @@ services:
- "MYSQL_ROOT_PASSWORD=password"
- "MYSQL_DATABASE=swtest"
ports:
- 3306:3306
- 3306
healthcheck:
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306"]
interval: 5s
timeout: 60s
retries: 120
mysql_2: &mysql
image: mysql:8.0.13
networks:
- e2e
volumes:
- ../mysql-slowsql/my.cnf:/etc/my.cnf
environment:
- "MYSQL_ROOT_PASSWORD=password"
- "MYSQL_DATABASE=swtest"
ports:
- 3306
mysql_3:
<<: *mysql
mysql-load:
image: mysql:8.0.13
depends_on:
......@@ -65,6 +78,32 @@ services:
command:
- -c
- "mysql -h mysql -uroot -ppassword < /docker/mock.sql"
mysql-load_2:
image: mysql:8.0.13
depends_on:
oap:
condition: service_healthy
networks:
- e2e
entrypoint: bash
volumes:
- ./mock.sql:/docker/mock.sql
command:
- -c
- "mysql -h mysql_2 -uroot -ppassword < /docker/mock.sql"
mysql-load_3:
image: mysql:8.0.13
depends_on:
oap:
condition: service_healthy
networks:
- e2e
entrypoint: bash
volumes:
- ./mock.sql:/docker/mock.sql
command:
- -c
- "mysql -h mysql_3 -uroot -ppassword < /docker/mock.sql"
fluentbit:
image: fluent/fluent-bit:1.9
environment:
......@@ -88,6 +127,26 @@ services:
- e2e
depends_on:
- mysql
mysql-service_2:
image: prom/mysqld-exporter:v0.14.0
ports:
- 9104
environment:
- DATA_SOURCE_NAME=root:password@(mysql_2:3306)/
networks:
- e2e
depends_on:
- mysql_2
mysql-service_3:
image: prom/mysqld-exporter:v0.14.0
ports:
- 9104
environment:
- DATA_SOURCE_NAME=root:password@(mysql_3:3306)/
networks:
- e2e
depends_on:
- mysql_3
otel-collector:
image: otel/opentelemetry-collector:0.50.0
networks:
......
......@@ -20,7 +20,7 @@ receivers:
- job_name: 'mysql-monitoring'
scrape_interval: 5s
static_configs:
- targets: ['mysql-service:9104']
- targets: ['mysql-service:9104', 'mysql-service_2:9104', 'mysql-service_3:9104']
labels:
host_name: root[root]
processors:
......
......@@ -51,6 +51,26 @@ services:
interval: 5s
timeout: 60s
retries: 120
postgres_2: &pgsql
image: postgres:14.1
environment:
- TZ=Asia/Shanghai
- POSTGRES_PASSWORD=123456
- POSTGRES_DB=skywalking
ports:
- 5432
command: postgres -c config_file=/etc/postgresql.conf
volumes:
- ./postgresql.conf:/etc/postgresql.conf
networks:
- e2e
healthcheck:
test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/5432" ]
interval: 5s
timeout: 60s
retries: 120
postgres_3:
<<: *pgsql
postgres-load:
image: postgres:14.1
environment:
......@@ -75,6 +95,26 @@ services:
- DATA_SOURCE_NAME=postgresql://postgres:123456@postgres:5432/postgres?sslmode=disable
networks:
- e2e
postgres-exporter_2:
image: quay.io/prometheuscommunity/postgres-exporter:v0.11.0
depends_on:
- postgres
ports:
- 9187
environment:
- DATA_SOURCE_NAME=postgresql://postgres:123456@postgres_2:5432/postgres?sslmode=disable
networks:
- e2e
postgres-exporter_3:
image: quay.io/prometheuscommunity/postgres-exporter:v0.11.0
depends_on:
- postgres
ports:
- 9187
environment:
- DATA_SOURCE_NAME=postgresql://postgres:123456@postgres_3:5432/postgres?sslmode=disable
networks:
- e2e
fluentbit:
image: fluent/fluent-bit:1.9
environment:
......
......@@ -20,7 +20,7 @@ receivers:
- job_name: "postgresql-monitoring"
scrape_interval: 5s
static_configs:
- targets: ["postgres-exporter:9187"]
- targets: ["postgres-exporter:9187","postgres-exporter_2:9187","postgres-exporter_3:9187"]
labels:
host_name: postgres:5432
processors:
......
......@@ -15,47 +15,63 @@
# This file is used to show how to write configuration files and can be used to test.
cases:
# service list
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
expected: expected/service.yml
# metrics
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_shared_buffers --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_effective_cache --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_maintenance_work_mem --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_work_mem --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_seq_page_cost --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_random_page_cost --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_max_wal_size --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_max_parallel_workers --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_max_worker_processes --service-name=postgresql::postgres:5432 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
cases:
# service list
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
expected: expected/service.yml
# service metrics
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_cache_hit_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_fetched_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_inserted_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_updated_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_returned_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_deleted_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_cache_hit_rate --labels=postgres --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_fetched_rows_rate --labels=postgres --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_inserted_rows_rate --labels=postgres --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_updated_rows_rate --labels=postgres --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_returned_rows_rate --labels=postgres --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_deleted_rows_rate --labels=postgres --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_active_sessions --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
# instance metrics
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_shared_buffers --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_effective_cache --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_maintenance_work_mem --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_work_mem --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_active_sessions --labels=postgres --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
# slow sql
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql records list --name=top_n_database_statement |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/db-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_seq_page_cost --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_random_page_cost --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_max_wal_size --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_max_parallel_workers --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_max_worker_processes --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_cache_hit_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_fetched_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_inserted_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_updated_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_returned_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_deleted_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_active_sessions --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
# slow sql
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql records list --name=top_n_database_statement |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/db-has-value.yml
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册