2016-09-16 18 views
0

グラファイト/グラファナを使用して、mongodbインスタンス内のすべてのコレクションのサイズを記録します。グラファイトデリバティブにデータが表示されない

#!/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) 

これは、grafanaのすべてのコレクションサイズを正しく表示しています。しかし、私はこれらのサイズの変化率を取得したいので、私はgrafanaで、次のグラファイトクエリを作成:

derivative(statsd.myHost.collection_myCollection) 

、グラフは完全に空白表示されます。何か案は?

フォローアップ:24時間を超える時間範囲を選択すると、すべてのデータが同様にグラフから消えます。私の人生はそれを理解できません。

+0

'derivative()'関数がなぜ失敗するのかを理解するために、データまたはグラフを表示する必要があります。また、 'storage-schemas.conf'を投稿してください。 – obfuscurity

+0

データのスクリーンショットを以下に示します:[imgur album](http://imgur.com/a/NRWJr)。 何らかの理由で、画像の順序が乱されましたが、情報はそこにあります。 –

+0

更新:この問題はグラファイトに由来すると私は思う。グラファイトWebインターフェイスを使用してグラフを作成すると、グラファナ派生語に表示されるのと同じ結果が空のグラフに表示され、過去24時間を超える範囲を含むと空のグラフが表示されます。私はirc.freenode.netの#graphiteと相談し、集約の問題かもしれないと思ったようです。私のstorage-aggregation.confは空のファイルです。 –

答えて

2

更新:これは、私のcollectdが毎秒サンプルを送信するように設定されていたためです。しかし、collectdのstatsdプラグインは60秒ごとにデータを受信して​​いたので、ほとんどのデータポイントではNoneでした。

これは、ブラウザーでgraphite-apiクエリの末尾に&format=rawを追加することで、Graphiteの生データをチェックすることで検出されました。各データポイントの値はコンマ区切りのリストとして表示されます。

この一時的な修正は、グラファイトクエリをkeepLastValue(60)で囲むことでした。ただし、各None(60値)の値が60ステップ内の最後の有効値になるので、階段状のグラフが作成されます。これを派生させたものをグラフ化すると、幅の広い鋸歯状のグラフになります。

これを解決するには、collectdでフラッシュ間隔を修正するか、スタンドアロンのstatsdインスタンスに切り替えてそこから必要に応じて構成することにします。

+0

タイムアウト値を収集するのと同様の状況が発生しています。グラファイトクエリを 'keepLastValue(60)'で囲むことはどういう意味ですか?正確な例を教えてください。例えば。このクエリは、http:// /render?width = 1700&from = -2h&until = now&height = 900&target = aerospike.old_statsip-10-146-210-31.service.stat_rw_timeout&title = old_latency_cumulative_not_raw'の累積合計を表示します。タイムアウトは30秒ごとに収集されます。 –

+0

keepLastValue(60)を適用した後にderivative()を適用しますか? –

関連する問題