RRDGRAPH_DATA(1) rrdtool RRDGRAPH_DATA(1)

rrdgraph_data - آماده‌سازی داده‌ها برای رسم نمودار در rrdtool graph

DEF:<vname>=<rrdfile>:<ds-name>:<CF>[:step=<step>][:start=<time>][:end=<time>][:reduce=<CF>][:daemon=<address>]

VDEF:vname=RPN expression

CDEF:vname=RPN expression

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

نام‌های متغیر (vname) باید رشته‌هایی متشکل از نویسه‌های "A-Z, a-z, 0-9, _, -" و با حداکثر طول ۲۵۵ نویسه باشند.

هنگام انتخاب نام متغیرها، دقت کنید نامی را انتخاب نکنید که قبلاً توسط یک عملگر RPN اشغال شده باشد. یک روش مطمئن، استفاده از حروف کوچک یا ترکیبی از حروف کوچک و بزرگ برای متغیرها است، زیرا عملگرها همیشه با حروف بزرگ هستند.

DEF:<vname>=<rrdfile>:<ds-name>:<CF>[:step=<step>][:start=<time>][:end=<time>][:reduce=<CF>][:daemon=<address>]

این دستور داده‌ها را از یک فایل RRD واکشی می‌کند. سپس نام مجازی vname می‌تواند در سرتاسر ادامهٔ اسکریپت استفاده شود. به‌طور پیش‌فرض، یک RRA که حاوی داده‌های تجمیع‌شدهٔ صحیح با تفکیک‌پذیری مناسب است انتخاب خواهد شد. می‌توان این تفکیک‌پذیری را با گزینهٔ --step بازنویسی کرد. تفکیک‌پذیری را همچنین می‌توان با تعیین step size مجدداً بازنویسی نمود. بازهٔ زمانی این داده‌ها به‌طور پیش‌فرض همان بازهٔ زمانی نمودار است؛ می‌توانید این مورد را با تعیین start and end بازنویسی کنید. به یاد داشته باشید که دونقطه‌ها را در مشخصات زمان با نویسهٔ گریز (اسلش معکوس) فراردهی کنید!

اگر تفکیک‌پذیری داده‌ها بالاتر از تفکیک‌پذیری نمودار باشد، داده‌ها بیشتر تجمیع خواهند شد. این امر ممکن است منجر به نموداری شود که بازهٔ زمانی آن کمی بیش از زمان درخواستی باشد. در حالت ایدئال، هر نقطه در نمودار باید با یک CDP از یک RRA مطابقت داشته باشد. برای نمونه، اگر RRD شما دارای یک RRA با تفکیک‌پذیری ۱۸۰۰ ثانیه به ازای هر CDP باشد، باید تصویری با عرض ۴۰۰ و بازهٔ زمانی ۴۰۰*۱۸۰۰ ثانیه ایجاد کنید (از زمان‌های آغاز و پایان مناسب، مانند "--start end-8days8hours" استفاده کنید).

اگر نیاز به تجمیع باشد، CF مربوط به RRA مشخص‌شده در خود DEF برای کاهش تراکم داده‌ها استفاده خواهد شد. این رفتار را می‌توان با استفاده از ":reduce=<CF>" تغییر داد. این پارامتر اختیاری مشخص می‌کند که از کدام CF در مرحلهٔ کاهش داده استفاده شود.

این امکان وجود دارد که منابع دادهٔ تکی را از یک RRDCacheD مشخص درخواست کرد (به rrdcached مراجعه کنید)، که این کار با استفاده از پارامتر ":daemon=<address>" انجام می‌شود. مقدار داده‌شده به این پارامتر از همان قواعد نحوی روش‌های دیگر برای مشخص کردن نشانی دیمن کشینگ پیروی می‌کند. این موضوع با جزئیات کامل در rrdcached شرح داده شده است. با این حال، توجه داشته باشید که دونقطه‌ها (برای مثال در نشانی‌های IPv6 و به عنوان جداکنندهٔ پورت) باید با استفاده از اسلش معکوس فراردهی شوند.

مثال:

DEF:ds0=router.rrd:ds0:AVERAGE
DEF:ds0weekly=router.rrd:ds0:AVERAGE:step=7200
DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=end-1h
DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=11\:00:end=start+1h
DEF:ds0weekly=router.rrd:ds0:AVERAGE:daemon=collect1.example.com

