summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/couchdb/couch_stats_aggregator.erl9
-rw-r--r--src/couchdb/couch_util.erl12
-rw-r--r--src/couchdb/priv/Makefile.am3
-rw-r--r--src/couchdb/priv/stat_descriptions.cfg37
4 files changed, 55 insertions, 6 deletions
diff --git a/src/couchdb/couch_stats_aggregator.erl b/src/couchdb/couch_stats_aggregator.erl
index 6833fcbe..01e0f62a 100644
--- a/src/couchdb/couch_stats_aggregator.erl
+++ b/src/couchdb/couch_stats_aggregator.erl
@@ -90,16 +90,17 @@ init(_) ->
ets:new(?MODULE, [named_table, set, protected]),
SampleStr = couch_config:get("stats", "samples", "[0]"),
{ok, Samples} = couch_util:parse_term(SampleStr),
- lists:foreach(fun({KeyStr, Value}) ->
- {ok, Key} = couch_util:parse_term(KeyStr),
+ PrivDir = couch_util:priv_dir(),
+ {ok, Descs} = file:consult(filename:join(PrivDir, "stat_descriptions.cfg")),
+ lists:foreach(fun({Sect, Key, Value}) ->
lists:foreach(fun(Secs) ->
Agg = #aggregate{
description=list_to_binary(Value),
seconds=Secs
},
- ets:insert(?MODULE, {{Key, Secs}, Agg})
+ ets:insert(?MODULE, {{{Sect, Key}, Secs}, Agg})
end, Samples)
- end, couch_config:get("stats_descriptions")),
+ end, Descs),
Self = self(),
ok = couch_config:register(
diff --git a/src/couchdb/couch_util.erl b/src/couchdb/couch_util.erl
index 088fde85..7efc07c0 100644
--- a/src/couchdb/couch_util.erl
+++ b/src/couchdb/couch_util.erl
@@ -12,7 +12,7 @@
-module(couch_util).
--export([start_driver/1,terminate_linked/1]).
+-export([priv_dir/0, start_driver/1,terminate_linked/1]).
-export([should_flush/0, should_flush/1, to_existing_atom/1]).
-export([rand32/0, implode/2, collate/2, collate/3]).
-export([abs_pathname/1,abs_pathname/2, trim/1, ascii_lower/1]).
@@ -27,6 +27,16 @@
% arbitrarily chosen amount of memory to use before flushing to disk
-define(FLUSH_MAX_MEM, 10000000).
+priv_dir() ->
+ case code:priv_dir(couch) of
+ {error, bad_name} ->
+ % small hack, in dev mode "app" is couchdb. Fixing requires
+ % renaming src/couch to src/couch. Not really worth the hassle.
+ % -Damien
+ code:priv_dir(couchdb);
+ Dir -> Dir
+ end.
+
start_driver(LibDir) ->
case erl_ddll:load_driver(LibDir, "couch_erl_driver") of
ok ->
diff --git a/src/couchdb/priv/Makefile.am b/src/couchdb/priv/Makefile.am
index 2767bb43..8c504dbc 100644
--- a/src/couchdb/priv/Makefile.am
+++ b/src/couchdb/priv/Makefile.am
@@ -13,8 +13,9 @@
couchlibdir = $(localerlanglibdir)/couch-$(version)
couchprivdir = $(couchlibdir)/priv
-EXTRA_DIST = couchspawnkillable.sh
+EXTRA_DIST = couchspawnkillable.sh stat_descriptions.cfg
+couchpriv_DATA = stat_descriptions.cfg
couchpriv_PROGRAMS = couchspawnkillable
if WINDOWS
diff --git a/src/couchdb/priv/stat_descriptions.cfg b/src/couchdb/priv/stat_descriptions.cfg
new file mode 100644
index 00000000..91a1540f
--- /dev/null
+++ b/src/couchdb/priv/stat_descriptions.cfg
@@ -0,0 +1,37 @@
+% Style guide for descriptions: Start with a lowercase letter & do not add
+% a trailing full-stop / period
+% Please keep this in alphabetical order
+
+{couchdb, database_writes, "number of times a database was change"}.
+{couchdb, database_reads, "number of times a document was read from a databas"}.
+{couchdb, open_databases, "number of open database"}.
+{couchdb, open_os_files, "number of file descriptors CouchDB has ope"}.
+{couchdb, request_time, "length of a request inside CouchDB without MochiWe"}.
+
+{httpd, bulk_requests, "number of bulk request"}.
+{httpd, requests, "number of HTTP request"}.
+{httpd, temporary_view_reads, "number of temporary view read"}.
+{httpd, view_reads, "number of view read"}.
+{httpd, clients_requesting_changes, "number of clients for continuous _change"}.
+
+{httpd_request_methods, 'COPY', "number of HTTP COPY request"}.
+{httpd_request_methods, 'DELETE', "number of HTTP DELETE request"}.
+{httpd_request_methods, 'GET', "number of HTTP GET request"}.
+{httpd_request_methods, 'HEAD', "number of HTTP HEAD request"}.
+{httpd_request_methods, 'MOVE', "number of HTTP MOVE request"}.
+{httpd_request_methods, 'POST', "number of HTTP POST request"}.
+{httpd_request_methods, 'PUT', "number of HTTP PUT request"}.
+
+{httpd_status_codes, '200', "number of HTTP 200 OK response"}.
+{httpd_status_codes, '201', "number of HTTP 201 Created response"}.
+{httpd_status_codes, '202', "number of HTTP 202 Accepted response"}.
+{httpd_status_codes, '301', "number of HTTP 301 Moved Permanently response"}.
+{httpd_status_codes, '304', "number of HTTP 304 Not Modified response"}.
+{httpd_status_codes, '400', "number of HTTP 400 Bad Request response"}.
+{httpd_status_codes, '401', "number of HTTP 401 Unauthorized response"}.
+{httpd_status_codes, '403', "number of HTTP 403 Forbidden response"}.
+{httpd_status_codes, '404', "number of HTTP 404 Not Found response"}.
+{httpd_status_codes, '405', "number of HTTP 405 Method Not Allowed response"}.
+{httpd_status_codes, '409', "number of HTTP 409 Conflict response"}.
+{httpd_status_codes, '412', "number of HTTP 412 Precondition Failed response"}.
+{httpd_status_codes, '500', "number of HTTP 500 Internal Server Error response"}.