处理计算中缺失的指标
Dealing with missing metrices in calculations
我使用一个公式来计算大约 MySQL 实例的最大内存消耗(简化并写入PromQL) 读取:
(
mysql_global_variables_key_buffer_size +
mysql_global_variables_query_cache_size +
mysql_global_variables_tmp_table_size +
mysql_global_variables_innodb_buffer_pool_size +
mysql_global_variables_innodb_additional_mem_pool_size +
mysql_global_variables_innodb_log_buffer_size +
(
mysql_global_variables_max_connections *
(
mysql_global_variables_sort_buffer_size +
mysql_global_variables_read_buffer_size +
mysql_global_variables_read_rnd_buffer_size +
mysql_global_variables_join_buffer_size +
mysql_global_variables_thread_stack +
mysql_global_variables_binlog_cache_size
)
)
)
不幸的是,mysql_global_variables_innodb_additional_mem_pool_size
指标并不总是存在于每个实例中,如果将其包含在计算中,则会导致 "no data"。
可以使用absent(v instant-vector)
函数来解决这个问题,但我不确定如何解决。
我希望将 不存在的 指标替换为常量(在本例中为 0
)。可能吗?
能否就如何处理 PromQL 中计算中缺少的指标提供一些提示?
mysql_global_variables_innodb_additional_mem_pool_size or up * 0
https://www.robustperception.io/existential-issues-with-metrics/ 更详细地查看这个问题。
万一我们尝试对两个可能缺失的指标求和,已接受的解决方案将无法正常工作。
在我的具体情况下,它是 mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len
(来自 mariadb)和 mysql_global_status_innodb_history_list_length
(来自 mysql)。
提供的解决方案为我提供了单个主机的 3 个图表。
我使用了以下解决方法:
(metric1{hostname="h"} or on() vector(0))+(metric2{hostname="h"} or on() vector(0))
取自此处:https://github.com/grafana/grafana/issues/2393#issuecomment-192522042
我使用一个公式来计算大约 MySQL 实例的最大内存消耗(简化并写入PromQL) 读取:
(
mysql_global_variables_key_buffer_size +
mysql_global_variables_query_cache_size +
mysql_global_variables_tmp_table_size +
mysql_global_variables_innodb_buffer_pool_size +
mysql_global_variables_innodb_additional_mem_pool_size +
mysql_global_variables_innodb_log_buffer_size +
(
mysql_global_variables_max_connections *
(
mysql_global_variables_sort_buffer_size +
mysql_global_variables_read_buffer_size +
mysql_global_variables_read_rnd_buffer_size +
mysql_global_variables_join_buffer_size +
mysql_global_variables_thread_stack +
mysql_global_variables_binlog_cache_size
)
)
)
不幸的是,mysql_global_variables_innodb_additional_mem_pool_size
指标并不总是存在于每个实例中,如果将其包含在计算中,则会导致 "no data"。
可以使用absent(v instant-vector)
函数来解决这个问题,但我不确定如何解决。
我希望将 不存在的 指标替换为常量(在本例中为 0
)。可能吗?
能否就如何处理 PromQL 中计算中缺少的指标提供一些提示?
mysql_global_variables_innodb_additional_mem_pool_size or up * 0
https://www.robustperception.io/existential-issues-with-metrics/ 更详细地查看这个问题。
万一我们尝试对两个可能缺失的指标求和,已接受的解决方案将无法正常工作。
在我的具体情况下,它是 mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len
(来自 mariadb)和 mysql_global_status_innodb_history_list_length
(来自 mysql)。
提供的解决方案为我提供了单个主机的 3 个图表。
我使用了以下解决方法:
(metric1{hostname="h"} or on() vector(0))+(metric2{hostname="h"} or on() vector(0))
取自此处:https://github.com/grafana/grafana/issues/2393#issuecomment-192522042