* - Name
- Type
- Description
- * - put_ops
+ * - put_obj_ops
- Counter
- Number of put operations
- * - put_b
+ * - put_obj_bytes
- Counter
- Number of bytes put
- * - put_initial_lat
+ * - put_obj_lat
- Guage
- Total latency of put operations
- * - get_ops
+ * - get_obj_ops
- Counter
- Number of get operations
- * - get_b
+ * - get_obj_bytes
- Counter
- Number of bytes from get requests
- * - get_initial_lat
+ * - get_obj_lat
- Guage
- Total latency of get operations
* - del_obj_ops
{
"labels": {},
"counters": {
- "put_ops": 2,
- "put_b": 5327,
- "put_initial_lat": {
+ "put_obj_ops": 2,
+ "put_obj_bytes": 5327,
+ "put_obj_lat": {
"avgcount": 2,
"sum": 2.818064835,
"avgtime": 1.409032417
},
- "get_ops": 5,
- "get_b": 5325,
- "get_initial_lat": {
+ "get_obj_ops": 5,
+ "get_obj_bytes": 5325,
+ "get_obj_lat": {
"avgcount": 2,
"sum": 0.003000069,
"avgtime": 0.001500034
]
Op Metrics Labels
---------------------
+-----------------
Op metrics can also be tracked per-user or per-bucket. These metrics are exported to Prometheus with labels like Bucket = {name} or User = {userid}::
"Bucket": "bucket1"
},
"counters": {
- "put_ops": 2,
- "put_b": 5327,
- "put_initial_lat": {
+ "put_obj_ops": 2,
+ "put_obj_bytes": 5327,
+ "put_obj_lat": {
"avgcount": 2,
"sum": 2.818064835,
"avgtime": 1.409032417
},
- "get_ops": 5,
- "get_b": 5325,
- "get_initial_lat": {
+ "get_obj_ops": 5,
+ "get_obj_bytes": 5325,
+ "get_obj_lat": {
"avgcount": 2,
"sum": 0.003000069,
"avgtime": 0.001500034
labels.insert(multisite_labels_and_name.first.begin(), multisite_labels_and_name.first.end());
counter_name = multisite_labels_and_name.second;
}
- auto counters_values_itr = counters_values.find(counter_name_init);
- if (counters_values_itr != counters_values.end()) {
- auto perf_values = counters_values_itr->value();
- dump_asok_metric(counter_group, perf_values, counter_name, labels);
- }
+ auto perf_values = counters_values.at(counter_name_init);
+ dump_asok_metric(counter_group, perf_values, counter_name, labels);
}
}
}
ceph_assert(! slo_info);
counters = rgw::op_counters::get(state);
- rgw::op_counters::inc(counters, l_rgw_op_put, 1);
+ rgw::op_counters::inc(counters, l_rgw_op_put_obj, 1);
op_ret = -EINVAL;
if (state->object->empty()) {
real_time appx_t = real_clock::now();
state->obj_size = bytes_written;
- rgw::op_counters::inc(counters, l_rgw_op_put_b, state->obj_size);
+ rgw::op_counters::inc(counters, l_rgw_op_put_obj_b, state->obj_size);
// flush data in filters
op_ret = filter->process({}, state->obj_size);
}
done:
- rgw::op_counters::tinc(counters, l_rgw_op_put_lat, state->time_elapsed());
+ rgw::op_counters::tinc(counters, l_rgw_op_put_obj_lat, state->time_elapsed());
return op_ret;
} /* exec_finish */
}
auto counters = rgw::op_counters::get(s);
- rgw::op_counters::inc(counters, l_rgw_op_get_b, cur_end - cur_ofs);
+ rgw::op_counters::inc(counters, l_rgw_op_get_obj_b, cur_end - cur_ofs);
filter->fixup_range(cur_ofs, cur_end);
op_ret = read_op->iterate(this, cur_ofs, cur_end, filter, s->yield);
if (op_ret >= 0)
}
rgw::op_counters::CountersContainer counters;
- rgw::op_counters::tinc(counters, l_rgw_op_get_lat,
+ rgw::op_counters::tinc(counters, l_rgw_op_get_obj_lat,
(ceph_clock_now() - start_time));
if (found_start && !handled_end) {
}
rgw::op_counters::CountersContainer counters;
- rgw::op_counters::tinc(counters, l_rgw_op_get_lat,
+ rgw::op_counters::tinc(counters, l_rgw_op_get_obj_lat,
(ceph_clock_now() - start_time));
if (found_start) {
map<string, bufferlist>::iterator attr_iter;
auto counters = rgw::op_counters::get(s);
- rgw::op_counters::inc(counters, l_rgw_op_get, 1);
+ rgw::op_counters::inc(counters, l_rgw_op_get_obj, 1);
std::unique_ptr<rgw::sal::Object::ReadOp> read_op(s->object->get_read_op());
return;
}
- rgw::op_counters::inc(counters, l_rgw_op_get_b, end-ofs);
+ rgw::op_counters::inc(counters, l_rgw_op_get_obj_b, end-ofs);
op_ret = read_op->iterate(this, ofs_x, end_x, filter, s->yield);
if (op_ret >= 0)
op_ret = filter->flush();
- rgw::op_counters::tinc(counters, l_rgw_op_get_lat, s->time_elapsed());
+ rgw::op_counters::tinc(counters, l_rgw_op_get_obj_lat, s->time_elapsed());
if (op_ret < 0) {
goto done_err;
auto counters = rgw::op_counters::get(s);
bool need_calc_md5 = (dlo_manifest == NULL) && (slo_info == NULL);
- rgw::op_counters::inc(counters, l_rgw_op_put, 1);
+ rgw::op_counters::inc(counters, l_rgw_op_put_obj, 1);
// report latency on return
auto put_lat = make_scope_guard([&] {
- rgw::op_counters::tinc(counters, l_rgw_op_put_lat, s->time_elapsed());
+ rgw::op_counters::tinc(counters, l_rgw_op_put_obj_lat, s->time_elapsed());
});
op_ret = -EINVAL;
s->obj_size = ofs;
s->object->set_obj_size(ofs);
- rgw::op_counters::inc(counters, l_rgw_op_put_b, s->obj_size);
+ rgw::op_counters::inc(counters, l_rgw_op_put_obj_b, s->obj_size);
op_ret = do_aws4_auth_completion();
if (op_ret < 0) {
// description must match general rgw counters description above
lpcb->set_prio_default(PerfCountersBuilder::PRIO_USEFUL);
- lpcb->add_u64_counter(l_rgw_op_put, "put_ops", "Puts");
- lpcb->add_u64_counter(l_rgw_op_put_b, "put_b", "Size of puts");
- lpcb->add_time_avg(l_rgw_op_put_lat, "put_initial_lat", "Put latency");
+ lpcb->add_u64_counter(l_rgw_op_put_obj, "put_obj_ops", "Puts");
+ lpcb->add_u64_counter(l_rgw_op_put_obj_b, "put_obj_bytes", "Size of puts");
+ lpcb->add_time_avg(l_rgw_op_put_obj_lat, "put_obj_lat", "Put latency");
- lpcb->add_u64_counter(l_rgw_op_get, "get_ops", "Gets");
- lpcb->add_u64_counter(l_rgw_op_get_b, "get_b", "Size of gets");
- lpcb->add_time_avg(l_rgw_op_get_lat, "get_initial_lat", "Get latency");
+ lpcb->add_u64_counter(l_rgw_op_get_obj, "get_obj_ops", "Gets");
+ lpcb->add_u64_counter(l_rgw_op_get_obj_b, "get_obj_bytes", "Size of gets");
+ lpcb->add_time_avg(l_rgw_op_get_obj_lat, "get_obj_lat", "Get latency");
lpcb->add_u64_counter(l_rgw_op_del_obj, "del_obj_ops", "Delete objects");
lpcb->add_u64_counter(l_rgw_op_del_obj_b, "del_obj_bytes", "Size of delete objects");
if (user_counters_cache && !s->user->get_id().id.empty()) {
if (s->user->get_tenant().empty()) {
- key = std::move(ceph::perf_counters::key_create(rgw_op_counters_key, {{"User", s->user->get_id().id}}));
+ key = ceph::perf_counters::key_create(rgw_op_counters_key, {{"User", s->user->get_id().id}});
} else {
- key = std::move(ceph::perf_counters::key_create(rgw_op_counters_key, {{"User", s->user->get_id().id}, {"Tenant", s->user->get_tenant()}}));
+ key = ceph::perf_counters::key_create(rgw_op_counters_key, {{"User", s->user->get_id().id}, {"Tenant", s->user->get_tenant()}});
}
counters.user_counters = user_counters_cache->get(key);
}
if (bucket_counters_cache && !s->bucket_name.empty()) {
if (s->bucket_tenant.empty()) {
- key = std::move(ceph::perf_counters::key_create(rgw_op_counters_key, {{"Bucket", s->bucket_name}}));
+ key = ceph::perf_counters::key_create(rgw_op_counters_key, {{"Bucket", s->bucket_name}});
} else {
- key = std::move(ceph::perf_counters::key_create(rgw_op_counters_key, {{"Bucket", s->bucket_name}, {"Tenant", s->bucket_tenant}}));
+ key = ceph::perf_counters::key_create(rgw_op_counters_key, {{"Bucket", s->bucket_name}, {"Tenant", s->bucket_tenant}});
}
counters.bucket_counters = bucket_counters_cache->get(key);
}
enum {
l_rgw_op_first = 16000,
- l_rgw_op_put,
- l_rgw_op_put_b,
- l_rgw_op_put_lat,
+ l_rgw_op_put_obj,
+ l_rgw_op_put_obj_b,
+ l_rgw_op_put_obj_lat,
- l_rgw_op_get,
- l_rgw_op_get_b,
- l_rgw_op_get_lat,
+ l_rgw_op_get_obj,
+ l_rgw_op_get_obj_b,
+ l_rgw_op_get_obj_lat,
l_rgw_op_del_obj,
l_rgw_op_del_obj_b,