Итак, я пишу плагин для чтения, openvz_guest_bandwidth , для Collectd , где я читаю, сколько пропускной способности Openvz делают гости, используя libiptc чтобы узнать, сколько внешней полосы пропускания делает каждый гость.
Затем я сообщаю эту информацию плагину write_mongodb , который я написал (что может быть связано с поломкой)
Проблема в том, что я вижу записи в монго, как,
{ "_id" : ObjectId("4f480c15573fa191fa838140"), "ts" : ISODate("2012-02-24T22:15:33Z"), "h" : "62f34634-0fac-4b5f-a7a5-45532ef6dd3b", "i" : "rx", "t" : "counter", "ti" : "", "value" : NumberLong("3970318241") }
{ "_id" : ObjectId("4f480c15573fa191fa838141"), "ts" : ISODate("2012-02-24T22:15:34Z"), "h" : "62f34634-0fac-4b5f-a7a5-45532ef6dd3b", "i" : "tx", "t" : "counter", "ti" : "", "value" : NumberLong(50070094) }
{ "_id" : ObjectId("4f480c15573fa191fa838142"), "ts" : ISODate("2012-02-24T22:15:34Z"), "h" : "62f34634-0fac-4b5f-a7a5-45532ef6dd3b", "i" : "rx", "t" : "counter", "ti" : "", "value" : NumberLong("3970322447") }
{ "_id" : ObjectId("4f480c15573fa191fa838143"), "ts" : ISODate("2012-02-24T22:15:35Z"), "h" : "62f34634-0fac-4b5f-a7a5-45532ef6dd3b", "i" : "tx", "t" : "counter", "ti" : "", "value" : NumberLong(50070094) }
{ "_id" : ObjectId("4f480c15573fa191fa838144"), "ts" : ISODate("2012-02-24T22:15:35Z"), "h" : "62f34634-0fac-4b5f-a7a5-45532ef6dd3b", "i" : "rx", "t" : "counter", "ti" : "", "value" : NumberLong("3970325247") }
Где интересные значения в конце. Я ожидаю, что сообщенные значения будут разницей между последовательными записями, а не показаниями счетчика.
Это аналог счетчика СЧЕТЧИК RRD вместо АБСОЛЮТНОГО, как я понимаю.
Я довольно застрял в этом и не уверен, где может лежать ошибка, и даже более того, как ее исправить. Ошибка может быть либо в чтении, либо в письме.
В качестве примечания, прежде чем значения достигнут write_mongodb, они отправляются через сетевой плагин collectd.
Более того, я, кажется, запутался между value_list.plugin
и value_list.plugin_instance
. Другие плагины, похоже, используют типы, которые дают действительно бесполезное поле, такое как "t: 'memory'"
внутри коллекции памяти.