Puppet( https://forge.puppetlabs.com/dwerder/graphite )を介してnginxとPostgresSQLでGraphiteをインストールしました。データを手動で送信すると、メトリックが作成されますが、すべてのデータポイントは「なし」(別名null)です。これは、Graphiteに付属のexample-client.pyを実行した場合にも発生します。
echo "jakub.test 42 $(date +%s)" | nc 0.0.0.0 2003 # Carbon listens at 2003
# A minute or so later:
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | head -n1
Sun May 4 12:19:00 2014 None
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | tail -n1
Mon May 5 12:09:00 2014 None
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | grep -v None | wc -l
0
そして:
$ python /opt/graphite/examples/example-client.py
# Wait until it sends two batches of data ...
$ whisper-fetch.py /opt/graphite/storage/whisper/system/loadavg_15min.wsp | grep -v None | wc -l
0
Ngrepによると、これは[後で試行して]ポートに到着するデータです(3行目):
####
T 127.0.0.1:34696 -> 127.0.0.1:2003 [AP]
jakub.test 45 1399362193.
####^Cexit
23 received, 0 dropped
これは/opt/graphite/conf/storage-schemas.conf
の関連部分です:
[default]
pattern = .*
retentions = 1s:30m,1m:1d,5m:2y
何が間違っているのでしょうか? Carbon独自のメトリックとデータがUIに表示されます。ありがとうございました!
環境:Ubuntu 13.10 Saucy、グラファイト0.9.12(pip経由)。
PS:私はここに私のトラブルシューティングの試みについて書いています- Graphiteはメトリックを示しますがデータはありません–トラブルシューティング
[〜#〜]更新[〜#〜]:
xFilesFactor = 0.1
(0.5ではなく)で使用するか、最低精度を<1〜49の数値>ではなく1mに設定します。 -承認された回答またはグラファイト回答の質問の下のコメントを参照してください。 ドキュメントによると : "xFilesFactor
は0と1の間の浮動小数点数でなければならず、以前の保持レベルのスロットの何分の1でなければならないかを指定します非null値に集約するための-null値。デフォルトは0.5です。 "したがって、指定された精度1に関係なく、データは1分に集約され、最終的にNoneになります。分の期間の値の50%未満が「なし」ではないためです。[〜#〜]ソリューション[〜#〜]
@jlawrieが私を解決に導きます。データは実際にはそこにありますが、何も集約されていません。理由は二重です。
=>解決策は、最初の精度を1秒から10秒に変更し、生データを表示するときはより短い期間を選択することを忘れないでください(またはデフォルトで24時間に保持を延長して表示します)。
同じパペットモジュールを使用して同じ問題が発生しました。理由は正確にはわかりませんが、デフォルトの保持ポリシーを変更すると修正されるようです。
class { 'graphite':
gr_storage_schemas => [
{
name => 'carbon',
pattern => '^carbon\.',
retentions => '1m:90d'
},
{
name => 'default',
pattern => '.*',
retentions => '1m:14d'
}
],
}
Graphiteがデータを失う方法は数多くあります。そのため、私は実際にデータを使用しないようにしています。簡単なものから始めましょう。アプリケーションを接続して、1秒(文字どおり1秒)待ってから、タイムスタンプ付きのデータを出力します。私は多くの状況でこれがその正確な問題を修正することを発見しました。あなたが試すべきもう一つのことは、グラファイトがデータを記録する頻度よりもはるかに高い頻度でデータを提出することです。もう少し詳しく説明します。もう1つのよくある間違いは、whisper-resize.pyユーティリティの使用ですが、これは実際には機能しませんでした。データがまだ重要ではない場合は、ウィスパーファイルを削除して、新しい保持設定で作成できるようにします。
グラファイトのストレージファイルであるウィスパーファイルは、値と時間を含むポイントとしてデータを格納するのではなく(プログラムを提供したように)、実際には、値が格納される一連のスロットを持つものとしてデータを格納します。プログラムは、保持データファイルを使用して、どのスロットが期間に対応するかを把握します。スロットに正確に収まらないデータを取得した場合、i think保持ファイルと同じディレクトリにある別のファイルに応じて、平均、最小、または最大が使用されます。すべてを台無しにしないようにするための最良の方法は、グラファイトがデータを格納していた頻度よりもはるかに高い頻度でデータを送信することであることがわかりました。正直に言うと、非常に複雑になります。グラファイトの保持期間や、ポイントを埋める平均化アルゴリズムがあるだけでなく(これらは私が思うに)、これらの値はウィスパーファイルにも適用されます。これらが一致しない場合、非常に奇妙なことが起こります。構成が機能するまで、ウィスパーファイルを繰り返し削除し、グラファイトに再作成することをお勧めします。
このプログラムは、かなりバグのある行動をしているように感じました。このような問題が発生した場合は、それが自分の責任だとは思わないでください。