RRDUPDATE(1) rrdtool RRDUPDATE(1)

rrdupdate - ذخیره مجموعه‌ای از مقادیر جدید در RRD

rrdtool {update | updatev} filename [--template|-t ds-name[:ds-name]...] [--skip-past-updates|-s] [--daemon|-d address] [--] N:value[:value]... timestamp:value[:value]... at-timestamp@value[:value]...

تابع update مقادیر جدید داده را به یک RRD تزریق می‌کند. داده‌ها متناسب با ویژگی‌های RRD که داده در آن نوشته می‌شود، از نظر زمانی هم‌تراز (درونیابی) می‌شوند.

این نسخهٔ جایگزین update همان آرگومان‌ها را می‌گیرد و عملکرد مشابهی را انجام می‌دهد. حرف v نشان‌دهندهٔ verbose (مشروح) است که خروجی بازگردانده‌شده را توصیف می‌کند. updatev فهرستی از تمامی نقاط دادهٔ یکپارچه‌شده (CDPها) را که در نتیجهٔ فراخوانی update روی دیسک نوشته شده‌اند، بازمی‌گرداند. مقادیر بر اساس برچسب زمانی (time_t)، RRA (تابع یکپارچه‌سازی و تعداد PDPها به ازای هر CDP)، و منبع داده (نام) نمایه‌گذاری می‌شوند. توجه داشته باشید که بسته به آرگومان‌های فراخوانی فعلی و قبلیِ update، این فهرست ممکن است هیچ مدخلی نداشته باشد یا شامل تعداد زیادی مدخل باشد.

از آن‌جا که updatev نیازمند دسترسی مستقیم به دیسک است، گزینهٔ --daemon نمی‌تواند همراه با این دستور استفاده شود.

نام فایل RRD که می‌خواهید به‌روزرسانی کنید.
قفل کردن فایل RRD در حالت ارائه‌شده: try در صورتی که فایل توسط فرایند دیگری قفل شده باشد با شکست مواجه می‌شود، block تا زمان آزاد شدن قفل منتظر می‌ماند، و none قفل‌گذاری را به‌طور کامل نادیده می‌گیرد. مقدار پیش‌فرض از متغیر محیطی $RRD_LOCKING خوانده می‌شود و در صورت عدم وجود چنین متغیری، به try بازمی‌گردد.
به‌طور پیش‌فرض، تابع update ورودی داده‌های خود را به همان ترتیبی که منابع داده در RRD تعریف شده‌اند انتظار دارد، به استثنای هرگونه منبع دادهٔ COMPUTE (یعنی اگر نوع دادهٔ سومین منبع داده (DST) از نوع COMPUTE باشد، سومین مقدار ورودی به چهارمین منبع داده در RRD نگاشت می‌شود و الی آخر). این روش در برابر خطا چندان مقاوم نیست، چرا که ممکن است داده‌های نادرستی را به یک RRD ارسال کنید.

گزینهٔ template به شما امکان می‌دهد مشخص کنید کدام منابع داده را و با چه ترتیبی قصد دارید به‌روزرسانی کنید. اگر منابع داده مشخص‌شده در الگو در فایل RRD موجود نباشند، فرایند به‌روزرسانی با یک پیام خطا متوقف خواهد شد.

اگرچه با استفاده از گزینهٔ template به‌روزرسانی ناهمگام منابع داده ممکن به نظر می‌رسد، اما RRDtool به منابع دادهٔ غیر COMPUTE که در الگو موجود نیستند، به‌طور ضمنی مقدار *UNKNOWN* (ناشناخته) را اختصاص می‌دهد.

برای یک DST از نوع COMPUTE در تابع update مقداری تعیین نکنید. اگر این کار تصادفاً انجام شود (و این کار فقط با استفاده از گزینهٔ template امکان‌پذیر است)، RRDtool مقدار تعیین‌شده برای DST محاسباتی (COMPUTE) را نادیده خواهد گرفت.

دیمن کش‌گذاری rrdcached هنوز نمی‌تواند همزمان با الگوها (templates) استفاده شود.

هنگام به‌روزرسانی یک فایل rrd با داده‌هایی قدیمی‌تر از آخرین به‌روزرسانیِ اعمال‌شده، rrdtool یک پیام خطا صادر کرده و متوقف می‌شود. این گزینه به rrdtool دستور می‌دهد که چنین داده‌هایی را بدون هشدار نادیده بگیرد. این گزینه زمانی مفید است که داده‌های قدیمی را دوباره در یک فایل rrd بازپخش (re-play) می‌کنید و مطمئن نیستید چه تعداد به‌روزرسانی قبلاً اعمال شده است.
در صورت تعیین، RRDtool تلاش خواهد کرد تا به دیمن کش‌گذاری rrdcached در نشانی address متصل شود. اگر اتصال با موفقیت برقرار شود، مقادیر به جای دسترسی مستقیم به فایل‌ها به دیمن ارسال خواهند شد. اگر برقراری اتصال ممکن نباشد، برنامه به دسترسی مستقیم به فایل بازمی‌گردد. اگرچه این رفتار کار را راحت می‌کند، اما می‌تواند بی‌سرصدا مشکلاتی ایجاد کند، بنابراین لطفاً هشدار بخش مثال‌ها را مطالعه فرمایید.

برای مشاهدهٔ فهرستی از قالب‌های پذیرفته‌شده، گزینهٔ -l را در راهنمای rrdcached ببینید.

