Использование графита / графана для записи размеров всех коллекций в экземпляре mongodb. Для этого я написал простой (WIP) скрипт Python:
#!/usr/bin/python
from pymongo import MongoClient
import socket
import time
statsd_ip = '127.0.0.1'
statsd_port = 8125
# create a udp socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client = MongoClient(host='12.34.56.78', port=12345)
db = client.my_DB
# get collection list each runtime
collections = db.collection_names()
sizes = {}
# main
while (1):
# get collection size per name
for collection in collections:
sizes[collection] = db.command('collstats', collection)['size']
# write to statsd
for size in sizes:
MESSAGE = "collection_%s:%d|c" % (size, sizes[size])
sock.sendto(MESSAGE, (statsd_ip, statsd_port))
time.sleep(60)
Это правильно показывает все размеры моей коллекции в графане. Однако я хочу получить скорость изменения этих размеров, поэтому я создаю следующий графитовый запрос в графане:
derivative(statsd.myHost.collection_myCollection)
И график оказывается совершенно пустым. Любые идеи?
ПОСЛЕДУЮЩИЕ ДЕЙСТВИЯ: при выборе диапазона времени более 24 часов все данные аналогично исчезают с графика. Не могу, хоть убей, понять это.
derivative()
может не работать для вас. Кроме того, опубликуйте свойstorage-schemas.conf
. - person obfuscurity   schedule 18.09.2016