You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by wi...@apache.org on 2020/01/07 08:01:43 UTC
[couchdb] 03/04: Instrument Mango execution stats
This is an automated email from the ASF dual-hosted git repository.
willholley pushed a commit to branch mango_metrics
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit e8cd2aa7709894169d397d916f1e87bec3c2628b
Author: Will Holley <wi...@gmail.com>
AuthorDate: Mon Jan 6 11:49:41 2020 +0000
Instrument Mango execution stats
Adds metrics for mango execution statistics:
* total docs examined (counter)
* total results returned (counter)
* query time (histogram)
---
src/couch/priv/stats_descriptions.cfg | 16 ++++++++++++++++
src/mango/src/mango_execution_stats.erl | 16 +++++++++++++++-
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/src/couch/priv/stats_descriptions.cfg b/src/couch/priv/stats_descriptions.cfg
index 0d81ea3..d333ea4 100644
--- a/src/couch/priv/stats_descriptions.cfg
+++ b/src/couch/priv/stats_descriptions.cfg
@@ -306,3 +306,19 @@
{type, counter},
{desc, <<"number of mango queries that generated an invalid index warning">>}
]}.
+{[mango, docs_examined], [
+ {type, counter},
+ {desc, <<"number of documents examined by mango queries">>}
+]}.
+{[mango, quorum_docs_examined], [
+ {type, counter},
+ {desc, <<"number of documents examined by mango queries, using cluster quorum">>}
+]}.
+{[mango, results_returned], [
+ {type, counter},
+ {desc, <<"number of rows returned by mango queries">>}
+]}.
+{[mango, query_time], [
+ {type, histogram},
+ {desc, <<"length of time processing a mango query">>}
+]}.
diff --git a/src/mango/src/mango_execution_stats.erl b/src/mango/src/mango_execution_stats.erl
index 7e8afd7..7f49f40 100644
--- a/src/mango/src/mango_execution_stats.erl
+++ b/src/mango/src/mango_execution_stats.erl
@@ -81,10 +81,24 @@ log_end(Stats) ->
}.
+incr_metrics(#execution_stats {
+ totalDocsExamined = Docs,
+ totalQuorumDocsExamined = DocsQuorum,
+ resultsReturned = ResultCount,
+ executionTimeMs = ExecTime
+ }) ->
+ couch_stats:increment_counter([mango, docs_examined], Docs),
+ couch_stats:increment_counter([mango, quorum_docs_examined], DocsQuorum),
+ couch_stats:increment_counter([mango, results_returned], ResultCount),
+ couch_stats:update_histogram([mango, query_time], ExecTime).
+
+
maybe_add_stats(Opts, UserFun, Stats, UserAcc) ->
+ Stats0 = log_end(Stats),
+ incr_metrics(Stats0),
+
case couch_util:get_value(execution_stats, Opts) of
true ->
- Stats0 = log_end(Stats),
JSONValue = to_json(Stats0),
Arg = {add_key, execution_stats, JSONValue},
{_Go, FinalUserAcc} = UserFun(Arg, UserAcc),