diff options
-rw-r--r-- | etc/couchdb/default.ini.tpl.in | 37 | ||||
-rw-r--r-- | license.skip | 1 | ||||
-rw-r--r-- | src/couchdb/couch_stats_aggregator.erl | 9 | ||||
-rw-r--r-- | src/couchdb/couch_util.erl | 12 | ||||
-rw-r--r-- | src/couchdb/priv/Makefile.am | 3 | ||||
-rw-r--r-- | src/couchdb/priv/stat_descriptions.cfg | 37 |
6 files changed, 56 insertions, 43 deletions
diff --git a/etc/couchdb/default.ini.tpl.in b/etc/couchdb/default.ini.tpl.in index 3de6e12b..bc234366 100644 --- a/etc/couchdb/default.ini.tpl.in +++ b/etc/couchdb/default.ini.tpl.in @@ -112,40 +112,3 @@ rate = 1000 ; sample intervals are in seconds samples = [0, 60, 300, 900] -; Style guide for descriptions: Start with a lowercase letter & do not add -; a trailing full-stop / period. -; Please keep this in alphabetical order. -[stats_descriptions] -{couchdb, database_writes} = number of times a database was changed -{couchdb, database_reads} = number of times a document was read from a database -{couchdb, open_databases} = number of open databases -{couchdb, open_os_files} = number of file descriptors CouchDB has open -{couchdb, request_time} = length of a request inside CouchDB without MochiWeb - -{httpd, bulk_requests} = number of bulk requests -{httpd, requests} = number of HTTP requests -{httpd, temporary_view_reads} = number of temporary view reads -{httpd, view_reads} = number of view reads -{httpd, clients_requesting_changes} = number of clients for continuous _changes - -{httpd_request_methods, 'COPY'} = number of HTTP COPY requests -{httpd_request_methods, 'DELETE'} = number of HTTP DELETE requests -{httpd_request_methods, 'GET'} = number of HTTP GET requests -{httpd_request_methods, 'HEAD'} = number of HTTP HEAD requests -{httpd_request_methods, 'MOVE'} = number of HTTP MOVE requests -{httpd_request_methods, 'POST'} = number of HTTP POST requests -{httpd_request_methods, 'PUT'} = number of HTTP PUT requests - -{httpd_status_codes, '200'} = number of HTTP 200 OK responses -{httpd_status_codes, '201'} = number of HTTP 201 Created responses -{httpd_status_codes, '202'} = number of HTTP 202 Accepted responses -{httpd_status_codes, '301'} = number of HTTP 301 Moved Permanently responses -{httpd_status_codes, '304'} = number of HTTP 304 Not Modified responses -{httpd_status_codes, '400'} = number of HTTP 400 Bad Request responses -{httpd_status_codes, '401'} = number of HTTP 401 Unauthorized responses -{httpd_status_codes, '403'} = number of HTTP 403 Forbidden responses -{httpd_status_codes, '404'} = number of HTTP 404 Not Found responses -{httpd_status_codes, '405'} = number of HTTP 405 Method Not Allowed responses -{httpd_status_codes, '409'} = number of HTTP 409 Conflict responses -{httpd_status_codes, '412'} = number of HTTP 412 Precondition Failed responses -{httpd_status_codes, '500'} = number of HTTP 500 Internal Server Error responses diff --git a/license.skip b/license.skip index 53fcef48..c7cfa20b 100644 --- a/license.skip +++ b/license.skip @@ -64,6 +64,7 @@ ^src/couchdb/priv/Makefile ^src/couchdb/priv/Makefile.in ^src/couchdb/priv/couchspawnkillable +^src/couchdb/priv/stat_descriptions.cfg ^src/erlang-oauth/* ^src/etap/* ^src/ibrowse/* 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"}. |