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),