- bson_buffer_init(record_buf);
- bson_append_time_t(record_buf,"ts",vl->time);
- bson_append_string(record_buf,"h",vl->host);
- bson_append_string(record_buf,"i",vl->plugin_instance);
- bson_append_string(record_buf,"t",vl->plugin_instance);
- bson_append_string(record_buf,"ti",vl->plugin_instance);
-
- if (ds->ds_num == 1) {
- if (ds->ds[0].type == DS_TYPE_COUNTER)
- bson_append_long(record_buf, "v", vl->values[0].counter);
- else if (ds->ds[0].type == DS_TYPE_GAUGE)
- bson_append_double(record_buf, "v", vl->values[0].gauge);
- else if (ds->ds[0].type == DS_TYPE_DERIVE)
- bson_append_long(record_buf, "v", vl->values[0].derive);
- else if (ds->ds[0].type == DS_TYPE_ABSOLUTE)
- bson_append_long(record_buf, "v", vl->values[0].absolute);
+ bson_buffer_init(&record_buf);
+ bson_append_time_t(&record_buf,"ts",vl->time);
+ bson_append_string(&record_buf,"h",vl->host);
+ bson_append_string(&record_buf,"i",vl->plugin_instance);
+ bson_append_string(&record_buf,"t",vl->type);
+ bson_append_string(&record_buf,"ti",vl->type_instance);
+
+ for (i = 0; i < ds->ds_num; i++)
+ {
+ if (ds->ds[i].type == DS_TYPE_COUNTER)
+ bson_append_long(&record_buf, ds->ds[i].name, vl->values[i].counter);
+ else if (ds->ds[i].type == DS_TYPE_GAUGE)
+ bson_append_double(&record_buf, ds->ds[i].name, vl->values[i].gauge);
+ else if (ds->ds[i].type == DS_TYPE_DERIVE)
+ bson_append_long(&record_buf, ds->ds[i].name, vl->values[i].derive);
+ else if (ds->ds[i].type == DS_TYPE_ABSOLUTE)
+ bson_append_long(&record_buf, ds->ds[i].name, vl->values[i].absolute);