You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2014/03/14 19:53:14 UTC
[1/2] TS-2637: add traffic_line records match option
Repository: trafficserver
Updated Branches:
refs/heads/master 575469618 -> 0389be399
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/NetworkUtilsRemote.cc
----------------------------------------------------------------------
diff --git a/mgmt/api/NetworkUtilsRemote.cc b/mgmt/api/NetworkUtilsRemote.cc
index 3bf941a..da4c9ab 100644
--- a/mgmt/api/NetworkUtilsRemote.cc
+++ b/mgmt/api/NetworkUtilsRemote.cc
@@ -61,7 +61,6 @@ extern TSInitOptionT ts_init_options;
/**********************************************************************
* Socket Helper Functions
**********************************************************************/
-
void
set_socket_paths(const char *path)
{
@@ -773,32 +772,25 @@ send_file_write_request(int fd, TSFileNameT file, int ver, int size, char *text)
return err;
}
-/**********************************************************************
- * send_record_get_request
- *
- * purpose: sends request to get record value from Traffic Manager
- * input: fd - file descriptor to use
- * rec_name - name of record to retrieve value for
- * output: TS_ERR_xx
- * format: RECORD_GET <msg_len> <rec_name>
- **********************************************************************/
-TSError
-send_record_get_request(int fd, char *rec_name)
+static TSError
+send_record_get_x_request(OpType optype, int fd, const char *rec_name)
{
char *msg_buf;
int msg_pos = 0, total_len;
- int16_t op;
+ int16_t op = (int16_t)optype;
int32_t msg_len;
TSError err;
- if (!rec_name)
+ ink_assert(op == RECORD_GET || op == RECORD_MATCH_GET);
+
+ if (!rec_name) {
return TS_ERR_PARAMS;
+ }
total_len = SIZE_OP_T + SIZE_LEN + strlen(rec_name);
msg_buf = (char *)ats_malloc(sizeof(char) * total_len);
// fill in op type
- op = (int16_t) RECORD_GET;
memcpy(msg_buf + msg_pos, (void *) &op, SIZE_OP_T);
msg_pos += SIZE_OP_T;
@@ -816,6 +808,35 @@ send_record_get_request(int fd, char *rec_name)
return err;
}
+/**********************************************************************
+ * send_record_get_request
+ *
+ * purpose: sends request to get record value from Traffic Manager
+ * input: fd - file descriptor to use
+ * rec_name - name of record to retrieve value for
+ * output: TS_ERR_xx
+ * format: RECORD_GET <msg_len> <rec_name>
+ **********************************************************************/
+TSError
+send_record_get_request(int fd, const char *rec_name)
+{
+ return send_record_get_x_request(RECORD_GET, fd, rec_name);
+}
+
+/**********************************************************************
+ * send_record_match_request
+ *
+ * purpose: sends request to get a list of matching record values from Traffic Manager
+ * input: fd - file descriptor to use
+ * rec_name - regex to match against record names
+ * output: TS_ERR_xx
+ * format: sequence of RECORD_GET <msg_len> <rec_name>
+ **********************************************************************/
+TSError
+send_record_match_request(int fd, const char *rec_regex)
+{
+ return send_record_get_x_request(RECORD_MATCH_GET, fd, rec_regex);
+}
/*------ control functions -------------------------------------------*/
/**********************************************************************
@@ -1231,19 +1252,25 @@ parse_file_read_reply(int fd, int *ver, int *size, char **text)
* rec_value - the value of the record in string format
* output: errors on error or fill up class with response &
* return SUCC
- * notes: reply format = <TSError> <val_size> <rec_type> <record_value>
+ * notes: reply format = <TSError> <val_size> <name_size> <rec_type> <record_value> <record_name>
+ * Zero-length values and names are supported. If the size field is 0, the corresponding
+ * value field is not transmitted.
* It's the responsibility of the calling function to conver the rec_value
* based on the rec_type!!
**********************************************************************/
TSError
-parse_record_get_reply(int fd, TSRecordT * rec_type, void **rec_val)
+parse_record_get_reply(int fd, TSRecordT * rec_type, void **rec_val, char **rec_name)
{
int16_t ret_val, rec_t;
- int32_t rec_size;
+ int32_t val_size, name_size;
TSError err_t;
- if (!rec_type || !rec_val)
+ if (!rec_type || !rec_val) {
return TS_ERR_PARAMS;
+ }
+
+ *rec_name = NULL;
+ *rec_val = NULL;
// check to see if anything to read; wait for specified time
if (socket_read_timeout(fd, MAX_TIME_WAIT, 0) <= 0) { //time expired before ready to read
@@ -1253,49 +1280,72 @@ parse_record_get_reply(int fd, TSRecordT * rec_type, void **rec_val)
// get the return value (TSError type)
err_t = socket_read_conn(fd, (uint8_t *)&ret_val, SIZE_ERR_T);
if (err_t != TS_ERR_OKAY) {
- return err_t;
+ goto fail;
}
// if !TS_ERR_OKAY, stop reading rest of msg
err_t = (TSError) ret_val;
if (err_t != TS_ERR_OKAY) {
- return err_t;
+ goto fail;
}
// now get size of record_value
- err_t = socket_read_conn(fd, (uint8_t *)&rec_size, SIZE_LEN);
+ err_t = socket_read_conn(fd, (uint8_t *)&val_size, SIZE_LEN);
if (err_t != TS_ERR_OKAY) {
- return err_t;
+ goto fail;
+ }
+
+ // now get size of record name
+ err_t = socket_read_conn(fd, (uint8_t *)&name_size, SIZE_LEN);
+ if (err_t != TS_ERR_OKAY) {
+ goto fail;
}
// get the record type
err_t = socket_read_conn(fd, (uint8_t *)&rec_t, SIZE_REC_T);
if (err_t != TS_ERR_OKAY) {
- return err_t;
+ goto fail;
}
*rec_type = (TSRecordT) rec_t;
- // get record value
- // allocate correct amount of memory for record value
- if (*rec_type == TS_REC_STRING) {
- *rec_val = ats_malloc(sizeof(char) * (rec_size + 1));
- } else {
- *rec_val = ats_malloc(sizeof(char) * (rec_size));
- }
+ // get record value (if there is one)
+ if (val_size) {
+ if (*rec_type == TS_REC_STRING) {
+ *rec_val = ats_malloc(sizeof(char) * (val_size + 1));
+ } else {
+ *rec_val = ats_malloc(sizeof(char) * (val_size));
+ }
- err_t = socket_read_conn(fd, (uint8_t *)(*rec_val), rec_size);
- if (err_t != TS_ERR_OKAY) {
- ats_free(*rec_val);
- *rec_val = NULL;
- return err_t;
+ err_t = socket_read_conn(fd, (uint8_t *)(*rec_val), val_size);
+ if (err_t != TS_ERR_OKAY) {
+ goto fail;
+ }
+
+ // add end of string to end of the record value
+ if (*rec_type == TS_REC_STRING) {
+ ((char *) (*rec_val))[val_size] = '\0';
+ }
}
- // add end of string to end of the record value
- if (*rec_type == TS_REC_STRING) {
- ((char *) (*rec_val))[rec_size] = '\0';
+ // get the record name (if there is one)
+ if (name_size) {
+ *rec_name = (char *)ats_malloc(sizeof(char) * (name_size + 1));
+ err_t = socket_read_conn(fd, (uint8_t *)(*rec_name), name_size);
+ if (err_t != TS_ERR_OKAY) {
+ goto fail;
+ }
+
+ (*rec_name)[name_size] = '\0';
}
+ return TS_ERR_OKAY;
+
+fail:
+ ats_free(*rec_val);
+ ats_free(*rec_name);
+ *rec_val = NULL;
+ *rec_name = NULL;
return err_t;
}
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/NetworkUtilsRemote.h
----------------------------------------------------------------------
diff --git a/mgmt/api/NetworkUtilsRemote.h b/mgmt/api/NetworkUtilsRemote.h
index b30ac14..f251dc0 100644
--- a/mgmt/api/NetworkUtilsRemote.h
+++ b/mgmt/api/NetworkUtilsRemote.h
@@ -76,7 +76,8 @@ TSError send_request_bool(int fd, OpType op, bool flag);
TSError send_file_read_request(int fd, TSFileNameT file);
TSError send_file_write_request(int fd, TSFileNameT file, int ver, int size, char *text);
-TSError send_record_get_request(int fd, char *rec_name);
+TSError send_record_get_request(int fd, const char *rec_name);
+TSError send_record_match_request(int fd, const char *rec_regex);
TSError send_proxy_state_set_request(int fd, TSProxyStateT state, TSCacheClearT clear);
@@ -93,7 +94,7 @@ TSError parse_reply_list(int fd, char **list);
TSError parse_file_read_reply(int fd, int *version, int *size, char **text);
-TSError parse_record_get_reply(int fd, TSRecordT * rec_type, void **rec_val);
+TSError parse_record_get_reply(int fd, TSRecordT * rec_type, void **rec_val, char **rec_name);
TSError parse_record_set_reply(int fd, TSActionNeedT * action_need);
TSError parse_proxy_state_get_reply(int fd, TSProxyStateT * state);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/TSControlMain.cc
----------------------------------------------------------------------
diff --git a/mgmt/api/TSControlMain.cc b/mgmt/api/TSControlMain.cc
index c507f5b..950e3b5 100644
--- a/mgmt/api/TSControlMain.cc
+++ b/mgmt/api/TSControlMain.cc
@@ -210,198 +210,83 @@ ts_ctrl_main(void *arg)
con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
continue;
}
+
// determine which handler function to call based on operation
switch (op_t) {
case RECORD_GET:
ret = handle_record_get(client_entry->sock_info, req);
- ats_free(req); // free memory for req
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_record_get\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
+ break;
+
+ case RECORD_MATCH_GET:
+ ret = handle_record_match(client_entry->sock_info, req);
+ // XXX
break;
case RECORD_SET:
ret = handle_record_set(client_entry->sock_info, req);
- ats_free(req);
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_record_set\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
-
break;
case FILE_READ:
ret = handle_file_read(client_entry->sock_info, req);
- ats_free(req);
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_file_read\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
-
break;
case FILE_WRITE:
ret = handle_file_write(client_entry->sock_info, req);
- ats_free(req);
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_file_write\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
-
break;
case PROXY_STATE_GET:
ret = handle_proxy_state_get(client_entry->sock_info);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_proxy_state_get\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
-
break;
case PROXY_STATE_SET:
ret = handle_proxy_state_set(client_entry->sock_info, req);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_proxy_state_set\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
-
break;
case RECONFIGURE:
ret = handle_reconfigure(client_entry->sock_info);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_reconfigure\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
-
break;
case RESTART:
ret = handle_restart(client_entry->sock_info, req, false);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_restart\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case BOUNCE:
ret = handle_restart(client_entry->sock_info, req, true);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_restart bounce\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case STORAGE_DEVICE_CMD_OFFLINE:
ret = handle_storage_device_cmd_offline(client_entry->sock_info, req);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_storage_device_cmd_offline\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case EVENT_RESOLVE:
ret = handle_event_resolve(client_entry->sock_info, req);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_event_resolve\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case EVENT_GET_MLT:
ret = handle_event_get_mlt(client_entry->sock_info);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:event_get_mlt\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case EVENT_ACTIVE:
ret = handle_event_active(client_entry->sock_info, req);
- ats_free(req); // free the request allocated by preprocess_msg
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:event_active\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case SNAPSHOT_TAKE:
case SNAPSHOT_RESTORE:
case SNAPSHOT_REMOVE:
ret = handle_snapshot(client_entry->sock_info, req, op_t);
- ats_free(req);
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:handle_snapshot\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case SNAPSHOT_GET_MLT:
ret = handle_snapshot_get_mlt(client_entry->sock_info);
- ats_free(req);
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR:snapshot_get_mlt\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case DIAGS:
- if (req) {
- handle_diags(client_entry->sock_info, req);
- ats_free(req);
- }
+ ret = handle_diags(client_entry->sock_info, req);
break;
case STATS_RESET_CLUSTER:
case STATS_RESET_NODE:
ret = handle_stats_reset(client_entry->sock_info, req, op_t);
- ats_free(req);
- if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
- Debug("ts_main", "[ts_ctrl_main] ERROR: stats_reset\n");
- remove_client(client_entry, accepted_con);
- con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
- continue;
- }
break;
case UNDEFINED_OP:
@@ -409,6 +294,16 @@ ts_ctrl_main(void *arg)
break;
} // end switch (op_t)
+
+ ats_free(req);
+
+ if (ret == TS_ERR_NET_WRITE || ret == TS_ERR_NET_EOF) {
+ Debug("ts_main", "[ts_ctrl_main] ERROR: sending response for message op %d\n", (int)op_t);
+ remove_client(client_entry, accepted_con);
+ con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
+ continue;
+ }
+
} // end if(client_entry->sock_info.fd && FD_ISSET(client_entry->sock_info.fd, &selectFDs))
con_entry = ink_hash_table_iterator_next(accepted_con, &con_state);
@@ -487,16 +382,16 @@ handle_record_get(struct SocketInfo sock_info, char *req)
// create and send reply back to client
switch (ele->rec_type) {
case TS_REC_INT:
- ret = send_record_get_reply(sock_info, ret, &(ele->int_val), sizeof(TSInt), ele->rec_type);
+ ret = send_record_get_reply(sock_info, ret, &(ele->int_val), sizeof(TSInt), ele->rec_type, ele->rec_name);
break;
case TS_REC_COUNTER:
- ret = send_record_get_reply(sock_info, ret, &(ele->counter_val), sizeof(TSCounter), ele->rec_type);
+ ret = send_record_get_reply(sock_info, ret, &(ele->counter_val), sizeof(TSCounter), ele->rec_type, ele->rec_name);
break;
case TS_REC_FLOAT:
- ret = send_record_get_reply(sock_info, ret, &(ele->float_val), sizeof(TSFloat), ele->rec_type);
+ ret = send_record_get_reply(sock_info, ret, &(ele->float_val), sizeof(TSFloat), ele->rec_type, ele->rec_name);
break;
case TS_REC_STRING:
- ret = send_record_get_reply(sock_info, ret, ele->string_val, strlen(ele->string_val), ele->rec_type);
+ ret = send_record_get_reply(sock_info, ret, ele->string_val, strlen(ele->string_val), ele->rec_type, ele->rec_name);
break;
default: // invalid record type
ret = send_reply(sock_info, TS_ERR_FAIL);
@@ -513,6 +408,70 @@ handle_record_get(struct SocketInfo sock_info, char *req)
return ret;
}
+struct record_match_state {
+ TSError err;
+ SocketInfo sock;
+ DFA regex;
+};
+
+static void
+send_record_match(RecT /* rec_type */, void *edata, int /* registered */, const char *name, int data_type, RecData *rec_val)
+{
+ record_match_state *match = (record_match_state *)edata ;
+
+ if (match->err != TS_ERR_OKAY) {
+ return;
+ }
+
+ if (match->regex.match(name) >= 0) {
+ switch (data_type) {
+ case RECD_INT:
+ match->err = send_record_get_reply(match->sock, TS_ERR_OKAY, &(rec_val->rec_int), sizeof(TSInt), TS_REC_INT, name);
+ break;
+ case RECD_COUNTER:
+ match->err = send_record_get_reply(match->sock, TS_ERR_OKAY, &(rec_val->rec_counter), sizeof(TSCounter), TS_REC_COUNTER, name);
+ break;
+ case RECD_STRING:
+ match->err = send_record_get_reply(match->sock, TS_ERR_OKAY, rec_val->rec_string, rec_val->rec_string ? strlen(rec_val->rec_string): 0, TS_REC_STRING, name);
+ break;
+ case RECD_FLOAT:
+ match->err = send_record_get_reply(match->sock, TS_ERR_OKAY, &(rec_val->rec_float), sizeof(TSFloat), TS_REC_FLOAT, name);
+ break;
+ default:
+ break; // skip it
+ }
+ }
+}
+
+TSError
+handle_record_match(struct SocketInfo sock_info, char *req)
+{
+ TSError ret;
+ record_match_state match;
+
+ // parse msg - don't really need since the request itself is the regex itself
+ if (!req) {
+ ret = send_reply(sock_info, TS_ERR_FAIL);
+ return ret;
+ }
+
+ if (match.regex.compile(req, RE_CASE_INSENSITIVE) != 0) {
+ ret = send_reply(sock_info, TS_ERR_FAIL);
+ return ret;
+ }
+
+ match.err = TS_ERR_OKAY;
+ match.sock = sock_info;
+
+ RecDumpRecords(RECT_NULL, send_record_match, &match);
+
+ // If successful, send a list terminator.
+ if (match.err == TS_ERR_OKAY) {
+ return send_record_get_reply(sock_info, TS_ERR_OKAY, NULL, 0, TS_REC_UNDEFINED, NULL);
+ }
+
+ return match.err;
+}
/**************************************************************************
* handle_record_set
@@ -957,7 +916,7 @@ handle_snapshot_get_mlt(struct SocketInfo sock_info)
* req - the diag message (already formatted with arguments)
* output: TS_ERR_xx
*************************************************************************/
-void
+TSError
handle_diags(struct SocketInfo /* sock_info ATS_UNUSED */, char *req)
{
TSError ret;
@@ -1008,12 +967,12 @@ handle_diags(struct SocketInfo /* sock_info ATS_UNUSED */, char *req)
if (diags_init) {
diags->print("TSMgmtAPI", DTA(level), "%s", diag_msg);
ats_free(diag_msg);
- return;
+ return TS_ERR_OKAY;
}
Lerror:
ats_free(diag_msg);
- return;
+ return TS_ERR_FAIL;
}
/**************************************************************************
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/TSControlMain.h
----------------------------------------------------------------------
diff --git a/mgmt/api/TSControlMain.h b/mgmt/api/TSControlMain.h
index 397b8bb..b53603e 100644
--- a/mgmt/api/TSControlMain.h
+++ b/mgmt/api/TSControlMain.h
@@ -49,6 +49,7 @@ void delete_client(ClientT * client);
void *ts_ctrl_main(void *arg);
TSError handle_record_get(struct SocketInfo sock_info, char *req);
+TSError handle_record_match(struct SocketInfo sock_info, char *req);
TSError handle_record_set(struct SocketInfo sock_info, char *req);
TSError handle_file_read(struct SocketInfo sock_info, char *req);
@@ -67,7 +68,7 @@ TSError handle_event_active(struct SocketInfo sock_info, char *req);
TSError handle_snapshot(struct SocketInfo sock_info, char *req, OpType op);
TSError handle_snapshot_get_mlt(struct SocketInfo sock_info);
-void handle_diags(struct SocketInfo sock_info, char *req);
+TSError handle_diags(struct SocketInfo sock_info, char *req);
TSError handle_stats_reset(struct SocketInfo sock_info, char *req, OpType op);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/include/mgmtapi.h
----------------------------------------------------------------------
diff --git a/mgmt/api/include/mgmtapi.h b/mgmt/api/include/mgmtapi.h
index 7b88d92..786db7f 100644
--- a/mgmt/api/include/mgmtapi.h
+++ b/mgmt/api/include/mgmtapi.h
@@ -1174,6 +1174,12 @@ extern "C"
*/
tsapi TSError TSRecordGetMlt(TSStringList rec_names, TSList rec_vals);
+/* TSRecordGetMatchMlt: gets a set of records
+ * Input: rec_regex - regular expression to match against record names
+ * Output: TSError, TSList of TSRecordEle
+ */
+ tsapi TSError TSRecordGetMatchMlt(const char *rec_regex, TSList list);
+
/* TSRecordSet*: sets a record w/ a known type
* Input: rec_name - the name of the record (proxy.config.record_name)
* *_val - the value to set the record to
[2/2] git commit: TS-2637: add traffic_line records match option
Posted by jp...@apache.org.
TS-2637: add traffic_line records match option
Add the -m option to traffic_line. This matches the given regular
expression against all the records, allowing users to discover new
statistics and configuration options.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0389be39
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0389be39
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0389be39
Branch: refs/heads/master
Commit: 0389be399cf888679b75a569345f4ff8e03569e3
Parents: 5754696
Author: James Peach <jp...@apache.org>
Authored: Wed Mar 12 15:32:04 2014 -0700
Committer: James Peach <jp...@apache.org>
Committed: Fri Mar 14 11:50:07 2014 -0700
----------------------------------------------------------------------
CHANGES | 2 +
cmd/traffic_line/traffic_line.cc | 43 +
doc/reference/commands/traffic_line.en.rst | 1482 ++++++++++++-----------
mgmt/api/CoreAPI.cc | 9 +
mgmt/api/CoreAPI.h | 1 +
mgmt/api/CoreAPIRemote.cc | 111 +-
mgmt/api/INKMgmtAPI.cc | 9 +
mgmt/api/NetworkUtilsDefs.h | 1 +
mgmt/api/NetworkUtilsLocal.cc | 30 +-
mgmt/api/NetworkUtilsLocal.h | 2 +-
mgmt/api/NetworkUtilsRemote.cc | 128 +-
mgmt/api/NetworkUtilsRemote.h | 5 +-
mgmt/api/TSControlMain.cc | 217 ++--
mgmt/api/TSControlMain.h | 3 +-
mgmt/api/include/mgmtapi.h | 6 +
15 files changed, 1138 insertions(+), 911 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 7ee10c5..1afbde4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 5.0.0
+ *) [TS-2637] Add traffic_line records match option.
+
*) [TS-2630] Add lib/ts/apidefs.h to place common types.
*) [TS-2610] Add "client_protocol_stack"(%<cps>) field into LogFormat.
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/cmd/traffic_line/traffic_line.cc
----------------------------------------------------------------------
diff --git a/cmd/traffic_line/traffic_line.cc b/cmd/traffic_line/traffic_line.cc
index 7169ce9..65df8db 100644
--- a/cmd/traffic_line/traffic_line.cc
+++ b/cmd/traffic_line/traffic_line.cc
@@ -32,6 +32,7 @@
static const char *programName;
static char ReadVar[1024];
+static char MatchVar[1024];
static char SetVar[1024];
static char VarValue[1024];
static int ReRead;
@@ -205,6 +206,46 @@ handleArgInvocation()
TSRecordEleDestroy(rec_ele);
return err;
}
+ } else if (*MatchVar != '\0') { // Handle a value read
+ if (*SetVar != '\0' || *VarValue != '\0') {
+ fprintf(stderr, "%s: Invalid Argument Combination: Can not read and set values at the same time\n", programName);
+ return TS_ERR_FAIL;
+ } else {
+ TSError err;
+ TSList list = TSListCreate();
+
+ if ((err = TSRecordGetMatchMlt(MatchVar, list)) != TS_ERR_OKAY) {
+ fprintf(stderr, "%s: %s\n", programName, TSGetErrorMessage(err));
+ }
+
+ // If the RPC call failed, the list will be empty, so we won't print anything. Otherwise,
+ // print all the results, freeing them as we go.
+ for (TSRecordEle * rec_ele = (TSRecordEle *) TSListDequeue(list); rec_ele;
+ rec_ele = (TSRecordEle *) TSListDequeue(list)) {
+ switch (rec_ele->rec_type) {
+ case TS_REC_INT:
+ printf("%s %" PRId64 "\n", rec_ele->rec_name, rec_ele->int_val);
+ break;
+ case TS_REC_COUNTER:
+ printf("%s %" PRId64 "\n", rec_ele->rec_name, rec_ele->counter_val);
+ break;
+ case TS_REC_FLOAT:
+ printf("%s %f\n", rec_ele->rec_name, rec_ele->float_val);
+ break;
+ case TS_REC_STRING:
+ printf("%s %s\n", rec_ele->rec_name, rec_ele->string_val);
+ break;
+ default:
+ // just skip it ...
+ break;
+ }
+
+ TSRecordEleDestroy(rec_ele);
+ }
+
+ TSListDestroy(list);
+ return err;
+ }
} else if (*SetVar != '\0') { // Setting a variable
if (*VarValue == '\0') {
fprintf(stderr, "%s: Set requires a -v argument\n", programName);
@@ -254,6 +295,7 @@ main(int /* argc ATS_UNUSED */, char **argv)
programName = argv[0];
ReadVar[0] = '\0';
+ MatchVar[0] = '\0';
SetVar[0] = '\0';
VarValue[0] = '\0';
ReRead = 0;
@@ -282,6 +324,7 @@ main(int /* argc ATS_UNUSED */, char **argv)
ArgumentDescription argument_descriptions[] = {
{"query_deadhosts", 'q', "Query congested sites", "F", &QueryDeadhosts, NULL, NULL},
{"read_var", 'r', "Read Variable", "S1024", &ReadVar, NULL, NULL},
+ {"match_var", 'm', "Match Variable", "S1024", &MatchVar, NULL, NULL},
{"set_var", 's', "Set Variable (requires -v option)", "S1024", &SetVar, NULL, NULL},
{"value", 'v', "Set Value (used with -s option)", "S1024", &VarValue, NULL, NULL},
{"help", 'h', "Help", NULL, NULL, NULL, usage},
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/doc/reference/commands/traffic_line.en.rst
----------------------------------------------------------------------
diff --git a/doc/reference/commands/traffic_line.en.rst b/doc/reference/commands/traffic_line.en.rst
index 70cfdd5..b99be29 100644
--- a/doc/reference/commands/traffic_line.en.rst
+++ b/doc/reference/commands/traffic_line.en.rst
@@ -71,6 +71,11 @@ Options
Restart the :program:`traffic_manager` process and the
:program:`traffic_server` process on all the nodes in a cluster.
+.. option:: -m REGEX, --match_var REGEX
+
+ Display the current values of all performance statistics or configuration
+ variables whose names match the given regular expression.
+
.. option:: -r VAR, --read_var VAR
Display specific performance statistics or a current configuration
@@ -144,677 +149,766 @@ Performance Statistics
The :option:`traffic_line -r` option accepts the following variable names::
- proxy.node.num_processes
- proxy.node.hostname_FQ
- proxy.node.hostname
- proxy.node.restarts.manager.start_time
- proxy.node.restarts.proxy.start_time
- proxy.node.restarts.proxy.stop_time
- proxy.node.restarts.proxy.restart_count
- proxy.node.version.manager.short
- proxy.node.version.manager.long
- proxy.node.version.manager.build_number
- proxy.node.version.manager.build_time
- proxy.node.version.manager.build_date
- proxy.node.version.manager.build_machine
- proxy.node.version.manager.build_person
- proxy.node.bandwidth_hit_ratio
- proxy.node.bandwidth_hit_ratio_int_pct
- proxy.node.hostdb.hit_ratio
- proxy.node.hostdb.hit_ratio_int_pct
- proxy.node.proxy_running
- proxy.node.cache.percent_free
- proxy.node.cache_hit_ratio
- proxy.node.cache_hit_ratio_int_pct
- proxy.node.cache_hit_ratio_avg_10s_int_pct
- proxy.node.bandwidth_hit_ratio_avg_10s_int_pct
- proxy.node.bandwidth_hit_ratio_avg_10s
- proxy.node.http.cache_hit_fresh_avg_10s
- proxy.node.http.cache_hit_revalidated_avg_10s
- proxy.node.http.cache_hit_ims_avg_10s
- proxy.node.http.cache_hit_stale_served_avg_10s
- proxy.node.http.cache_miss_cold_avg_10s
- proxy.node.http.cache_miss_changed_avg_10s
- proxy.node.http.cache_miss_not_cacheable_avg_10s
- proxy.node.http.cache_miss_client_no_cache_avg_10s
- proxy.node.http.cache_miss_ims_avg_10s
- proxy.node.http.cache_read_error_avg_10s
- proxy.node.cache_total_hits_avg_10s
- proxy.node.cache_total_misses_avg_10s
- proxy.node.cache_hit_ratio_avg_10s
- proxy.node.hostdb.total_lookups_avg_10s
- proxy.node.hostdb.total_hits_avg_10s
- proxy.node.hostdb.hit_ratio_avg_10s
- proxy.node.http.transaction_counts_avg_10s.hit_fresh
- proxy.node.http.transaction_counts_avg_10s.hit_revalidated
- proxy.node.http.transaction_counts_avg_10s.miss_cold
- proxy.node.http.transaction_counts_avg_10s.miss_not_cacheable
- proxy.node.http.transaction_counts_avg_10s.miss_changed
- proxy.node.http.transaction_counts_avg_10s.miss_client_no_cache
- proxy.node.http.transaction_counts_avg_10s.errors.connect_failed
- proxy.node.http.transaction_counts_avg_10s.errors.aborts
- proxy.node.http.transaction_counts_avg_10s.errors.possible_aborts
- proxy.node.http.transaction_counts_avg_10s.errors.pre_accept_hangups
- proxy.node.http.transaction_counts_avg_10s.errors.early_hangups
- proxy.node.http.transaction_counts_avg_10s.errors.empty_hangups
- proxy.node.http.transaction_counts_avg_10s.errors.other
- proxy.node.http.transaction_counts_avg_10s.other.unclassified
- proxy.node.http.transaction_frac_avg_10s.hit_fresh
- proxy.node.http.transaction_frac_avg_10s.hit_revalidated
- proxy.node.http.transaction_frac_avg_10s.miss_cold
- proxy.node.http.transaction_frac_avg_10s.miss_not_cacheable
- proxy.node.http.transaction_frac_avg_10s.miss_changed
- proxy.node.http.transaction_frac_avg_10s.miss_client_no_cache
- proxy.node.http.transaction_frac_avg_10s.errors.connect_failed
- proxy.node.http.transaction_frac_avg_10s.errors.aborts
- proxy.node.http.transaction_frac_avg_10s.errors.possible_aborts
- proxy.node.http.transaction_frac_avg_10s.errors.pre_accept_hangups
- proxy.node.http.transaction_frac_avg_10s.errors.early_hangups
- proxy.node.http.transaction_frac_avg_10s.errors.empty_hangups
- proxy.node.http.transaction_frac_avg_10s.errors.other
- proxy.node.http.transaction_frac_avg_10s.other.unclassified
- proxy.node.http.transaction_frac_avg_10s.hit_fresh_int_pct
- proxy.node.http.transaction_frac_avg_10s.hit_revalidated_int_pct
- proxy.node.http.transaction_frac_avg_10s.miss_cold_int_pct
- proxy.node.http.transaction_frac_avg_10s.miss_not_cacheable_int_pct
- proxy.node.http.transaction_frac_avg_10s.miss_changed_int_pct
- proxy.node.http.transaction_frac_avg_10s.miss_client_no_cache_int_pct
- proxy.node.http.transaction_frac_avg_10s.errors.connect_failed_int_pct
- proxy.node.http.transaction_frac_avg_10s.errors.aborts_int_pct
- proxy.node.http.transaction_frac_avg_10s.errors.possible_aborts_int_pct
- proxy.node.http.transaction_frac_avg_10s.errors.pre_accept_hangups_int_pct
- proxy.node.http.transaction_frac_avg_10s.errors.early_hangups_int_pct
- proxy.node.http.transaction_frac_avg_10s.errors.empty_hangups_int_pct
- proxy.node.http.transaction_frac_avg_10s.errors.other_int_pct
- proxy.node.http.transaction_frac_avg_10s.other.unclassified_int_pct
- proxy.node.http.transaction_msec_avg_10s.hit_fresh
- proxy.node.http.transaction_msec_avg_10s.hit_revalidated
- proxy.node.http.transaction_msec_avg_10s.miss_cold
- proxy.node.http.transaction_msec_avg_10s.miss_not_cacheable
- proxy.node.http.transaction_msec_avg_10s.miss_changed
- proxy.node.http.transaction_msec_avg_10s.miss_client_no_cache
- proxy.node.http.transaction_msec_avg_10s.errors.connect_failed
- proxy.node.http.transaction_msec_avg_10s.errors.aborts
- proxy.node.http.transaction_msec_avg_10s.errors.possible_aborts
- proxy.node.http.transaction_msec_avg_10s.errors.pre_accept_hangups
- proxy.node.http.transaction_msec_avg_10s.errors.early_hangups
- proxy.node.http.transaction_msec_avg_10s.errors.empty_hangups
- proxy.node.http.transaction_msec_avg_10s.errors.other
- proxy.node.http.transaction_msec_avg_10s.other.unclassified
- proxy.node.http.throughput
- proxy.node.http.user_agent_xacts_per_second
- proxy.node.http.user_agent_current_connections_count
- proxy.node.http.user_agent_total_request_bytes
- proxy.node.http.user_agent_total_response_bytes
- proxy.node.http.user_agents_total_transactions_count
- proxy.node.http.user_agents_total_documents_served
- proxy.node.http.origin_server_current_connections_count
- proxy.node.http.origin_server_total_request_bytes
- proxy.node.http.origin_server_total_response_bytes
- proxy.node.http.parent_proxy_total_request_bytes
- proxy.node.http.parent_proxy_total_response_bytes
- proxy.node.http.origin_server_total_transactions_count
- proxy.node.http.cache_current_connections_count
- proxy.node.http.current_parent_proxy_connections
- proxy.node.cache.contents.num_docs
- proxy.node.cache.bytes_total
- proxy.node.cache.bytes_total_mb
- proxy.node.cache.bytes_free
- proxy.node.cache.bytes_free_mb
- proxy.node.cache.percent_free_int_pct
- proxy.node.cache_total_hits
- proxy.node.cache_total_misses
- proxy.node.current_cache_connections
- proxy.node.dns.lookups_per_second
- proxy.node.dns.lookup_avg_time_ms
- proxy.node.dns.total_dns_lookups
- proxy.node.hostdb.total_lookups
- proxy.node.hostdb.total_hits
- proxy.node.cluster.nodes
- proxy.node.client_throughput_out
- proxy.node.client_throughput_out_kbit
- proxy.node.current_client_connections
- proxy.node.current_server_connections
- proxy.node.user_agent_total_bytes
- proxy.node.origin_server_total_bytes
- proxy.node.user_agent_total_bytes_avg_10s
- proxy.node.origin_server_total_bytes_avg_10s
- proxy.node.user_agent_xacts_per_second
- proxy.node.user_agents_total_documents_served
- proxy.cluster.user_agent_total_bytes_avg_10s
- proxy.cluster.origin_server_total_bytes_avg_10s
- proxy.cluster.bandwidth_hit_ratio
- proxy.cluster.bandwidth_hit_ratio_int_pct
- proxy.cluster.bandwidth_hit_ratio_avg_10s
- proxy.cluster.http.throughput
- proxy.cluster.http.user_agent_xacts_per_second
- proxy.cluster.http.user_agent_current_connections_count
- proxy.cluster.http.user_agent_total_request_bytes
- proxy.cluster.http.user_agent_total_response_bytes
- proxy.cluster.http.user_agents_total_transactions_count
- proxy.cluster.http.user_agents_total_documents_served
- proxy.cluster.http.origin_server_current_connections_count
- proxy.cluster.http.origin_server_total_request_bytes
- proxy.cluster.http.origin_server_total_response_bytes
- proxy.cluster.http.origin_server_total_transactions_count
- proxy.cluster.http.cache_current_connections_count
- proxy.cluster.http.current_parent_proxy_connections
- proxy.cluster.http.parent_proxy_total_request_bytes
- proxy.cluster.http.parent_proxy_total_response_bytes
- proxy.cluster.cache.contents.num_docs
- proxy.cluster.cache.bytes_free
- proxy.cluster.cache.bytes_free_mb
- proxy.cluster.cache.percent_free
- proxy.cluster.cache.percent_free_int_pct
- proxy.cluster.cache_hit_ratio
- proxy.cluster.cache_hit_ratio_int_pct
- proxy.cluster.cache_total_hits
- proxy.cluster.cache_total_misses
- proxy.cluster.current_cache_connections
- proxy.cluster.cache_total_hits_avg_10s
- proxy.cluster.cache_total_misses_avg_10s
- proxy.cluster.cache_hit_ratio_avg_10s
- proxy.cluster.dns.lookups_per_second
- proxy.cluster.dns.total_dns_lookups
- proxy.cluster.hostdb.hit_ratio
- proxy.cluster.hostdb.hit_ratio_int_pct
- proxy.cluster.hostdb.total_lookups_avg_10s
- proxy.cluster.hostdb.total_hits_avg_10s
- proxy.cluster.hostdb.hit_ratio_avg_10s
- proxy.cluster.user_agent_xacts_per_second
- proxy.cluster.client_throughput_out
- proxy.cluster.client_throughput_out_kbit
- proxy.cluster.current_client_connections
- proxy.cluster.current_server_connections
- proxy.process.version.server.short
- proxy.process.version.server.long
- proxy.process.version.server.build_number
- proxy.process.version.server.build_time
- proxy.process.version.server.build_date
- proxy.process.version.server.build_machine
- proxy.process.version.server.build_person
- proxy.process.net.net_handler_run
- proxy.process.net.read_bytes
- proxy.process.net.write_bytes
- proxy.process.net.calls_to_readfromnet
- proxy.process.net.calls_to_readfromnet_afterpoll
- proxy.process.net.calls_to_read
- proxy.process.net.calls_to_read_nodata
- proxy.process.net.calls_to_writetonet
- proxy.process.net.calls_to_writetonet_afterpoll
- proxy.process.net.calls_to_write
- proxy.process.net.calls_to_write_nodata
- proxy.process.socks.connections_successful
- proxy.process.socks.connections_unsuccessful
- proxy.process.cache.read_per_sec
- proxy.process.cache.write_per_sec
- proxy.process.cache.KB_read_per_sec
- proxy.process.cache.KB_write_per_sec
- proxy.process.cache.ram_cache.total_bytes
- proxy.process.hostdb.total_entries
- proxy.process.hostdb.total_lookups
- proxy.process.hostdb.ttl
- proxy.process.hostdb.ttl_expires
- proxy.process.hostdb.re_dns_on_reload
- proxy.process.hostdb.bytes
- proxy.process.dns.total_dns_lookups
- proxy.process.dns.lookup_avg_time
- proxy.process.dns.lookup_successes
- proxy.process.dns.fail_avg_time
- proxy.process.dns.lookup_failures
- proxy.process.dns.retries
- proxy.process.dns.max_retries_exceeded
- proxy.process.log.bytes_buffered
- proxy.process.log.bytes_written_to_disk
- proxy.process.log.bytes_sent_to_network
- proxy.process.log.bytes_received_from_network
- proxy.process.log.event_log_error
- proxy.process.log.event_log_access
- proxy.process.log.event_log_access_fail
- proxy.process.log.event_log_access_skip
- proxy.process.cache.volume_0.ram_cache.total_bytes
- proxy.process.http.completed_requests
- proxy.process.http.total_incoming_connections
- proxy.process.http.total_client_connections
- proxy.process.http.total_client_connections_ipv4
- proxy.process.http.total_client_connections_ipv6
- proxy.process.http.total_server_connections
- proxy.process.http.total_parent_proxy_connections
- proxy.process.http.avg_transactions_per_client_connection
- proxy.process.http.avg_transactions_per_server_connection
- proxy.process.http.avg_transactions_per_parent_connection
- proxy.process.http.client_connection_time
- proxy.process.http.parent_proxy_connection_time
- proxy.process.http.server_connection_time
- proxy.process.http.cache_connection_time
- proxy.process.http.transaction_counts.errors.pre_accept_hangups
- proxy.process.http.transaction_totaltime.errors.pre_accept_hangups
- proxy.process.http.transaction_counts.errors.empty_hangups
- proxy.process.http.transaction_totaltime.errors.empty_hangups
- proxy.process.http.transaction_counts.errors.early_hangups
- proxy.process.http.transaction_totaltime.errors.early_hangups
- proxy.process.http.incoming_requests
- proxy.process.http.outgoing_requests
- proxy.process.http.incoming_responses
- proxy.process.http.invalid_client_requests
- proxy.process.http.missing_host_hdr
- proxy.process.http.get_requests
- proxy.process.http.head_requests
- proxy.process.http.trace_requests
- proxy.process.http.options_requests
- proxy.process.http.post_requests
- proxy.process.http.put_requests
- proxy.process.http.push_requests
- proxy.process.http.delete_requests
- proxy.process.http.purge_requests
- proxy.process.http.connect_requests
- proxy.process.http.extension_method_requests
- proxy.process.http.client_no_cache_requests
- proxy.process.http.broken_server_connections
- proxy.process.http.cache_lookups
- proxy.process.http.cache_writes
- proxy.process.http.cache_updates
- proxy.process.http.cache_deletes
- proxy.process.http.tunnels
- proxy.process.http.throttled_proxy_only
- proxy.process.http.request_taxonomy.i0_n0_m0
- proxy.process.http.request_taxonomy.i1_n0_m0
- proxy.process.http.request_taxonomy.i0_n1_m0
- proxy.process.http.request_taxonomy.i1_n1_m0
- proxy.process.http.request_taxonomy.i0_n0_m1
- proxy.process.http.request_taxonomy.i1_n0_m1
- proxy.process.http.request_taxonomy.i0_n1_m1
- proxy.process.http.request_taxonomy.i1_n1_m1
- proxy.process.http.icp_suggested_lookups
- proxy.process.http.client_transaction_time
- proxy.process.http.client_write_time
- proxy.process.http.server_read_time
- proxy.process.http.icp_transaction_time
- proxy.process.http.icp_raw_transaction_time
- proxy.process.http.parent_proxy_transaction_time
- proxy.process.http.parent_proxy_raw_transaction_time
- proxy.process.http.server_transaction_time
- proxy.process.http.server_raw_transaction_time
- proxy.process.http.user_agent_request_header_total_size
- proxy.process.http.user_agent_response_header_total_size
- proxy.process.http.user_agent_request_document_total_size
- proxy.process.http.user_agent_response_document_total_size
- proxy.process.http.origin_server_request_header_total_size
- proxy.process.http.origin_server_response_header_total_size
- proxy.process.http.origin_server_request_document_total_size
- proxy.process.http.origin_server_response_document_total_size
- proxy.process.http.parent_proxy_request_total_bytes
- proxy.process.http.parent_proxy_response_total_bytes
- proxy.process.http.pushed_response_header_total_size
- proxy.process.http.pushed_document_total_size
- proxy.process.http.response_document_size_100
- proxy.process.http.response_document_size_1K
- proxy.process.http.response_document_size_3K
- proxy.process.http.response_document_size_5K
- proxy.process.http.response_document_size_10K
- proxy.process.http.response_document_size_1M
- proxy.process.http.response_document_size_inf
- proxy.process.http.request_document_size_100
- proxy.process.http.request_document_size_1K
- proxy.process.http.request_document_size_3K
- proxy.process.http.request_document_size_5K
- proxy.process.http.request_document_size_10K
- proxy.process.http.request_document_size_1M
- proxy.process.http.request_document_size_inf
- proxy.process.http.user_agent_speed_bytes_per_sec_100
- proxy.process.http.user_agent_speed_bytes_per_sec_1K
- proxy.process.http.user_agent_speed_bytes_per_sec_10K
- proxy.process.http.user_agent_speed_bytes_per_sec_100K
- proxy.process.http.user_agent_speed_bytes_per_sec_1M
- proxy.process.http.user_agent_speed_bytes_per_sec_10M
- proxy.process.http.user_agent_speed_bytes_per_sec_100M
- proxy.process.http.origin_server_speed_bytes_per_sec_100
- proxy.process.http.origin_server_speed_bytes_per_sec_1K
- proxy.process.http.origin_server_speed_bytes_per_sec_10K
- proxy.process.http.origin_server_speed_bytes_per_sec_100K
- proxy.process.http.origin_server_speed_bytes_per_sec_1M
- proxy.process.http.origin_server_speed_bytes_per_sec_10M
- proxy.process.http.origin_server_speed_bytes_per_sec_100M
- proxy.process.http.total_transactions_time
- proxy.process.http.total_transactions_think_time
- proxy.process.http.cache_hit_fresh
- proxy.process.http.cache_hit_revalidated
- proxy.process.http.cache_hit_ims
- proxy.process.http.cache_hit_stale_served
- proxy.process.http.cache_miss_cold
- proxy.process.http.cache_miss_changed
- proxy.process.http.cache_miss_client_no_cache
- proxy.process.http.cache_miss_client_not_cacheable
- proxy.process.http.cache_miss_ims
- proxy.process.http.cache_read_error
- proxy.process.http.tcp_hit_count_stat
- proxy.process.http.tcp_hit_user_agent_bytes_stat
- proxy.process.http.tcp_hit_origin_server_bytes_stat
- proxy.process.http.tcp_miss_count_stat
- proxy.process.http.tcp_miss_user_agent_bytes_stat
- proxy.process.http.tcp_miss_origin_server_bytes_stat
- proxy.process.http.tcp_expired_miss_count_stat
- proxy.process.http.tcp_expired_miss_user_agent_bytes_stat
- proxy.process.http.tcp_expired_miss_origin_server_bytes_stat
- proxy.process.http.tcp_refresh_hit_count_stat
- proxy.process.http.tcp_refresh_hit_user_agent_bytes_stat
- proxy.process.http.tcp_refresh_hit_origin_server_bytes_stat
- proxy.process.http.tcp_refresh_miss_count_stat
- proxy.process.http.tcp_refresh_miss_user_agent_bytes_stat
- proxy.process.http.tcp_refresh_miss_origin_server_bytes_stat
- proxy.process.http.tcp_client_refresh_count_stat
- proxy.process.http.tcp_client_refresh_user_agent_bytes_stat
- proxy.process.http.tcp_client_refresh_origin_server_bytes_stat
- proxy.process.http.tcp_ims_hit_count_stat
- proxy.process.http.tcp_ims_hit_user_agent_bytes_stat
- proxy.process.http.tcp_ims_hit_origin_server_bytes_stat
- proxy.process.http.tcp_ims_miss_count_stat
- proxy.process.http.tcp_ims_miss_user_agent_bytes_stat
- proxy.process.http.tcp_ims_miss_origin_server_bytes_stat
- proxy.process.http.err_client_abort_count_stat
- proxy.process.http.err_client_abort_user_agent_bytes_stat
- proxy.process.http.err_client_abort_origin_server_bytes_stat
- proxy.process.http.err_connect_fail_count_stat
- proxy.process.http.err_connect_fail_user_agent_bytes_stat
- proxy.process.http.err_connect_fail_origin_server_bytes_stat
- proxy.process.http.misc_count_stat
- proxy.process.http.misc_user_agent_bytes_stat
- proxy.process.http.background_fill_bytes_aborted_stat
- proxy.process.http.background_fill_bytes_completed_stat
- proxy.process.http.cache_write_errors
- proxy.process.http.cache_read_errors
- proxy.process.http.100_responses
- proxy.process.http.101_responses
- proxy.process.http.1xx_responses
- proxy.process.http.200_responses
- proxy.process.http.201_responses
- proxy.process.http.202_responses
- proxy.process.http.203_responses
- proxy.process.http.204_responses
- proxy.process.http.205_responses
- proxy.process.http.206_responses
- proxy.process.http.2xx_responses
- proxy.process.http.300_responses
- proxy.process.http.301_responses
- proxy.process.http.302_responses
- proxy.process.http.303_responses
- proxy.process.http.304_responses
- proxy.process.http.305_responses
- proxy.process.http.307_responses
- proxy.process.http.3xx_responses
- proxy.process.http.400_responses
- proxy.process.http.401_responses
- proxy.process.http.402_responses
- proxy.process.http.403_responses
- proxy.process.http.404_responses
- proxy.process.http.405_responses
- proxy.process.http.406_responses
- proxy.process.http.407_responses
- proxy.process.http.408_responses
- proxy.process.http.409_responses
- proxy.process.http.410_responses
- proxy.process.http.411_responses
- proxy.process.http.412_responses
- proxy.process.http.413_responses
- proxy.process.http.414_responses
- proxy.process.http.415_responses
- proxy.process.http.416_responses
- proxy.process.http.4xx_responses
- proxy.process.http.500_responses
- proxy.process.http.501_responses
- proxy.process.http.502_responses
- proxy.process.http.503_responses
- proxy.process.http.504_responses
- proxy.process.http.505_responses
- proxy.process.http.5xx_responses
- proxy.process.http.transaction_counts.hit_fresh
- proxy.process.http.transaction_totaltime.hit_fresh
- proxy.process.http.transaction_counts.hit_fresh.process
- proxy.process.http.transaction_totaltime.hit_fresh.process
- proxy.process.http.transaction_counts.hit_revalidated
- proxy.process.http.transaction_totaltime.hit_revalidated
- proxy.process.http.transaction_counts.miss_cold
- proxy.process.http.transaction_totaltime.miss_cold
- proxy.process.http.transaction_counts.miss_not_cacheable
- proxy.process.http.transaction_totaltime.miss_not_cacheable
- proxy.process.http.transaction_counts.miss_changed
- proxy.process.http.transaction_totaltime.miss_changed
- proxy.process.http.transaction_counts.miss_client_no_cache
- proxy.process.http.transaction_totaltime.miss_client_no_cache
- proxy.process.http.transaction_counts.errors.aborts
- proxy.process.http.transaction_totaltime.errors.aborts
- proxy.process.http.transaction_counts.errors.possible_aborts
- proxy.process.http.transaction_totaltime.errors.possible_aborts
- proxy.process.http.transaction_counts.errors.connect_failed
- proxy.process.http.transaction_totaltime.errors.connect_failed
- proxy.process.http.transaction_counts.errors.other
- proxy.process.http.transaction_totaltime.errors.other
- proxy.process.http.transaction_counts.other.unclassified
- proxy.process.http.transaction_totaltime.other.unclassified
- proxy.process.http.total_x_redirect_count
- proxy.process.icp.config_mgmt_callouts
- proxy.process.icp.reconfig_polls
- proxy.process.icp.reconfig_events
- proxy.process.icp.invalid_poll_data
- proxy.process.icp.no_data_read
- proxy.process.icp.short_read
- proxy.process.icp.invalid_sender
- proxy.process.icp.read_not_v2_icp
- proxy.process.icp.icp_remote_query_requests
- proxy.process.icp.icp_remote_responses
- proxy.process.icp.cache_lookup_success
- proxy.process.icp.cache_lookup_fail
- proxy.process.icp.query_response_write
- proxy.process.icp.query_response_partial_write
- proxy.process.icp.no_icp_request_for_response
- proxy.process.icp.icp_response_request_nolock
- proxy.process.icp.icp_start_icpoff
- proxy.process.icp.send_query_partial_write
- proxy.process.icp.icp_queries_no_expected_replies
- proxy.process.icp.icp_query_hits
- proxy.process.icp.icp_query_misses
- proxy.process.icp.invalid_icp_query_response
- proxy.process.icp.icp_query_requests
- proxy.process.icp.total_icp_response_time
- proxy.process.icp.total_udp_send_queries
- proxy.process.icp.total_icp_request_time
- proxy.process.net.connections_currently_open
- proxy.process.net.accepts_currently_open
- proxy.process.socks.connections_currently_open
- proxy.process.cache.bytes_used
- proxy.process.cache.bytes_total
- proxy.process.cache.ram_cache.bytes_used
- proxy.process.cache.ram_cache.hits
- proxy.process.cache.pread_count
- proxy.process.cache.percent_full
- proxy.process.cache.lookup.active
- proxy.process.cache.lookup.success
- proxy.process.cache.lookup.failure
- proxy.process.cache.read.active
- proxy.process.cache.read.success
- proxy.process.cache.read.failure
- proxy.process.cache.write.active
- proxy.process.cache.write.success
- proxy.process.cache.write.failure
- proxy.process.cache.write.backlog.failure
- proxy.process.cache.update.active
- proxy.process.cache.update.success
- proxy.process.cache.update.failure
- proxy.process.cache.remove.active
- proxy.process.cache.remove.success
- proxy.process.cache.remove.failure
- proxy.process.cache.evacuate.active
- proxy.process.cache.evacuate.success
- proxy.process.cache.evacuate.failure
- proxy.process.cache.scan.active
- proxy.process.cache.scan.success
- proxy.process.cache.scan.failure
- proxy.process.cache.direntries.total
- proxy.process.cache.direntries.used
- proxy.process.cache.directory_collision
- proxy.process.cache.frags_per_doc.1
- proxy.process.cache.frags_per_doc.2
- proxy.process.cache.frags_per_doc.3+
- proxy.process.cache.read_busy.success
- proxy.process.cache.read_busy.failure
- proxy.process.cache.write_bytes_stat
- proxy.process.cache.vector_marshals
- proxy.process.cache.hdr_marshals
- proxy.process.cache.hdr_marshal_bytes
- proxy.process.cache.gc_bytes_evacuated
- proxy.process.cache.gc_frags_evacuated
- proxy.process.hostdb.total_hits
- proxy.process.dns.success_avg_time
- proxy.process.dns.in_flight
- proxy.process.congestion.congested_on_conn_failures
- proxy.process.congestion.congested_on_max_connection
- proxy.process.cluster.connections_open
- proxy.process.cluster.connections_opened
- proxy.process.cluster.connections_closed
- proxy.process.cluster.slow_ctrl_msgs_sent
- proxy.process.cluster.connections_locked
- proxy.process.cluster.reads
- proxy.process.cluster.read_bytes
- proxy.process.cluster.writes
- proxy.process.cluster.write_bytes
- proxy.process.cluster.control_messages_sent
- proxy.process.cluster.control_messages_received
- proxy.process.cluster.op_delayed_for_lock
- proxy.process.cluster.connections_bumped
- proxy.process.cluster.net_backup
- proxy.process.cluster.nodes
- proxy.process.cluster.machines_allocated
- proxy.process.cluster.machines_freed
- proxy.process.cluster.configuration_changes
- proxy.process.cluster.delayed_reads
- proxy.process.cluster.byte_bank_used
- proxy.process.cluster.alloc_data_news
- proxy.process.cluster.write_bb_mallocs
- proxy.process.cluster.partial_reads
- proxy.process.cluster.partial_writes
- proxy.process.cluster.cache_outstanding
- proxy.process.cluster.remote_op_timeouts
- proxy.process.cluster.remote_op_reply_timeouts
- proxy.process.cluster.chan_inuse
- proxy.process.cluster.open_delays
- proxy.process.cluster.connections_avg_time
- proxy.process.cluster.control_messages_avg_send_time
- proxy.process.cluster.control_messages_avg_receive_time
- proxy.process.cluster.open_delay_time
- proxy.process.cluster.cache_callback_time
- proxy.process.cluster.rmt_cache_callback_time
- proxy.process.cluster.lkrmt_cache_callback_time
- proxy.process.cluster.local_connection_time
- proxy.process.cluster.remote_connection_time
- proxy.process.cluster.rdmsg_assemble_time
- proxy.process.cluster.cluster_ping_time
- proxy.process.cluster.cache_callbacks
- proxy.process.cluster.rmt_cache_callbacks
- proxy.process.cluster.lkrmt_cache_callbacks
- proxy.process.cluster.local_connections_closed
- proxy.process.cluster.remote_connections_closed
- proxy.process.cluster.setdata_no_clustervc
- proxy.process.cluster.setdata_no_tunnel
- proxy.process.cluster.setdata_no_cachevc
- proxy.process.cluster.setdata_no_cluster
- proxy.process.cluster.vc_write_stall
- proxy.process.cluster.no_remote_space
- proxy.process.cluster.level1_bank
- proxy.process.cluster.multilevel_bank
- proxy.process.cluster.vc_cache_insert_lock_misses
- proxy.process.cluster.vc_cache_inserts
- proxy.process.cluster.vc_cache_lookup_lock_misses
- proxy.process.cluster.vc_cache_lookup_hits
- proxy.process.cluster.vc_cache_lookup_misses
- proxy.process.cluster.vc_cache_scans
- proxy.process.cluster.vc_cache_scan_lock_misses
- proxy.process.cluster.vc_cache_purges
- proxy.process.cluster.write_lock_misses
- proxy.process.log.log_files_open
- proxy.process.log.log_files_space_used
- proxy.process.http.background_fill_current_count
- proxy.process.http.current_client_connections
- proxy.process.http.current_active_client_connections
- proxy.process.http.current_client_transactions
- proxy.process.http.current_parent_proxy_transactions
- proxy.process.http.current_icp_transactions
- proxy.process.http.current_server_transactions
- proxy.process.http.current_parent_proxy_raw_transactions
- proxy.process.http.current_icp_raw_transactions
- proxy.process.http.current_server_raw_transactions
- proxy.process.http.current_parent_proxy_connections
- proxy.process.http.current_server_connections
- proxy.process.http.current_cache_connections
- proxy.process.update.successes
- proxy.process.update.no_actions
- proxy.process.update.fails
- proxy.process.update.unknown_status
- proxy.process.update.state_machines
- proxy.process.cache.volume_0.bytes_used
- proxy.process.cache.volume_0.bytes_total
- proxy.process.cache.volume_0.ram_cache.bytes_used
- proxy.process.cache.volume_0.ram_cache.hits
- proxy.process.cache.volume_0.pread_count
- proxy.process.cache.volume_0.percent_full
- proxy.process.cache.volume_0.lookup.active
- proxy.process.cache.volume_0.lookup.success
- proxy.process.cache.volume_0.lookup.failure
- proxy.process.cache.volume_0.read.active
- proxy.process.cache.volume_0.read.success
- proxy.process.cache.volume_0.read.failure
- proxy.process.cache.volume_0.write.active
- proxy.process.cache.volume_0.write.success
- proxy.process.cache.volume_0.write.failure
- proxy.process.cache.volume_0.write.backlog.failure
- proxy.process.cache.volume_0.update.active
- proxy.process.cache.volume_0.update.success
- proxy.process.cache.volume_0.update.failure
- proxy.process.cache.volume_0.remove.active
- proxy.process.cache.volume_0.remove.success
- proxy.process.cache.volume_0.remove.failure
- proxy.process.cache.volume_0.evacuate.active
- proxy.process.cache.volume_0.evacuate.success
- proxy.process.cache.volume_0.evacuate.failure
- proxy.process.cache.volume_0.scan.active
- proxy.process.cache.volume_0.scan.success
- proxy.process.cache.volume_0.scan.failure
- proxy.process.cache.volume_0.direntries.total
- proxy.process.cache.volume_0.direntries.used
- proxy.process.cache.volume_0.directory_collision
- proxy.process.cache.volume_0.frags_per_doc.1
- proxy.process.cache.volume_0.frags_per_doc.2
- proxy.process.cache.volume_0.frags_per_doc.3+
- proxy.process.cache.volume_0.read_busy.success
- proxy.process.cache.volume_0.read_busy.failure
- proxy.process.cache.volume_0.write_bytes_stat
- proxy.process.cache.volume_0.vector_marshals
- proxy.process.cache.volume_0.hdr_marshals
- proxy.process.cache.volume_0.hdr_marshal_bytes
- proxy.process.cache.volume_0.gc_bytes_evacuated
- proxy.process.cache.volume_0.gc_frags_evacuated
- proxy.process.ssl.user_agent_other_errors
- proxy.process.ssl.user_agent_expired_cert
- proxy.process.ssl.user_agent_revoked_cert
- proxy.process.ssl.user_agent_unknown_cert
- proxy.process.ssl.user_agent_cert_verify_failed
- proxy.process.ssl.user_agent_bad_cert
- proxy.process.ssl.user_agent_decryption_failed
- proxy.process.ssl.user_agent_wrong_version
- proxy.process.ssl.user_agent_unknown_ca
- proxy.process.ssl.origin_server_other_errors
- proxy.process.ssl.origin_server_expired_cert
- proxy.process.ssl.origin_server_revoked_cert
- proxy.process.ssl.origin_server_unknown_cert
- proxy.process.ssl.origin_server_cert_verify_failed
- proxy.process.ssl.origin_server_bad_cert
- proxy.process.ssl.origin_server_decryption_failed
- proxy.process.ssl.origin_server_wrong_version
- proxy.process.ssl.origin_server_unknown_ca
- proxy.process.ssl.user_agent_sessions
- proxy.process.ssl.user_agent_session_hit
- proxy.process.ssl.user_agent_session_miss
- proxy.process.ssl.user_agent_session_timeout
- proxy.process.ssl.cipher.user_agent.{cipherName}
+ proxy.cluster.bandwidth_hit_ratio
+ proxy.cluster.bandwidth_hit_ratio_avg_10s
+ proxy.cluster.bandwidth_hit_ratio_int_pct
+ proxy.cluster.cache.bytes_free
+ proxy.cluster.cache.bytes_free_mb
+ proxy.cluster.cache.contents.num_docs
+ proxy.cluster.cache.percent_free
+ proxy.cluster.cache.percent_free_int_pct
+ proxy.cluster.cache_hit_mem_ratio
+ proxy.cluster.cache_hit_mem_ratio_avg_10s
+ proxy.cluster.cache_hit_mem_ratio_int_pct
+ proxy.cluster.cache_hit_ratio
+ proxy.cluster.cache_hit_ratio_avg_10s
+ proxy.cluster.cache_hit_ratio_int_pct
+ proxy.cluster.cache_total_hits
+ proxy.cluster.cache_total_hits_avg_10s
+ proxy.cluster.cache_total_hits_mem
+ proxy.cluster.cache_total_hits_mem_avg_10s
+ proxy.cluster.cache_total_misses
+ proxy.cluster.cache_total_misses_avg_10s
+ proxy.cluster.client_throughput_out
+ proxy.cluster.client_throughput_out_kbit
+ proxy.cluster.current_cache_connections
+ proxy.cluster.current_client_connections
+ proxy.cluster.current_server_connections
+ proxy.cluster.dns.lookups_per_second
+ proxy.cluster.dns.total_dns_lookups
+ proxy.cluster.hostdb.hit_ratio
+ proxy.cluster.hostdb.hit_ratio_avg_10s
+ proxy.cluster.hostdb.hit_ratio_int_pct
+ proxy.cluster.hostdb.total_hits_avg_10s
+ proxy.cluster.hostdb.total_lookups_avg_10s
+ proxy.cluster.http.cache_current_connections_count
+ proxy.cluster.http.current_parent_proxy_connections
+ proxy.cluster.http.origin_server_current_connections_count
+ proxy.cluster.http.origin_server_total_request_bytes
+ proxy.cluster.http.origin_server_total_response_bytes
+ proxy.cluster.http.origin_server_total_transactions_count
+ proxy.cluster.http.parent_proxy_total_request_bytes
+ proxy.cluster.http.parent_proxy_total_response_bytes
+ proxy.cluster.http.throughput
+ proxy.cluster.http.user_agent_current_connections_count
+ proxy.cluster.http.user_agent_total_request_bytes
+ proxy.cluster.http.user_agent_total_response_bytes
+ proxy.cluster.http.user_agent_xacts_per_second
+ proxy.cluster.http.user_agents_total_documents_served
+ proxy.cluster.http.user_agents_total_transactions_count
+
+ proxy.cluster.log.bytes_flush_to_disk
+ proxy.cluster.log.bytes_lost_before_flush_to_disk
+ proxy.cluster.log.bytes_lost_before_preproc
+ proxy.cluster.log.bytes_lost_before_sent_to_network
+ proxy.cluster.log.bytes_lost_before_written_to_disk
+ proxy.cluster.log.bytes_received_from_network
+ proxy.cluster.log.bytes_received_from_network_avg_10s
+ proxy.cluster.log.bytes_sent_to_network
+ proxy.cluster.log.bytes_sent_to_network_avg_10s
+ proxy.cluster.log.bytes_written_to_disk
+ proxy.cluster.log.event_log_access_aggr
+ proxy.cluster.log.event_log_access_fail
+ proxy.cluster.log.event_log_access_full
+ proxy.cluster.log.event_log_access_ok
+ proxy.cluster.log.event_log_access_skip
+ proxy.cluster.log.event_log_error_aggr
+ proxy.cluster.log.event_log_error_fail
+ proxy.cluster.log.event_log_error_full
+ proxy.cluster.log.event_log_error_ok
+ proxy.cluster.log.event_log_error_skip
+ proxy.cluster.log.num_flush_to_disk
+ proxy.cluster.log.num_lost_before_flush_to_disk
+ proxy.cluster.log.num_lost_before_sent_to_network
+ proxy.cluster.log.num_received_from_network
+ proxy.cluster.log.num_sent_to_network
+
+ proxy.cluster.origin_server_total_bytes_avg_10s
+ proxy.cluster.user_agent_total_bytes_avg_10s
+ proxy.cluster.user_agent_xacts_per_second
+
+ proxy.node.bandwidth_hit_ratio
+ proxy.node.bandwidth_hit_ratio_avg_10s
+ proxy.node.bandwidth_hit_ratio_avg_10s_int_pct
+ proxy.node.bandwidth_hit_ratio_int_pct
+
+ proxy.node.cache.bytes_free
+ proxy.node.cache.bytes_free_mb
+ proxy.node.cache.bytes_total
+ proxy.node.cache.bytes_total_mb
+ proxy.node.cache.contents.num_docs
+ proxy.node.cache.percent_free
+ proxy.node.cache.percent_free_int_pct
+ proxy.node.cache_hit_mem_ratio
+ proxy.node.cache_hit_mem_ratio_avg_10s
+ proxy.node.cache_hit_mem_ratio_avg_10s_int_pct
+ proxy.node.cache_hit_mem_ratio_int_pct
+ proxy.node.cache_hit_ratio
+ proxy.node.cache_hit_ratio_avg_10s
+ proxy.node.cache_hit_ratio_avg_10s_int_pct
+ proxy.node.cache_hit_ratio_int_pct
+ proxy.node.cache_total_hits
+ proxy.node.cache_total_hits_avg_10s
+ proxy.node.cache_total_hits_mem
+ proxy.node.cache_total_hits_mem_avg_10s
+ proxy.node.cache_total_misses
+ proxy.node.cache_total_misses_avg_10s
+
+ proxy.node.client_throughput_out
+ proxy.node.client_throughput_out_kbit
+ proxy.node.cluster.nodes
+
+ proxy.node.current_cache_connections
+ proxy.node.current_client_connections
+ proxy.node.current_server_connections
+
+ proxy.node.dns.lookup_avg_time_ms
+ proxy.node.dns.lookups_per_second
+ proxy.node.dns.total_dns_lookups
+
+ proxy.node.hostdb.hit_ratio
+ proxy.node.hostdb.hit_ratio_avg_10s
+ proxy.node.hostdb.hit_ratio_int_pct
+ proxy.node.hostdb.total_hits
+ proxy.node.hostdb.total_hits_avg_10s
+ proxy.node.hostdb.total_lookups
+ proxy.node.hostdb.total_lookups_avg_10s
+
+ proxy.node.hostname
+ proxy.node.hostname_FQ
+
+ proxy.node.http.cache_current_connections_count
+ proxy.node.http.cache_hit_fresh_avg_10s
+ proxy.node.http.cache_hit_ims_avg_10s
+ proxy.node.http.cache_hit_mem_fresh_avg_10s
+ proxy.node.http.cache_hit_revalidated_avg_10s
+ proxy.node.http.cache_hit_stale_served_avg_10s
+ proxy.node.http.cache_miss_changed_avg_10s
+ proxy.node.http.cache_miss_client_no_cache_avg_10s
+ proxy.node.http.cache_miss_cold_avg_10s
+ proxy.node.http.cache_miss_ims_avg_10s
+ proxy.node.http.cache_miss_not_cacheable_avg_10s
+ proxy.node.http.cache_read_error_avg_10s
+ proxy.node.http.current_parent_proxy_connections
+ proxy.node.http.origin_server_current_connections_count
+ proxy.node.http.origin_server_total_request_bytes
+ proxy.node.http.origin_server_total_response_bytes
+ proxy.node.http.origin_server_total_transactions_count
+ proxy.node.http.parent_proxy_total_request_bytes
+ proxy.node.http.parent_proxy_total_response_bytes
+ proxy.node.http.throughput
+ proxy.node.http.transaction_counts_avg_10s.errors.aborts
+ proxy.node.http.transaction_counts_avg_10s.errors.connect_failed
+ proxy.node.http.transaction_counts_avg_10s.errors.early_hangups
+ proxy.node.http.transaction_counts_avg_10s.errors.empty_hangups
+ proxy.node.http.transaction_counts_avg_10s.errors.other
+ proxy.node.http.transaction_counts_avg_10s.errors.possible_aborts
+ proxy.node.http.transaction_counts_avg_10s.errors.pre_accept_hangups
+ proxy.node.http.transaction_counts_avg_10s.hit_fresh
+ proxy.node.http.transaction_counts_avg_10s.hit_revalidated
+ proxy.node.http.transaction_counts_avg_10s.miss_changed
+ proxy.node.http.transaction_counts_avg_10s.miss_client_no_cache
+ proxy.node.http.transaction_counts_avg_10s.miss_cold
+ proxy.node.http.transaction_counts_avg_10s.miss_not_cacheable
+ proxy.node.http.transaction_counts_avg_10s.other.unclassified
+ proxy.node.http.transaction_frac_avg_10s.errors.aborts
+ proxy.node.http.transaction_frac_avg_10s.errors.aborts_int_pct
+ proxy.node.http.transaction_frac_avg_10s.errors.connect_failed
+ proxy.node.http.transaction_frac_avg_10s.errors.connect_failed_int_pct
+ proxy.node.http.transaction_frac_avg_10s.errors.early_hangups
+ proxy.node.http.transaction_frac_avg_10s.errors.early_hangups_int_pct
+ proxy.node.http.transaction_frac_avg_10s.errors.empty_hangups
+ proxy.node.http.transaction_frac_avg_10s.errors.empty_hangups_int_pct
+ proxy.node.http.transaction_frac_avg_10s.errors.other
+ proxy.node.http.transaction_frac_avg_10s.errors.other_int_pct
+ proxy.node.http.transaction_frac_avg_10s.errors.possible_aborts
+ proxy.node.http.transaction_frac_avg_10s.errors.possible_aborts_int_pct
+ proxy.node.http.transaction_frac_avg_10s.errors.pre_accept_hangups
+ proxy.node.http.transaction_frac_avg_10s.errors.pre_accept_hangups_int_pct
+ proxy.node.http.transaction_frac_avg_10s.hit_fresh
+ proxy.node.http.transaction_frac_avg_10s.hit_fresh_int_pct
+ proxy.node.http.transaction_frac_avg_10s.hit_revalidated
+ proxy.node.http.transaction_frac_avg_10s.hit_revalidated_int_pct
+ proxy.node.http.transaction_frac_avg_10s.miss_changed
+ proxy.node.http.transaction_frac_avg_10s.miss_changed_int_pct
+ proxy.node.http.transaction_frac_avg_10s.miss_client_no_cache
+ proxy.node.http.transaction_frac_avg_10s.miss_client_no_cache_int_pct
+ proxy.node.http.transaction_frac_avg_10s.miss_cold
+ proxy.node.http.transaction_frac_avg_10s.miss_cold_int_pct
+ proxy.node.http.transaction_frac_avg_10s.miss_not_cacheable
+ proxy.node.http.transaction_frac_avg_10s.miss_not_cacheable_int_pct
+ proxy.node.http.transaction_frac_avg_10s.other.unclassified
+ proxy.node.http.transaction_frac_avg_10s.other.unclassified_int_pct
+ proxy.node.http.transaction_msec_avg_10s.errors.aborts
+ proxy.node.http.transaction_msec_avg_10s.errors.connect_failed
+ proxy.node.http.transaction_msec_avg_10s.errors.early_hangups
+ proxy.node.http.transaction_msec_avg_10s.errors.empty_hangups
+ proxy.node.http.transaction_msec_avg_10s.errors.other
+ proxy.node.http.transaction_msec_avg_10s.errors.possible_aborts
+ proxy.node.http.transaction_msec_avg_10s.errors.pre_accept_hangups
+ proxy.node.http.transaction_msec_avg_10s.hit_fresh
+ proxy.node.http.transaction_msec_avg_10s.hit_revalidated
+ proxy.node.http.transaction_msec_avg_10s.miss_changed
+ proxy.node.http.transaction_msec_avg_10s.miss_client_no_cache
+ proxy.node.http.transaction_msec_avg_10s.miss_cold
+ proxy.node.http.transaction_msec_avg_10s.miss_not_cacheable
+ proxy.node.http.transaction_msec_avg_10s.other.unclassified
+ proxy.node.http.user_agent_current_connections_count
+ proxy.node.http.user_agent_total_request_bytes
+ proxy.node.http.user_agent_total_response_bytes
+ proxy.node.http.user_agent_xacts_per_second
+ proxy.node.http.user_agents_total_documents_served
+ proxy.node.http.user_agents_total_transactions_count
+
+ proxy.node.log.bytes_flush_to_disk
+ proxy.node.log.bytes_lost_before_flush_to_disk
+ proxy.node.log.bytes_lost_before_preproc
+ proxy.node.log.bytes_lost_before_sent_to_network
+ proxy.node.log.bytes_lost_before_written_to_disk
+ proxy.node.log.bytes_received_from_network
+ proxy.node.log.bytes_received_from_network_avg_10s
+ proxy.node.log.bytes_sent_to_network
+ proxy.node.log.bytes_sent_to_network_avg_10s
+ proxy.node.log.bytes_written_to_disk
+ proxy.node.log.event_log_access_aggr
+ proxy.node.log.event_log_access_fail
+ proxy.node.log.event_log_access_full
+ proxy.node.log.event_log_access_ok
+ proxy.node.log.event_log_access_skip
+ proxy.node.log.event_log_error_aggr
+ proxy.node.log.event_log_error_fail
+ proxy.node.log.event_log_error_full
+ proxy.node.log.event_log_error_ok
+ proxy.node.log.event_log_error_skip
+ proxy.node.log.num_flush_to_disk
+ proxy.node.log.num_lost_before_flush_to_disk
+ proxy.node.log.num_lost_before_sent_to_network
+ proxy.node.log.num_received_from_network
+ proxy.node.log.num_sent_to_network
+
+ proxy.node.num_processes
+
+ proxy.node.origin_server_total_bytes
+ proxy.node.origin_server_total_bytes_avg_10s
+
+ proxy.node.proxy_running
+
+ proxy.node.restarts.manager.start_time
+ proxy.node.restarts.proxy.cache_ready_time
+ proxy.node.restarts.proxy.restart_count
+ proxy.node.restarts.proxy.start_time
+ proxy.node.restarts.proxy.stop_time
+
+ proxy.node.user_agent_total_bytes
+ proxy.node.user_agent_total_bytes_avg_10s
+ proxy.node.user_agent_xacts_per_second
+ proxy.node.user_agents_total_documents_served
+
+ proxy.node.version.manager.build_date
+ proxy.node.version.manager.build_machine
+ proxy.node.version.manager.build_number
+ proxy.node.version.manager.build_person
+ proxy.node.version.manager.build_time
+ proxy.node.version.manager.long
+ proxy.node.version.manager.short
+
+ proxy.process.cache.KB_read_per_sec
+ proxy.process.cache.KB_write_per_sec
+ proxy.process.cache.bytes_total
+ proxy.process.cache.bytes_used
+ proxy.process.cache.directory_collision
+ proxy.process.cache.direntries.total
+ proxy.process.cache.direntries.used
+ proxy.process.cache.evacuate.active
+ proxy.process.cache.evacuate.failure
+ proxy.process.cache.evacuate.success
+ proxy.process.cache.frags_per_doc.1
+ proxy.process.cache.frags_per_doc.2
+ proxy.process.cache.frags_per_doc.3+
+ proxy.process.cache.gc_bytes_evacuated
+ proxy.process.cache.gc_frags_evacuated
+ proxy.process.cache.hdr_marshal_bytes
+ proxy.process.cache.hdr_marshals
+ proxy.process.cache.lookup.active
+ proxy.process.cache.lookup.failure
+ proxy.process.cache.lookup.success
+ proxy.process.cache.percent_full
+ proxy.process.cache.pread_count
+ proxy.process.cache.ram_cache.bytes_used
+ proxy.process.cache.ram_cache.hits
+ proxy.process.cache.ram_cache.misses
+ proxy.process.cache.ram_cache.total_bytes
+ proxy.process.cache.read.active
+ proxy.process.cache.read.failure
+ proxy.process.cache.read.success
+ proxy.process.cache.read_busy.failure
+ proxy.process.cache.read_busy.success
+ proxy.process.cache.read_per_sec
+ proxy.process.cache.remove.active
+ proxy.process.cache.remove.failure
+ proxy.process.cache.remove.success
+ proxy.process.cache.scan.active
+ proxy.process.cache.scan.failure
+ proxy.process.cache.scan.success
+ proxy.process.cache.update.active
+ proxy.process.cache.update.failure
+ proxy.process.cache.update.success
+ proxy.process.cache.vector_marshals
+ proxy.process.cache.volume_{N}.bytes_total
+ proxy.process.cache.volume_{N}.bytes_used
+ proxy.process.cache.volume_{N}.directory_collision
+ proxy.process.cache.volume_{N}.direntries.total
+ proxy.process.cache.volume_{N}.direntries.used
+ proxy.process.cache.volume_{N}.evacuate.active
+ proxy.process.cache.volume_{N}.evacuate.failure
+ proxy.process.cache.volume_{N}.evacuate.success
+ proxy.process.cache.volume_{N}.frags_per_doc.1
+ proxy.process.cache.volume_{N}.frags_per_doc.2
+ proxy.process.cache.volume_{N}.frags_per_doc.3+
+ proxy.process.cache.volume_{N}.gc_bytes_evacuated
+ proxy.process.cache.volume_{N}.gc_frags_evacuated
+ proxy.process.cache.volume_{N}.hdr_marshal_bytes
+ proxy.process.cache.volume_{N}.hdr_marshals
+ proxy.process.cache.volume_{N}.lookup.active
+ proxy.process.cache.volume_{N}.lookup.failure
+ proxy.process.cache.volume_{N}.lookup.success
+ proxy.process.cache.volume_{N}.percent_full
+ proxy.process.cache.volume_{N}.pread_count
+ proxy.process.cache.volume_{N}.ram_cache.bytes_used
+ proxy.process.cache.volume_{N}.ram_cache.hits
+ proxy.process.cache.volume_{N}.ram_cache.misses
+ proxy.process.cache.volume_{N}.ram_cache.total_bytes
+ proxy.process.cache.volume_{N}.read.active
+ proxy.process.cache.volume_{N}.read.failure
+ proxy.process.cache.volume_{N}.read.success
+ proxy.process.cache.volume_{N}.read_busy.failure
+ proxy.process.cache.volume_{N}.read_busy.success
+ proxy.process.cache.volume_{N}.remove.active
+ proxy.process.cache.volume_{N}.remove.failure
+ proxy.process.cache.volume_{N}.remove.success
+ proxy.process.cache.volume_{N}.scan.active
+ proxy.process.cache.volume_{N}.scan.failure
+ proxy.process.cache.volume_{N}.scan.success
+ proxy.process.cache.volume_{N}.update.active
+ proxy.process.cache.volume_{N}.update.failure
+ proxy.process.cache.volume_{N}.update.success
+ proxy.process.cache.volume_{N}.vector_marshals
+ proxy.process.cache.volume_{N}.write.active
+ proxy.process.cache.volume_{N}.write.backlog.failure
+ proxy.process.cache.volume_{N}.write.failure
+ proxy.process.cache.volume_{N}.write.success
+ proxy.process.cache.volume_{N}.write_bytes_stat
+ proxy.process.cache.write.active
+ proxy.process.cache.write.backlog.failure
+ proxy.process.cache.write.failure
+ proxy.process.cache.write.success
+ proxy.process.cache.write_bytes_stat
+ proxy.process.cache.write_per_sec
+
+ proxy.process.cluster.alloc_data_news
+ proxy.process.cluster.byte_bank_used
+ proxy.process.cluster.cache_callback_time
+ proxy.process.cluster.cache_callbacks
+ proxy.process.cluster.cache_outstanding
+ proxy.process.cluster.chan_inuse
+ proxy.process.cluster.cluster_ping_time
+ proxy.process.cluster.configuration_changes
+ proxy.process.cluster.connections_avg_time
+ proxy.process.cluster.connections_bumped
+ proxy.process.cluster.connections_closed
+ proxy.process.cluster.connections_open
+ proxy.process.cluster.connections_opened
+ proxy.process.cluster.connections_read_locked
+ proxy.process.cluster.connections_write_locked
+ proxy.process.cluster.control_messages_avg_receive_time
+ proxy.process.cluster.control_messages_avg_send_time
+ proxy.process.cluster.control_messages_received
+ proxy.process.cluster.control_messages_sent
+ proxy.process.cluster.delayed_reads
+ proxy.process.cluster.level1_bank
+ proxy.process.cluster.lkrmt_cache_callback_time
+ proxy.process.cluster.lkrmt_cache_callbacks
+ proxy.process.cluster.local_connection_time
+ proxy.process.cluster.local_connections_closed
+ proxy.process.cluster.machines_allocated
+ proxy.process.cluster.machines_freed
+ proxy.process.cluster.multilevel_bank
+ proxy.process.cluster.net_backup
+ proxy.process.cluster.no_remote_space
+ proxy.process.cluster.nodes
+ proxy.process.cluster.op_delayed_for_lock
+ proxy.process.cluster.open_delay_time
+ proxy.process.cluster.open_delays
+ proxy.process.cluster.partial_reads
+ proxy.process.cluster.partial_writes
+ proxy.process.cluster.rdmsg_assemble_time
+ proxy.process.cluster.read_bytes
+ proxy.process.cluster.reads
+ proxy.process.cluster.remote_connection_time
+ proxy.process.cluster.remote_connections_closed
+ proxy.process.cluster.remote_op_reply_timeouts
+ proxy.process.cluster.remote_op_timeouts
+ proxy.process.cluster.rmt_cache_callback_time
+ proxy.process.cluster.rmt_cache_callbacks
+ proxy.process.cluster.setdata_no_cachevc
+ proxy.process.cluster.setdata_no_cluster
+ proxy.process.cluster.setdata_no_clustervc
+ proxy.process.cluster.setdata_no_tunnel
+ proxy.process.cluster.slow_ctrl_msgs_sent
+ proxy.process.cluster.vc_cache_insert_lock_misses
+ proxy.process.cluster.vc_cache_inserts
+ proxy.process.cluster.vc_cache_lookup_hits
+ proxy.process.cluster.vc_cache_lookup_lock_misses
+ proxy.process.cluster.vc_cache_lookup_misses
+ proxy.process.cluster.vc_cache_purges
+ proxy.process.cluster.vc_cache_scan_lock_misses
+ proxy.process.cluster.vc_cache_scans
+ proxy.process.cluster.vc_read_list_len
+ proxy.process.cluster.vc_write_list_len
+ proxy.process.cluster.vc_write_stall
+ proxy.process.cluster.write_bb_mallocs
+ proxy.process.cluster.write_bytes
+ proxy.process.cluster.write_lock_misses
+ proxy.process.cluster.writes
+
+ proxy.process.congestion.congested_on_conn_failures
+ proxy.process.congestion.congested_on_max_connection
+
+ proxy.process.dns.fail_avg_time
+ proxy.process.dns.in_flight
+ proxy.process.dns.lookup_avg_time
+ proxy.process.dns.lookup_failures
+ proxy.process.dns.lookup_successes
+ proxy.process.dns.max_retries_exceeded
+ proxy.process.dns.retries
+ proxy.process.dns.success_avg_time
+ proxy.process.dns.total_dns_lookups
+
+ proxy.process.hostdb.bytes
+ proxy.process.hostdb.re_dns_on_reload
+ proxy.process.hostdb.total_entries
+ proxy.process.hostdb.total_hits
+ proxy.process.hostdb.total_lookups
+ proxy.process.hostdb.ttl
+ proxy.process.hostdb.ttl_expires
+
+ proxy.process.http.100_responses
+ proxy.process.http.101_responses
+ proxy.process.http.1xx_responses
+ proxy.process.http.200_responses
+ proxy.process.http.201_responses
+ proxy.process.http.202_responses
+ proxy.process.http.203_responses
+ proxy.process.http.204_responses
+ proxy.process.http.205_responses
+ proxy.process.http.206_responses
+ proxy.process.http.2xx_responses
+ proxy.process.http.300_responses
+ proxy.process.http.301_responses
+ proxy.process.http.302_responses
+ proxy.process.http.303_responses
+ proxy.process.http.304_responses
+ proxy.process.http.305_responses
+ proxy.process.http.307_responses
+ proxy.process.http.3xx_responses
+ proxy.process.http.400_responses
+ proxy.process.http.401_responses
+ proxy.process.http.402_responses
+ proxy.process.http.403_responses
+ proxy.process.http.404_responses
+ proxy.process.http.405_responses
+ proxy.process.http.406_responses
+ proxy.process.http.407_responses
+ proxy.process.http.408_responses
+ proxy.process.http.409_responses
+ proxy.process.http.410_responses
+ proxy.process.http.411_responses
+ proxy.process.http.412_responses
+ proxy.process.http.413_responses
+ proxy.process.http.414_responses
+ proxy.process.http.415_responses
+ proxy.process.http.416_responses
+ proxy.process.http.4xx_responses
+ proxy.process.http.500_responses
+ proxy.process.http.501_responses
+ proxy.process.http.502_responses
+ proxy.process.http.503_responses
+ proxy.process.http.504_responses
+ proxy.process.http.505_responses
+ proxy.process.http.5xx_responses
+ proxy.process.http.avg_transactions_per_client_connection
+ proxy.process.http.avg_transactions_per_parent_connection
+ proxy.process.http.avg_transactions_per_server_connection
+ proxy.process.http.background_fill_bytes_aborted_stat
+ proxy.process.http.background_fill_bytes_completed_stat
+ proxy.process.http.background_fill_current_count
+ proxy.process.http.broken_server_connections
+ proxy.process.http.cache_connection_time
+ proxy.process.http.cache_deletes
+ proxy.process.http.cache_hit_fresh
+ proxy.process.http.cache_hit_ims
+ proxy.process.http.cache_hit_mem_fresh
+ proxy.process.http.cache_hit_revalidated
+ proxy.process.http.cache_hit_stale_served
+ proxy.process.http.cache_lookups
+ proxy.process.http.cache_miss_changed
+ proxy.process.http.cache_miss_client_no_cache
+ proxy.process.http.cache_miss_client_not_cacheable
+ proxy.process.http.cache_miss_cold
+ proxy.process.http.cache_miss_ims
+ proxy.process.http.cache_read_error
+ proxy.process.http.cache_read_errors
+ proxy.process.http.cache_updates
+ proxy.process.http.cache_write_errors
+ proxy.process.http.cache_writes
+ proxy.process.http.client_connection_time
+ proxy.process.http.client_no_cache_requests
+ proxy.process.http.client_transaction_time
+ proxy.process.http.client_write_time
+ proxy.process.http.completed_requests
+ proxy.process.http.connect_requests
+ proxy.process.http.current_active_client_connections
+ proxy.process.http.current_cache_connections
+ proxy.process.http.current_client_connections
+ proxy.process.http.current_client_transactions
+ proxy.process.http.current_icp_raw_transactions
+ proxy.process.http.current_icp_transactions
+ proxy.process.http.current_parent_proxy_connections
+ proxy.process.http.current_parent_proxy_raw_transactions
+ proxy.process.http.current_parent_proxy_transactions
+ proxy.process.http.current_server_connections
+ proxy.process.http.current_server_raw_transactions
+ proxy.process.http.current_server_transactions
+ proxy.process.http.delete_requests
+ proxy.process.http.err_client_abort_count_stat
+ proxy.process.http.err_client_abort_origin_server_bytes_stat
+ proxy.process.http.err_client_abort_user_agent_bytes_stat
+ proxy.process.http.err_connect_fail_count_stat
+ proxy.process.http.err_connect_fail_origin_server_bytes_stat
+ proxy.process.http.err_connect_fail_user_agent_bytes_stat
+ proxy.process.http.extension_method_requests
+ proxy.process.http.get_requests
+ proxy.process.http.head_requests
+ proxy.process.http.icp_raw_transaction_time
+ proxy.process.http.icp_suggested_lookups
+ proxy.process.http.icp_transaction_time
+ proxy.process.http.incoming_requests
+ proxy.process.http.incoming_responses
+ proxy.process.http.invalid_client_requests
+ proxy.process.http.misc_count_stat
+ proxy.process.http.misc_user_agent_bytes_stat
+ proxy.process.http.missing_host_hdr
+ proxy.process.http.options_requests
+ proxy.process.http.origin_server_request_document_total_size
+ proxy.process.http.origin_server_request_header_total_size
+ proxy.process.http.origin_server_response_document_total_size
+ proxy.process.http.origin_server_response_header_total_size
+ proxy.process.http.origin_server_speed_bytes_per_sec_100
+ proxy.process.http.origin_server_speed_bytes_per_sec_100K
+ proxy.process.http.origin_server_speed_bytes_per_sec_100M
+ proxy.process.http.origin_server_speed_bytes_per_sec_10K
+ proxy.process.http.origin_server_speed_bytes_per_sec_10M
+ proxy.process.http.origin_server_speed_bytes_per_sec_1K
+ proxy.process.http.origin_server_speed_bytes_per_sec_1M
+ proxy.process.http.outgoing_requests
+ proxy.process.http.parent_proxy_connection_time
+ proxy.process.http.parent_proxy_raw_transaction_time
+ proxy.process.http.parent_proxy_request_total_bytes
+ proxy.process.http.parent_proxy_response_total_bytes
+ proxy.process.http.parent_proxy_transaction_time
+ proxy.process.http.post_requests
+ proxy.process.http.purge_requests
+ proxy.process.http.push_requests
+ proxy.process.http.pushed_document_total_size
+ proxy.process.http.pushed_response_header_total_size
+ proxy.process.http.put_requests
+ proxy.process.http.request_document_size_100
+ proxy.process.http.request_document_size_10K
+ proxy.process.http.request_document_size_1K
+ proxy.process.http.request_document_size_1M
+ proxy.process.http.request_document_size_3K
+ proxy.process.http.request_document_size_5K
+ proxy.process.http.request_document_size_inf
+ proxy.process.http.request_taxonomy.i0_n0_m0
+ proxy.process.http.request_taxonomy.i0_n0_m1
+ proxy.process.http.request_taxonomy.i0_n1_m0
+ proxy.process.http.request_taxonomy.i0_n1_m1
+ proxy.process.http.request_taxonomy.i1_n0_m0
+ proxy.process.http.request_taxonomy.i1_n0_m1
+ proxy.process.http.request_taxonomy.i1_n1_m0
+ proxy.process.http.request_taxonomy.i1_n1_m1
+ proxy.process.http.response_document_size_100
+ proxy.process.http.response_document_size_10K
+ proxy.process.http.response_document_size_1K
+ proxy.process.http.response_document_size_1M
+ proxy.process.http.response_document_size_3K
+ proxy.process.http.response_document_size_5K
+ proxy.process.http.response_document_size_inf
+ proxy.process.http.server_connection_time
+ proxy.process.http.server_raw_transaction_time
+ proxy.process.http.server_read_time
+ proxy.process.http.server_transaction_time
+ proxy.process.http.tcp_client_refresh_count_stat
+ proxy.process.http.tcp_client_refresh_origin_server_bytes_stat
+ proxy.process.http.tcp_client_refresh_user_agent_bytes_stat
+ proxy.process.http.tcp_expired_miss_count_stat
+ proxy.process.http.tcp_expired_miss_origin_server_bytes_stat
+ proxy.process.http.tcp_expired_miss_user_agent_bytes_stat
+ proxy.process.http.tcp_hit_count_stat
+ proxy.process.http.tcp_hit_origin_server_bytes_stat
+ proxy.process.http.tcp_hit_user_agent_bytes_stat
+ proxy.process.http.tcp_ims_hit_count_stat
+ proxy.process.http.tcp_ims_hit_origin_server_bytes_stat
+ proxy.process.http.tcp_ims_hit_user_agent_bytes_stat
+ proxy.process.http.tcp_ims_miss_count_stat
+ proxy.process.http.tcp_ims_miss_origin_server_bytes_stat
+ proxy.process.http.tcp_ims_miss_user_agent_bytes_stat
+ proxy.process.http.tcp_miss_count_stat
+ proxy.process.http.tcp_miss_origin_server_bytes_stat
+ proxy.process.http.tcp_miss_user_agent_bytes_stat
+ proxy.process.http.tcp_refresh_hit_count_stat
+ proxy.process.http.tcp_refresh_hit_origin_server_bytes_stat
+ proxy.process.http.tcp_refresh_hit_user_agent_bytes_stat
+ proxy.process.http.tcp_refresh_miss_count_stat
+ proxy.process.http.tcp_refresh_miss_origin_server_bytes_stat
+ proxy.process.http.tcp_refresh_miss_user_agent_bytes_stat
+ proxy.process.http.throttled_proxy_only
+ proxy.process.http.total_client_connections
+ proxy.process.http.total_client_connections_ipv4
+ proxy.process.http.total_client_connections_ipv6
+ proxy.process.http.total_incoming_connections
+ proxy.process.http.total_parent_proxy_connections
+ proxy.process.http.total_server_connections
+ proxy.process.http.total_transactions_think_time
+ proxy.process.http.total_transactions_time
+ proxy.process.http.total_x_redirect_count
+ proxy.process.http.trace_requests
+ proxy.process.http.transaction_counts.errors.aborts
+ proxy.process.http.transaction_counts.errors.connect_failed
+ proxy.process.http.transaction_counts.errors.early_hangups
+ proxy.process.http.transaction_counts.errors.empty_hangups
+ proxy.process.http.transaction_counts.errors.other
+ proxy.process.http.transaction_counts.errors.possible_aborts
+ proxy.process.http.transaction_counts.errors.pre_accept_hangups
+ proxy.process.http.transaction_counts.hit_fresh
+ proxy.process.http.transaction_counts.hit_fresh.process
+ proxy.process.http.transaction_counts.hit_revalidated
+ proxy.process.http.transaction_counts.miss_changed
+ proxy.process.http.transaction_counts.miss_client_no_cache
+ proxy.process.http.transaction_counts.miss_cold
+ proxy.process.http.transaction_counts.miss_not_cacheable
+ proxy.process.http.transaction_counts.other.unclassified
+ proxy.process.http.transaction_totaltime.errors.aborts
+ proxy.process.http.transaction_totaltime.errors.connect_failed
+ proxy.process.http.transaction_totaltime.errors.early_hangups
+ proxy.process.http.transaction_totaltime.errors.empty_hangups
+ proxy.process.http.transaction_totaltime.errors.other
+ proxy.process.http.transaction_totaltime.errors.possible_aborts
+ proxy.process.http.transaction_totaltime.errors.pre_accept_hangups
+ proxy.process.http.transaction_totaltime.hit_fresh
+ proxy.process.http.transaction_totaltime.hit_fresh.process
+ proxy.process.http.transaction_totaltime.hit_revalidated
+ proxy.process.http.transaction_totaltime.miss_changed
+ proxy.process.http.transaction_totaltime.miss_client_no_cache
+ proxy.process.http.transaction_totaltime.miss_cold
+ proxy.process.http.transaction_totaltime.miss_not_cacheable
+ proxy.process.http.transaction_totaltime.other.unclassified
+ proxy.process.http.tunnels
+ proxy.process.http.user_agent_request_document_total_size
+ proxy.process.http.user_agent_request_header_total_size
+ proxy.process.http.user_agent_response_document_total_size
+ proxy.process.http.user_agent_response_header_total_size
+ proxy.process.http.user_agent_speed_bytes_per_sec_100
+ proxy.process.http.user_agent_speed_bytes_per_sec_100K
+ proxy.process.http.user_agent_speed_bytes_per_sec_100M
+ proxy.process.http.user_agent_speed_bytes_per_sec_10K
+ proxy.process.http.user_agent_speed_bytes_per_sec_10M
+ proxy.process.http.user_agent_speed_bytes_per_sec_1K
+ proxy.process.http.user_agent_speed_bytes_per_sec_1M
+ proxy.process.http.websocket.current_active_client_connections
+
+ proxy.process.log.bytes_flush_to_disk
+ proxy.process.log.bytes_lost_before_flush_to_disk
+ proxy.process.log.bytes_lost_before_preproc
+ proxy.process.log.bytes_lost_before_sent_to_network
+ proxy.process.log.bytes_lost_before_written_to_disk
+ proxy.process.log.bytes_received_from_network
+ proxy.process.log.bytes_sent_to_network
+ proxy.process.log.bytes_written_to_disk
+ proxy.process.log.event_log_access_aggr
+ proxy.process.log.event_log_access_fail
+ proxy.process.log.event_log_access_full
+ proxy.process.log.event_log_access_ok
+ proxy.process.log.event_log_access_skip
+ proxy.process.log.event_log_error_aggr
+ proxy.process.log.event_log_error_fail
+ proxy.process.log.event_log_error_full
+ proxy.process.log.event_log_error_ok
+ proxy.process.log.event_log_error_skip
+ proxy.process.log.log_files_open
+ proxy.process.log.log_files_space_used
+ proxy.process.log.num_flush_to_disk
+ proxy.process.log.num_lost_before_flush_to_disk
+ proxy.process.log.num_lost_before_sent_to_network
+ proxy.process.log.num_received_from_network
+ proxy.process.log.num_sent_to_network
+
+ proxy.process.net.accepts_currently_open
+ proxy.process.net.calls_to_read
+ proxy.process.net.calls_to_read_nodata
+ proxy.process.net.calls_to_readfromnet
+ proxy.process.net.calls_to_readfromnet_afterpoll
+ proxy.process.net.calls_to_write
+ proxy.process.net.calls_to_write_nodata
+ proxy.process.net.calls_to_writetonet
+ proxy.process.net.calls_to_writetonet_afterpoll
+ proxy.process.net.connections_currently_open
+ proxy.process.net.inactivity_cop_lock_acquire_failure
+ proxy.process.net.net_handler_run
+ proxy.process.net.read_bytes
+ proxy.process.net.write_bytes
+
+ proxy.process.socks.connections_currently_open
+ proxy.process.socks.connections_successful
+ proxy.process.socks.connections_unsuccessful
+
+ proxy.process.ssl.cipher.user_agent.{CIPHER}
+ proxy.process.ssl.origin_server_bad_cert
+ proxy.process.ssl.origin_server_cert_verify_failed
+ proxy.process.ssl.origin_server_decryption_failed
+ proxy.process.ssl.origin_server_expired_cert
+ proxy.process.ssl.origin_server_other_errors
+ proxy.process.ssl.origin_server_revoked_cert
+ proxy.process.ssl.origin_server_unknown_ca
+ proxy.process.ssl.origin_server_unknown_cert
+ proxy.process.ssl.origin_server_wrong_version
+ proxy.process.ssl.user_agent_bad_cert
+ proxy.process.ssl.user_agent_cert_verify_failed
+ proxy.process.ssl.user_agent_decryption_failed
+ proxy.process.ssl.user_agent_expired_cert
+ proxy.process.ssl.user_agent_other_errors
+ proxy.process.ssl.user_agent_revoked_cert
+ proxy.process.ssl.user_agent_session_hit
+ proxy.process.ssl.user_agent_session_miss
+ proxy.process.ssl.user_agent_session_timeout
+ proxy.process.ssl.user_agent_sessions
+ proxy.process.ssl.user_agent_unknown_ca
+ proxy.process.ssl.user_agent_unknown_cert
+ proxy.process.ssl.user_agent_wrong_version
+
+ proxy.process.update.fails
+ proxy.process.update.no_actions
+ proxy.process.update.state_machines
+ proxy.process.update.successes
+ proxy.process.update.unknown_status
+
+ proxy.process.version.server.build_date
+ proxy.process.version.server.build_machine
+ proxy.process.version.server.build_number
+ proxy.process.version.server.build_person
+ proxy.process.version.server.build_time
+ proxy.process.version.server.long
+ proxy.process.version.server.short
Statistics Descriptions
=======================
@@ -904,33 +998,19 @@ proxy.process.ssl.user_agent_session_timeout
Total number of session timeouts. The ssl client provided a session, but
it could not be used because it was past the session timeout.
-proxy.process.ssl.cipher.user_agent.{cipherName}
- Total number of ssl client connections that used cipherName. The list of
- cipher stats is dynamic and depends upon the installed ciphers and the
- cipher configuration of ats (proxy.config.ssl.server.cipher_suite).
- Some common cipher stats are::
-
- proxy.process.ssl.cipher.user_agent.ECDHE-RSA-RC4-SHA
- proxy.process.ssl.cipher.user_agent.ECDHE-RSA-AES128-SHA256
- proxy.process.ssl.cipher.user_agent.ECDHE-RSA-AES128-GCM-SHA256
- proxy.process.ssl.cipher.user_agent.ECDHE-RSA-AES128-SHA
- proxy.process.ssl.cipher.user_agent.RC4-SHA
- proxy.process.ssl.cipher.user_agent.RC4-MD5
- proxy.process.ssl.cipher.user_agent.AES128-GCM-SHA256
- proxy.process.ssl.cipher.user_agent.AES128-SHA
-
-There are two ways to get the list of cipher stats:
-
-1. Run ATS with debug logging and show ssl diags::
+proxy.process.ssl.cipher.user_agent.{CIPHERNAME}
+ Total number of ssl client connections that used cipherName. The
+ list of cipher statistics is dynamic and depends upon the installed
+ ciphers and the :ts:cv:`proxy.config.ssl.server.cipher_suite`
+ configuration. The set of cipher statistics can be discovered
+ with :option:`traffic_line -m`. For example::
- CONFIG proxy.config.diags.debug.enabled INT 1
- CONFIG proxy.config.diags.debug.tags STRING ssl.*
- View output of traffic.out looking for lines like:
- (ssl) Registering ssl cipher stat 'proxy.process.ssl.cipher.user_agent.ECDHE-RSA-AES256-GCM-SHA384'
-
-2. Run this (asks openssl to tell us) to get a list of all possible ciphers on the system (not all may be available as stats)::
-
- openssl ciphers | sed 's/\([^:]\+\)/proxy.process.ssl.cipher.user_agent.\1/g; s/:/\n/g'
+ $ traffic_line -m proxy.process.ssl.cipher.user_agent.
+ proxy.process.ssl.cipher.user_agent.ECDHE-RSA-AES256-GCM-SHA384 0
+ proxy.process.ssl.cipher.user_agent.ECDHE-ECDSA-AES256-GCM-SHA384 0
+ proxy.process.ssl.cipher.user_agent.ECDHE-RSA-AES256-SHA384 0
+ proxy.process.ssl.cipher.user_agent.ECDHE-ECDSA-AES256-SHA384 0
+ ...
Examples
========
@@ -941,12 +1021,8 @@ Configure Traffic Server to log in Squid format::
$ traffic_line -s proxy.config.log.squid_log_is_ascii -v 1
$ traffic_line -x
-Files
-=====
-
-:file:`records.config`, :file:`ssl_multicert.config`
-
See also
========
-:manpage:`records.config(5)`
+:manpage:`records.config(5)`,
+:manpage:`storage.config(5)`
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/CoreAPI.cc
----------------------------------------------------------------------
diff --git a/mgmt/api/CoreAPI.cc b/mgmt/api/CoreAPI.cc
index b99d616..592d782 100644
--- a/mgmt/api/CoreAPI.cc
+++ b/mgmt/api/CoreAPI.cc
@@ -383,6 +383,15 @@ MgmtRecordGet(const char *rec_name, TSRecordEle * rec_ele)
return TS_ERR_OKAY;
}
+// This is not implemented in the Core side of the API because we don't want
+// to buffer up all the matching records in memory. We stream the records
+// directory onto the management socket in handle_record_match(). This stub
+// is just here for link time dependencies.
+TSError
+MgmtRecordGetMatching(const char * /* regex */, TSList /* rec_vals */)
+{
+ return TS_ERR_FAIL;
+}
/*-------------------------------------------------------------------------
* reads the RecordsConfig info to determine which type of action is needed
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/CoreAPI.h
----------------------------------------------------------------------
diff --git a/mgmt/api/CoreAPI.h b/mgmt/api/CoreAPI.h
index 87dd84e..21d9da6 100644
--- a/mgmt/api/CoreAPI.h
+++ b/mgmt/api/CoreAPI.h
@@ -69,6 +69,7 @@ TSError MgmtRecordSetInt(const char *rec_name, MgmtInt int_val, TSActionNeedT *
TSError MgmtRecordSetCounter(const char *rec_name, MgmtIntCounter counter_val, TSActionNeedT *action_need);
TSError MgmtRecordSetFloat(const char *rec_name, MgmtFloat float_val, TSActionNeedT * action_need);
TSError MgmtRecordSetString(const char *rec_name, const char*string_val, TSActionNeedT * action_need);
+TSError MgmtRecordGetMatching(const char * regex, TSList rec_vals);
/***************************************************************************
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/CoreAPIRemote.cc
----------------------------------------------------------------------
diff --git a/mgmt/api/CoreAPIRemote.cc b/mgmt/api/CoreAPIRemote.cc
index 8ccdac0..0dc360a 100644
--- a/mgmt/api/CoreAPIRemote.cc
+++ b/mgmt/api/CoreAPIRemote.cc
@@ -476,54 +476,113 @@ StorageDeviceCmdOffline(char const* dev)
ret = send_request_name(main_socket_fd, STORAGE_DEVICE_CMD_OFFLINE, dev);
return TS_ERR_OKAY != ret ? ret : parse_reply(main_socket_fd);
}
+
/***************************************************************************
* Record Operations
***************************************************************************/
+static TSError
+mgmt_record_get_reply(TSRecordEle * rec_ele)
+{
+ TSError ret;
+ void *val;
+ char *name;
+
+ rec_ele->rec_name = NULL;
+ rec_ele->rec_type = TS_REC_UNDEFINED;
+
+ // parse the reply to get record value and type
+ ret = parse_record_get_reply(main_socket_fd, &(rec_ele->rec_type), &val, &name);
+ if (ret != TS_ERR_OKAY) {
+ return ret;
+ }
+
+ // convert the record value to appropriate type
+ if (val) {
+ switch (rec_ele->rec_type) {
+ case TS_REC_INT:
+ rec_ele->int_val = *(TSInt *) val;
+ break;
+ case TS_REC_COUNTER:
+ rec_ele->counter_val = *(TSCounter *) val;
+ break;
+ case TS_REC_FLOAT:
+ rec_ele->float_val = *(TSFloat *) val;
+ break;
+ case TS_REC_STRING:
+ rec_ele->string_val = ats_strdup((char *) val);
+ break;
+ default:
+ ; // nothing ... shut up compiler!
+ }
+ }
+
+ if (name) {
+ rec_ele->rec_name = name;
+ }
+
+ ats_free(val);
+ return TS_ERR_OKAY;
+}
+
// note that the record value is being sent as chunk of memory, regardless of
// record type; it's not being converted to a string!!
TSError
MgmtRecordGet(const char *rec_name, TSRecordEle * rec_ele)
{
TSError ret;
- void *val;
- if (!rec_name || !rec_ele)
+ if (!rec_name || !rec_ele) {
return TS_ERR_PARAMS;
-
- rec_ele->rec_name = ats_strdup(rec_name);
+ }
// create and send request
ret = send_record_get_request(main_socket_fd, rec_ele->rec_name);
- if (ret != TS_ERR_OKAY)
+ if (ret != TS_ERR_OKAY) {
return ret;
+ }
- // parse the reply to get record value and type
- ret = parse_record_get_reply(main_socket_fd, &(rec_ele->rec_type), &val);
- if (ret != TS_ERR_OKAY)
+ return mgmt_record_get_reply(rec_ele);
+}
+
+TSError
+MgmtRecordGetMatching(const char * regex, TSList rec_vals)
+{
+ TSError ret;
+ TSRecordEle * rec_ele;
+
+ ret = send_record_match_request(main_socket_fd, regex);
+ if (ret != TS_ERR_OKAY) {
return ret;
+ }
- // convert the record value to appropriate type
- switch (rec_ele->rec_type) {
- case TS_REC_INT:
- rec_ele->int_val = *(TSInt *) val;
- break;
- case TS_REC_COUNTER:
- rec_ele->counter_val = *(TSCounter *) val;
- break;
- case TS_REC_FLOAT:
- rec_ele->float_val = *(TSFloat *) val;
- break;
- case TS_REC_STRING:
- rec_ele->string_val = ats_strdup((char *) val);
- break;
- default: // ERROR - invalid record type
- return TS_ERR_FAIL;
+ for (;;) {
+ rec_ele = TSRecordEleCreate();
+
+ // parse the reply to get record value and type
+ ret = mgmt_record_get_reply(rec_ele);
+ if (ret != TS_ERR_OKAY) {
+ goto fail;
+ }
+
+ // A NULL record ends the list.
+ if (rec_ele->rec_type == TS_REC_UNDEFINED) {
+ break;
+ }
+
+ enqueue((LLQ *) rec_vals, rec_ele);
}
- ats_free(val);
return TS_ERR_OKAY;
-}
+fail:
+
+ TSRecordEleDestroy(rec_ele);
+ for (rec_ele = (TSRecordEle *) dequeue((LLQ *) rec_vals); rec_ele; rec_ele = (TSRecordEle *) dequeue((LLQ *) rec_vals)) {
+ TSRecordEleDestroy(rec_ele);
+ }
+
+ return ret;
+}
TSError
MgmtRecordSet(const char *rec_name, const char *val, TSActionNeedT * action_need)
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/INKMgmtAPI.cc
----------------------------------------------------------------------
diff --git a/mgmt/api/INKMgmtAPI.cc b/mgmt/api/INKMgmtAPI.cc
index 709debc..a466fbd 100644
--- a/mgmt/api/INKMgmtAPI.cc
+++ b/mgmt/api/INKMgmtAPI.cc
@@ -1581,6 +1581,15 @@ TSRecordGetMlt(TSStringList rec_names, TSList rec_vals)
return TS_ERR_OKAY;
}
+tsapi TSError
+TSRecordGetMatchMlt(const char * regex, TSList rec_vals)
+{
+ if (!regex || !rec_vals) {
+ return TS_ERR_PARAMS;
+ }
+
+ return MgmtRecordGetMatching(regex, rec_vals);
+}
tsapi TSError
TSRecordSet(const char *rec_name, const char *val, TSActionNeedT * action_need)
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/NetworkUtilsDefs.h
----------------------------------------------------------------------
diff --git a/mgmt/api/NetworkUtilsDefs.h b/mgmt/api/NetworkUtilsDefs.h
index 6f0127b..bd94fdc 100644
--- a/mgmt/api/NetworkUtilsDefs.h
+++ b/mgmt/api/NetworkUtilsDefs.h
@@ -80,6 +80,7 @@ typedef enum
STATS_RESET_NODE,
STATS_RESET_CLUSTER,
STORAGE_DEVICE_CMD_OFFLINE,
+ RECORD_MATCH_GET,
UNDEFINED_OP /* This must be last */
} OpType;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/NetworkUtilsLocal.cc
----------------------------------------------------------------------
diff --git a/mgmt/api/NetworkUtilsLocal.cc b/mgmt/api/NetworkUtilsLocal.cc
index 03b4666..3f05d18 100644
--- a/mgmt/api/NetworkUtilsLocal.cc
+++ b/mgmt/api/NetworkUtilsLocal.cc
@@ -513,22 +513,20 @@ send_reply_list(struct SocketInfo sock_info, TSError retval, char *list)
* output: TS_ERR_*
* notes: this function does not need to go through the internal structure
* so no cleaning up is done.
- * format = <TSError> <rec_val_len> <rec_type> <rec_val>
+ * format = <TSError> <rec_val_len> <name_size> <rec_type> <rec_val> <rec_name>
**********************************************************************/
TSError
-send_record_get_reply(struct SocketInfo sock_info, TSError retval, void *val, int val_size, TSRecordT rec_type)
+send_record_get_reply(struct SocketInfo sock_info, TSError retval, void *val, int val_size,
+ TSRecordT rec_type, const char *rec_name)
{
TSError ret;
int msg_pos = 0, total_len;
char *msg;
int16_t record_t, ret_val;
- int32_t v_size; // to be safe, typecast
+ int32_t v_size = (int32_t) val_size; // to be safe, typecast
+ int32_t n_size = rec_name ? (int32_t)strlen(rec_name) : 0;
- if (!val) {
- return TS_ERR_PARAMS;
- }
-
- total_len = SIZE_ERR_T + SIZE_LEN + SIZE_REC_T + val_size;
+ total_len = SIZE_ERR_T + SIZE_LEN + SIZE_LEN + SIZE_REC_T + v_size + n_size;
msg = (char *)ats_malloc(sizeof(char) * total_len);
// write the return value
@@ -537,17 +535,29 @@ send_record_get_reply(struct SocketInfo sock_info, TSError retval, void *val, in
msg_pos += SIZE_ERR_T;
// write the size of the record value
- v_size = (int32_t) val_size;
memcpy(msg + msg_pos, (void *) &v_size, SIZE_LEN);
msg_pos += SIZE_LEN;
+ // write the size of the record name
+ memcpy(msg + msg_pos, (void *) &n_size, SIZE_LEN);
+ msg_pos += SIZE_LEN;
+
// write the record type
record_t = (int16_t) rec_type;
memcpy(msg + msg_pos, (void *) &record_t, SIZE_REC_T);
msg_pos += SIZE_REC_T;
// write the record value
- memcpy(msg + msg_pos, val, val_size);
+ if (v_size) {
+ memcpy(msg + msg_pos, val, v_size);
+ msg_pos += v_size;
+ }
+
+ // write the record name
+ if (n_size) {
+ memcpy(msg + msg_pos, rec_name, n_size);
+ msg_pos += n_size;
+ }
// now push it to the socket
ret = socket_write_n(sock_info, msg, total_len);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0389be39/mgmt/api/NetworkUtilsLocal.h
----------------------------------------------------------------------
diff --git a/mgmt/api/NetworkUtilsLocal.h b/mgmt/api/NetworkUtilsLocal.h
index 8773bda..805beef 100644
--- a/mgmt/api/NetworkUtilsLocal.h
+++ b/mgmt/api/NetworkUtilsLocal.h
@@ -69,7 +69,7 @@ TSError send_reply(struct SocketInfo sock_info, TSError retval);
TSError send_reply_list(struct SocketInfo sock_info, TSError retval, char *list);
TSError send_record_get_reply(struct SocketInfo sock_info, TSError retval, void *val, int val_size,
- TSRecordT rec_type);
+ TSRecordT rec_type, const char *rec_name);
TSError send_record_set_reply(struct SocketInfo sock_info, TSError retval, TSActionNeedT action_need);
TSError send_file_read_reply(struct SocketInfo sock_info, TSError retval, int ver, int size, char *text);
TSError send_proxy_state_get_reply(struct SocketInfo sock_info, TSProxyStateT state);