{N | timestamp}:value[:value]...
داده‌های استفاده‌شده برای به‌روزرسانی RRD در یک زمان مشخص دریافت شده‌اند. این زمان می‌تواند بر حسب ثانیه‌های سپری‌شده از تاریخ 1970-01-01 یا با استفاده از حرف 'N' تعریف شود که در این حالت زمان به‌روزرسانی برابر با زمان فعلی قرار می‌گیرد. مقادیر زمانی منفی از زمان فعلی کسر می‌شوند. همچنین می‌توان از قالب زمانی به سبک دستور at (مشخصه AT_STYLE، مستندات rrdfetch را ببینید) با قرار دادن نویسهٔ '@' در انتهای مشخصهٔ زمانی به جای ':' استفاده کرد. تنظیم دقیق زمان تا ثانیه، به‌ویژه زمانی حائز اهمیت است که با منابع داده‌ای از نوع COUNTER، DERIVE، DCOUNTER، DDERIVE یا ABSOLUTE کار می‌کنید.

هنگام استفاده از مقادیر زمانی منفی، گزینه‌ها و داده‌ها باید با دو خط تیره (--) از یکدیگر جدا شوند، در غیر این صورت مقدار زمانی به عنوان یک گزینه تفسیر خواهد شد. برای مشاهدهٔ نمونه، مثال‌های زیر را ببینید.

عناصر باقی‌ماندهٔ آرگومان، به‌روزرسانی‌های DS (منبع داده) هستند. ترتیب این فهرست همان ترتیبی است که منابع داده در RRA تعریف شده‌اند. اگر برای یک منبع دادهٔ خاص مقداری وجود نداشته باشد، می‌توان از حرف U (مانند N:0.1:U:1) استفاده کرد.

قالب مقدار به‌دست‌آمده از منبع داده، وابسته به نوع منبع دادهٔ انتخاب‌شده است. معمولاً این مقدار عددی است، اما ماژول‌های جمع‌آوری داده تا زمانی که دونقطه (:) به عنوان جداکنندهٔ مقادیر منابع داده باقی بماند، ممکن است تجزیه و تحلیل دلخواه خود را روی این پارامتر اعمال کنند.

متغیرهای محیطی زیر می‌توانند برای تغییر رفتار "rrdtool update" مورد استفاده قرار گیرند:

اگر این متغیر محیطی تنظیم شده باشد، اثری مشابه تعیین گزینهٔ "--daemon" در خط فرمان خواهد داشت. اگر هر دو مقدار موجود باشند، آرگومان خط فرمان اولویت دارد.
اگر این متغیر محیطی تنظیم شده باشد، رشتهٔ ابتدایی نام فایل را قبل از ارسال آن به rrdcached حذف می‌کند. این قابلیت عمدتاً برای این در نظر گرفته شده است که rrdcached بتواند بدون نیاز به تغییر ابزارهای xymon و cacti با آن‌ها کار کند.
اگر این متغیر محیطی تنظیم شده باشد، فایل RRD در حالت تعیین‌شده قفل می‌شود: try در صورتی که فایل توسط فرایند دیگری قفل شده باشد ناموفق می‌شود، block تا زمان آزاد شدن قفل منتظر می‌ماند و none قفل‌گذاری را به‌طور کلی نادیده می‌گیرد.

این متغیر می‌تواند توسط گزینهٔ خط فرمان --locking بازنویسی شود.

  • "rrdtool update demo1.rrd N:3.44:3.15:U:23"

    به‌روزرسانی فایل پایگاه‌داده demo1.rrd با ۳ مقدار مشخص و یک مقدار *UNKNOWN*. استفاده از زمان فعلی به عنوان زمان به‌روزرسانی.

  • "rrdtool update demo2.rrd 887457267:U 887457521:22 887457903:2.7"

    به‌روزرسانی فایل پایگاه‌داده demo2.rrd (که انتظار داده از یک منبع دادهٔ منفرد را دارد) در سه مرحله. ابتدا با یک مقدار *UNKNOWN* و سپس با دو خوانش معمولی. به نظر می‌رسد بازهٔ زمانی به‌روزرسانی حدود ۳۰۰ ثانیه باشد.

  • "rrdtool update demo3.rrd -- -5:21 N:42"

    به‌روزرسانی فایل پایگاه‌داده demo3.rrd در دو مرحله، با استفاده از ۵ ثانیه در گذشته و زمان فعلی به عنوان زمان‌های به‌روزرسانی.

  • "rrdtool update --daemon unix:/tmp/rrdd.sock demo4.rrd N:23"

    استفاده از سوکت دامنهٔ یونیکس "/tmp/rrdd.sock" برای ارتباط با دیمن کش‌گذاری. اگر دیمن کش‌گذاری در دسترس نباشد، فایل "demo4.rrd" مستقیماً به‌روزرسانی می‌شود. هشدار: از آن‌جا که یک مسیر نسبی مشخص شده است، ممکن است اثر نامطلوب زیر رخ دهد: اگر دیمن در دسترس باشد، فایل به صورت نسبی نسبت به پوشه کاری (working directory) دیمن استفاده می‌شود. اگر دیمن در دسترس نباشد، فایل به صورت نسبی نسبت به پوشه کاری فعلی فرایند فراخواننده استفاده خواهد شد. این امر ممکن است بسته به این‌که دیمن در دسترس باشد یا خیر، باعث به‌روزرسانی دو فایل کاملاً متفاوت شود. بچه‌ها، از مسیرهای نسبی استفاده نکنید!

Tobias Oetiker <tobi@oetiker.ch>, Florian Forster <octo at verplant.org>

2026-08-08 1.11.0