VDEF:vname=RPN expression

این دستور بر اساس عبارت‌های RPN به‌کاررفته، یک مقدار و/یا یک زمان را برمی‌گرداند. بسته به توابع استفاده‌شده، vname حاصل دارای یک مؤلفهٔ مقدار و یک مؤلفهٔ زمان خواهد بود. هنگامی که از این vname در عبارت RPN دیگری استفاده می‌کنید، در واقع مقدار آن را درج می‌کنید، درست مثل اینکه عددی را در آن مکان قرار داده باشید. این متغیر همچنین می‌تواند در عناصر مختلف رسم نمودار و چاپ استفاده شود.

مثال: "VDEF:avg=mydata,AVERAGE"

توجه داشته باشید که در حال حاضر فقط توابع تجمیعی در عبارت‌های rpn مربوط به VDEF کار می‌کنند. از وصله‌ها برای تغییر این وضعیت استقبال می‌شود.

CDEF:vname=RPN expression

این دستور مجموعه‌ای جدید از نقاط داده (تنها در حافظه، نه در فایل RRD) از یک یا چند سری دادهٔ دیگر ایجاد می‌کند. دستورالعمل‌های RPN برای ارزیابی یک تابع ریاضی روی هر نقطهٔ داده استفاده می‌شوند. سپس vname حاصل می‌تواند در ادامهٔ اسکریپت مورد استفاده قرار گیرد، درست مانند اینکه توسط یک دستورالعمل DEF تولید شده باشد.

مثال: "CDEF:mydatabits=mydata,8,*"

در مرحله‌ای از پردازش، RRDtool آرایه‌ای از نرخ‌ها را برای نمایش آماده و گردآوری کرده است.

دستور CDEF روی چنین آرایه‌ای عمل می‌کند. برای مثال، CDEF:new=ds0,8,* هر یک از اعضای آرایه را در هشت ضرب می‌کند (احتمالاً برای تبدیل بایت‌ها به بیت‌ها). نتیجه، آرایه‌ای شامل مقادیر جدید است.

دستور VDEF نیز روی چنین آرایه‌ای عمل می‌کند، اما به روشی متفاوت. برای مثال، VDEF:max=ds0,MAXIMUM هر یک از اعضای آرایه را پویش کرده و بیشترین مقدار را ذخیره می‌کند.

از CDEF برای تبدیل داده‌های خود پیش از رسم نمودار استفاده کنید. در مثال بالا، از یک CDEF برای تبدیل بایت‌ها به بیت‌ها پیش از رسم بیت‌ها استفاده می‌کنیم.

از یک VDEF در صورتی استفاده می‌کنید که بخواهید max(1,5,3,2,4) مقدار پنج را برگرداند تا در راهنمای نمودار (legend) نمایش داده شود (برای پاسخ به این پرسش که بیشینهٔ مقدار در طول دورهٔ نمودار چه بوده است).

اگر می‌خواهید عملیات «پیچیده» را روی نتیجهٔ یک VDEF اعمال کنید، باید دوباره از یک CDEF استفاده کنید، زیرا VDEFها تنها شبیه عبارت‌های RPN به نظر می‌رسند و در واقعیت چنین نیستند.

صفحهٔ rrdgraph یک دید کلی از نحوهٔ کارکرد rrdtool graph ارائه می‌دهد. صفحهٔ rrdgraph_data دستورهای DEF، CDEF و VDEF را با جزئیات شرح می‌دهد. صفحهٔ rrdgraph_rpn زبان RPN مورد استفاده در دستورهای ?DEF را تشریح می‌کند. صفحهٔ rrdgraph_graph تمامی توابع رسم نمودار و چاپ را توضیح می‌دهد.

حتماً rrdgraph_examples را برای نکات و ترفندها مطالعه کنید.

برنامه توسط Tobias Oetiker <tobi@oetiker.ch>

این صفحهٔ راهنما توسط Alex van den Bogaerdt <alex@vandenbogaerdt.nl> به همراه اصلاحات و/یا اضافات توسط چندین نفر نوشته شده است.

2026-08-08 1.11.0