私の最初の投稿はこちらですので、あまり冗長ではないことを願っています。 rrdtool設定で10行しか持たないためにデータポイントが失われていて、古いデータでバックアップソースファイルから更新したいと思っていました。設定を使用して作成されたカウント行を固定した後 :rrdtoolデータベースを更新しています
rrdtool create dailySolax.rrd \
--start 1451606400 \
--step 21600 \
DS:toGrid:GAUGE:172800:0:100000 \
DS:fromGrid:GAUGE:172800:0:100000 \
DS:totalEnerg:GAUGE:172800:0:100000 \
DS:BattNow:GAUGE:1200:0:300 \
RRA:LAST:0.5:1d:1010 \
RRA:MAX:0.5:1d:1010 \
RRA:MAX:0.5:1M:1010
とPythonで更新ラインが
newline = ToGrid + ':' + FromGrid + ':' + TotalEnergy + ':' + battNow
UpdateE = 'N:'+ (newline)
print UpdateE
try:
rrdtool.update(
"%s/dailySolax.rrd" % (os.path.dirname(os.path.abspath(__file__))),
UpdateE)
これ全てでは(crontabbedウェブサイトのスクレープから)元のデータを入力するための罰金働いていたが、私が言ったように、私はデータを失い、以前のデータポイントを戻したいと思っていました。私のバックアップソースから は、私が最初のフィールドは、タイムスタンプです
1509386401:10876.9:3446.22:18489.2:19.0
1509408001:10879.76:3446.99:18495.7:100.0
のように見えるラインを持つプレーンテキストファイルを持っていました。そして、更新のためのラインで読むためにこのコードを使用:
with open("rrdRecovery.txt","r") as fp:
for line in fp:
print line
## newline = ToGrid + ':' + FromGrid + ':' + TotalEnergy + ':' + battNow
UpdateE = line
try:
rrdtool.updatev(
"%s/dailySolax.rrd" % (os.path.dirname(os.path.abspath(__file__))),
UpdateE)
それは私が同じ設定を使用して作成した空のデータベースで再度試してみましたデータベースの現在のバージョンのコピーでは正しく動作しませんでしたとき。 それぞれの場合、更新はデータベース内のタイムスタンプデータのみになり、他のフィールドのデータは失われます。 Pythonが不満をされていないと私は
N:10876.9:3446.22:18489.2:19.0
ダンプはすべてのフィールドの最終更新データを示しているが、その後、このRRAデータベースの
<!-- 2017-10-31 11:00:00 AEDT/1509408000 --> <row><v>NaN</v><v>NaN</v><v>NaN</v><v>NaN</v></row>
が行うように
1509386401:10876.9:3446.22:18489.2:19.0
が同じことを更新してしまうと予想
Pythonの問題があるかどうかわかりません - rrdtoolは問題を理解している可能性が高いです。任意のポインターをありがとう。
yr replyに感謝します。 上記の私の問題のいくつかは、連続したRESIZEコマンドを使用することから来たようです。 '1755 rrdtoolスクリプトのサイズ変更/ dailySolax。rrd 0 GROW 1000 1756 rrdtool resize scripts/dailySolax.rrd 1 GROW 1000 1757 rrdtool resize scripts/dailySolax.rrd 2 GROW 1000' すべてのRRAの行数が正しく増加しませんでした。 ただし、新しいRRDを作成してPythonスクリプトを実行すると、4番目のデータフィールドは更新されません。 –
私は: 'rrdtool update dailySolaxTemp.rrd 1508371201:10740.95:3430.97:18259.2:58.0' と同じことを行い、rrdでは" 58.0 "が" NaN "になります。更新行にエラーがある場合、私はそれを見ることができません。 –
Ok rrdパラメータを調整しました。問題を引き起こす改行文字やCR文字があることを示すエラーが表示されるようになりました。 –