ইংরেজিফরাসিস্প্যানিশ

Ad


অনওয়ার্কস ফেভিকন

cdeftutorial - ক্লাউডে অনলাইন

উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটরের মাধ্যমে OnWorks ফ্রি হোস্টিং প্রদানকারীতে cdeftutorial চালান

এটি হল cdeftutorial কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।

কার্যক্রম:

NAME এর


cdeftutorial - Alex van den Bogaerdt এর CDEF টিউটোরিয়াল

বর্ণনাঃ


এই নথির উদ্দেশ্য: এর সাধারণভাবে ব্যবহৃত অংশগুলির কিছু উদাহরণ প্রদান করা
RRDtool এর CDEF ভাষা।

আপনি যদি মনে করেন কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য সঠিকভাবে ব্যাখ্যা করা হয়নি, এবং যদি এটি যোগ করা হয়
নথিটি বেশিরভাগ ব্যবহারকারীদের উপকৃত করবে, দয়া করে আমাকে এটি যোগ করতে বলুন। তারপর দেওয়ার চেষ্টা করব
এই টিউটোরিয়ালের পরবর্তী রিলিজে একটি উত্তর। কোন প্রতিক্রিয়া কোন পরিবর্তন সমান! সংযোজন
এই নথিতেও স্বাগত জানাই। -- অ্যালেক্স ভ্যান ডেন বোগারডট[ইমেল সুরক্ষিত]>

কেন এই টিউটোরিয়াল?
RRDtool-এর শক্তিশালী অংশগুলির মধ্যে একটি হল এর উপর সব ধরণের গণনা করার ক্ষমতা
তথ্য তার ডাটাবেস থেকে পুনরুদ্ধার করা হয়েছে. যাইহোক, RRDtool এর অনেক অপশন এবং সিনট্যাক্স এটি তৈরি করে
গড় ব্যবহারকারীর পক্ষে বোঝা কঠিন। ম্যানুয়াল কি ব্যাখ্যা করতে ভাল
এই বিকল্পগুলি করে; যদিও তারা কেন তা বিস্তারিতভাবে ব্যাখ্যা করে না (এবং উচিত নয়)
দরকারী আমার RRDtool টিউটোরিয়ালের মতো: আপনি যদি সহজ ভাষায় একটি সাধারণ নথি চান
এই টিউটোরিয়াল পড়া উচিত। আপনি যদি অফিসিয়াল ডকুমেন্টেশনের সাথে খুশি হন তবে আপনি খুঁজে পেতে পারেন
এই নথিটি খুব সহজ বা এমনকি বিরক্তিকর। আপনি যদি এই টিউটোরিয়ালটি পড়তে পছন্দ করেন তবে আমিও
আশা করি আপনি আমার অন্য টিউটোরিয়ালটি পড়েছেন এবং সম্পূর্ণরূপে বুঝতে পেরেছেন।

অধিক পড়া
আমি যেভাবে ব্যাখ্যা করার চেষ্টা করি তাতে যদি আপনার অসুবিধা হয় তবে অনুগ্রহ করে স্টিভ রেডার পড়ুন
rpntutorial. এটি আপনাকে বুঝতে সাহায্য করতে পারে কিভাবে এই সব কাজ করে।

কি হয় CDEFs?


একটি RRD থেকে ডেটা পুনরুদ্ধার করার সময়, আপনি সেই ডেটার সাথে কাজ করার জন্য একটি "DEF" ব্যবহার করছেন। ভাবা
এটি একটি পরিবর্তনশীল হিসাবে যা সময়ের সাথে পরিবর্তিত হয় (যেখানে সময় হল x-অক্ষ)। এর মান
ভেরিয়েবল হল সেই নির্দিষ্ট সময়ে ডাটাবেসে যা পাওয়া যায় এবং আপনি কোনটি করতে পারবেন না
এর উপর পরিবর্তন। CDEF এর জন্য এটি: তারা DEF থেকে মান নেয় এবং সম্পাদন করে
তাদের উপর গণনা।

বাক্য গঠন


DEF:var_name_1=some.rrd:ds_name:CF
CDEF:var_name_2=RPN_expression

আপনি প্রথমে "var_name_1" সংজ্ঞায়িত করেন যা RRD তে পাওয়া ডেটা উৎস "ds_name" থেকে সংগৃহীত ডেটা হতে পারে
একত্রীকরণ ফাংশন "CF" সহ "some.rrd"।

অনুমান করুন ifInOctets SNMP কাউন্টারটি mrtg.rrd-এ DS "in" হিসাবে সংরক্ষণ করা হয়েছে। এরপর
নিম্নলিখিত DEF সেই ডেটা উৎসের গড় জন্য একটি পরিবর্তনশীল সংজ্ঞায়িত করে:

DEF:inbytes=mrtg.rrd:in:AVERAGE

বলুন আপনি প্রতি সেকেন্ডে বিট প্রদর্শন করতে চান (সেকেন্ডে বাইটের পরিবর্তে
ডাটাবেস।) আপনাকে পরিবর্তনশীল "ইনবাইটস" এর উপর একটি গণনা (অতএব "সিডিইএফ") নির্ধারণ করতে হবে এবং ব্যবহার করতে হবে
আসলটির পরিবর্তে সেই পরিবর্তনশীল (ইনবিটস)

CDEF: inbits=inbytes,8,*

এটি RRDtool কে ইনবিট পেতে ইনবাইটকে আট দ্বারা গুণ করতে বলে। আমি পরে ব্যাখ্যা করব কিভাবে এটি
কাজ করে গ্রাফিং বা প্রিন্টিং ফাংশনে, আপনি এখন ইনবিট ব্যবহার করতে পারেন যেখানে আপনি ব্যবহার করবেন
অন্যথায় ইনবাইট।

মনে রাখবেন যে CDEF (inbits) তে ব্যবহৃত ভেরিয়েবলের নাম ভেরিয়েবলের মত হওয়া উচিত নয়
DEF (ইনবাইট) এ নাম দেওয়া হয়েছে!

RPN- এক্সপ্রেশন


রিভার্স পোলিশ নোটেশনের জন্য RPN হল শর্ট-হ্যান্ড। এটি নিম্নরূপ কাজ করে। আপনি ভেরিয়েবল রাখুন
অথবা একটি স্ট্যাকের সংখ্যা। আপনি স্ট্যাক এবং এই স্ট্যাকের উপর অপারেশন (জিনিস-টু-ডু) রাখুন
তারপর প্রক্রিয়া করা হয়। ফলাফল স্ট্যাকের উপর স্থাপন করা হবে. শেষে, থাকা উচিত
ঠিক একটি সংখ্যা বাকি: অপারেশনের সিরিজের ফলাফল। ঠিক না থাকলে
একটি নম্বর বাকি, RRDtool জোরে অভিযোগ করবে।

উপরে আট দ্বারা গুন করলে এরকম দেখাবে:

1. একটি খালি স্ট্যাক দিয়ে শুরু করুন

2. স্ট্যাকের উপর পরিবর্তনশীল ইনবাইটের বিষয়বস্তু রাখুন

3. স্ট্যাকের উপর আট নম্বর রাখুন

4. স্ট্যাকের উপর অপারেশন গুণিত রাখুন

5. স্ট্যাক প্রক্রিয়া

6. স্ট্যাক থেকে মান পুনরুদ্ধার করুন এবং এটি পরিবর্তনশীল ইনবিটে রাখুন

আমরা এখন বাস্তব সংখ্যা সহ একটি উদাহরণ করব। ধরুন ভেরিয়েবল ইনবাইটের মান থাকবে
10, স্ট্যাক হবে:

1. ||

2. |10|

3. |10|8|

4. |10|8|*|

5. |80|

6. ||

স্ট্যাক প্রক্রিয়াকরণ (ধাপ 5) স্ট্যাক থেকে একটি মান পুনরুদ্ধার করবে (এ ডান থেকে
ধাপ 4)। এটি অপারেশন গুণিতক এবং এটি ইনপুট হিসাবে স্ট্যাকের থেকে দুটি মান নেয়।
ফলাফল স্ট্যাকের উপর আবার রাখা হয় (এই ক্ষেত্রে মান 80)। গুণের জন্য
অর্ডার কোন ব্যাপার না, কিন্তু বিয়োগ এবং বিভাজনের মত অন্যান্য ক্রিয়াকলাপের জন্য এটি করে।
সাধারণভাবে বলতে গেলে আপনার নিম্নলিখিত আদেশ রয়েছে:

y = A - B --> y = বিয়োগ(A, B) --> CDEF:y=A,B,-

এটি খুব স্বজ্ঞাত নয় (অন্তত বেশিরভাগ মানুষ তা মনে করেন না)। ফাংশন f(A,B) এর জন্য
আপনি "f" এর অবস্থান বিপরীত করেন, কিন্তু আপনি ভেরিয়েবলের ক্রম বিপরীত করেন না।

রূপান্তর তোমার ইচ্ছাকে থেকে আরপিএন


প্রথমে, আপনি কী করতে চান তার একটি পরিষ্কার ছবি পান। সমস্যাটিকে ছোট করে ভেঙ্গে ফেলুন
অংশ যতক্ষণ না তারা আর বিভক্ত করা যাবে না। তারপর এটি আপনার রূপান্তর বরং সহজ
RPN-এ ধারনা।

ধরুন আপনার বেশ কয়েকটি RRD আছে এবং সেগুলিতে কিছু কাউন্টার যোগ করতে চান। এগুলো পারে
উদাহরণস্বরূপ, প্রতিটি WAN লিঙ্কের কাউন্টার যা আপনি পর্যবেক্ষণ করছেন।

তোমার আছে:

link1in link1in সহ router2.rrd
link2in link1in সহ router2.rrd
link3in link1in সহ router2.rrd

মনে করুন আপনি ভিতরের link2in ব্যতীত এই সমস্ত কাউন্টার যোগ করতে চান
রাউটার2.আরআরডি। আপনাকে করতে হবে:

(এই উদাহরণে, "router1.rrd:link1in" মানে RRD রাউটার1.rrd-এর ভিতরে DS link1in)

router1.rrd:link1in
router1.rrd:link2in
router2.rrd:link1in
router3.rrd:link1in
router3.rrd:link2in
-------------------- +
(সমষ্টির ফলাফল)

একটি গাণিতিক ফাংশন হিসাবে, এটি লেখা যেতে পারে:

যোগ করুন
, router3.rrd:link2.in)"

RRDtool এবং RPN দিয়ে, প্রথমে ইনপুটগুলি সংজ্ঞায়িত করুন:

DEF:a=router1.rrd:link1in:AVERAGE
DEF:b=router1.rrd:link2in:AVERAGE
DEF:c=router2.rrd:link1in:AVERAGE
DEF:d=router3.rrd:link1in:AVERAGE
DEF:e=router3.rrd:link2in:AVERAGE

এখন, গাণিতিক ফাংশন হয়ে যায়: "add(a,b,c,d,e)"

RPN-এ, এমন কোনো অপারেটর নেই যা দুটি মানের বেশি যোগ করে তাই আপনাকে বেশ কিছু করতে হবে
সংযোজন আপনি a এবং b যোগ করুন, ফলাফলে c যোগ করুন, ফলাফলে d যোগ করুন এবং e এর সাথে যোগ করুন
ফলাফল।

push a: একটি স্ট্যাকের মধ্যে a এর মান থাকে
b পুশ করুন এবং যোগ করুন: b,+ স্ট্যাকের মধ্যে a+b এর ফলাফল রয়েছে
c চাপুন এবং যোগ করুন: c,+ স্ট্যাকের মধ্যে a+b+c এর ফলাফল রয়েছে
d চাপুন এবং যোগ করুন: d,+ স্ট্যাকের মধ্যে a+b+c+d এর ফলাফল রয়েছে
e চাপুন এবং যোগ করুন: e,+ স্ট্যাকের মধ্যে a+b+c+d+e এর ফলাফল রয়েছে

এখানে যা গণনা করা হয়েছিল তা এইভাবে লেখা হবে:

(( (a+b) + c) + d) + e) ​​>

এটি RPN-এ রয়েছে: "CDEF: ফলাফল=a,b,+,c,+,d,+,e,+"

এটি সঠিক তবে এটি মানুষের কাছে আরও স্পষ্ট করা যেতে পারে। এটা কোন ব্যাপার না যদি আপনি একটি যোগ করুন
b থেকে তারপর ফলাফলে c যোগ করুন অথবা প্রথমে c এর সাথে b যোগ করুন এবং তারপর ফলাফলে a যোগ করুন। এই
RPN কে "CDEF:result=a,b,c,d,e,+,+,+,+"-এ পুনরায় লেখা সম্ভব করে তোলে যা
ভিন্নভাবে মূল্যায়ন করা হয়েছে:

স্ট্যাকের উপর ভেরিয়েবল a এর পুশ মান: a
স্ট্যাকের উপর ভেরিয়েবল b এর পুশ মান: ab
স্ট্যাকের উপর ভেরিয়েবল c এর পুশ মান: abc
স্ট্যাকের d ভেরিয়েবলের পুশ মান: abcd
স্ট্যাকের উপর ভেরিয়েবল e এর পুশ মান: abcde
পুশ অপারেটর + স্ট্যাকের উপর: abcde +
এবং এটি প্রক্রিয়া করুন: abc P (যেখানে P == d+e)
পুশ অপারেটর + স্ট্যাকের উপর: abc P +
এবং এটি প্রক্রিয়া করুন: ab Q (যেখানে Q == c+P)
পুশ অপারেটর + স্ট্যাকের উপর: ab Q +
এবং এটি প্রক্রিয়া করুন: a R (যেখানে R == b+Q)
পুশ অপারেটর + স্ট্যাকের উপর: একটি R +
এবং এটি প্রক্রিয়া করুন: S (যেখানে S == a+R)

আপনি দেখতে পাচ্ছেন যে RPN এক্সপ্রেশন "a,b,c,d,e,+,+,+,+,+" মূল্যায়ন করবে
"((((d+e)+c)+b)+a)" এবং এটির ফলাফল "a,b,+,c,+,d,+,e,+" এর মতো। এই বলা হয়
সংযোজনের পরিবর্তনমূলক আইন, কিন্তু আপনি যতক্ষণ না ততক্ষণ এটি ভুলে যেতে পারেন
মনে রাখবেন এর মানে কি

এখন একটি অভিব্যক্তি দেখুন যাতে একটি গুণ রয়েছে:

সাধারণ গণিতে প্রথমে: "আলো ফলাফল = a+b*c"। এই ক্ষেত্রে আপনি অর্ডার নির্বাচন করতে পারবেন না
নিজেকে, আপনাকে গুণ দিয়ে শুরু করতে হবে এবং তারপরে একটি যোগ করতে হবে। আপনি পরিবর্তন করতে পারেন
b এবং c এর অবস্থান, আপনি অবশ্যই a এবং b এর অবস্থান পরিবর্তন করবেন না।

এই অভিব্যক্তিটিকে RPN-এ রূপান্তর করার সময় আপনাকে এটি বিবেচনায় নিতে হবে। এটা পড়ুন
যেমন: "a-তে b*c-এর ফলাফল যোগ করুন" এবং তারপর RPN এক্সপ্রেশন লেখা সহজ:
"ফলাফল=a,b,c,*,+" আরেকটি অভিব্যক্তি যা একই রকম ফেরত দেবে: "ফলাফল=b,c,*,a,+"

সাধারণ গণিতে, আপনি "a*(b+c)" এর মতো কিছুর সম্মুখীন হতে পারেন এবং এটি রূপান্তরিতও হতে পারে
RPN-এ বন্ধনীটি আপনাকে প্রথমে b এবং c যোগ করতে এবং তারপর a এর সাথে গুণ করতে বলে
ফলাফল. আবার, এখন এটি RPN-এ লেখা সহজ: "result=a,b,c,+,*"। উল্লেখ্য যে এই
পূর্ববর্তী অনুচ্ছেদের একটি অভিব্যক্তির সাথে খুব মিল, শুধুমাত্র গুণ
এবং যোগ স্থান পরিবর্তন.

যখন আপনার RPN নিয়ে সমস্যা হয় বা যখন RRDtool অভিযোগ করে, এটি সাধারণত একটি ভাল জিনিস
কাগজের টুকরোতে স্ট্যাকটি লিখুন এবং দেখুন কী হয়। ম্যানুয়াল প্রস্তুত রাখুন
এবং RRDtool হওয়ার ভান করুন। শুধু হাত দিয়ে সব গণিত করুন দেখতে কি হয়, আমি নিশ্চিত
এটি বেশিরভাগ সমস্যার সমাধান করবে, যদি সব না হয়, আপনি যে সমস্যার সম্মুখীন হন।

কিছু প্রশিক্ষণ সংখ্যার


সার্জারির অজানা মূল্য
কখনও কখনও আপনার তথ্য সংগ্রহ ব্যর্থ হবে. এটি খুব সাধারণ হতে পারে, বিশেষ করে যখন
ব্যস্ত লিঙ্কের উপর জিজ্ঞাসা. RRDtool কনফিগার করা যেতে পারে একটি (বা আরও বেশি) জন্য অনুমতি দেওয়ার জন্য
অজানা মান(গুলি) এবং অনুপস্থিত আপডেট গণনা করুন। আপনি, উদাহরণস্বরূপ, আপনার জিজ্ঞাসা করতে পারেন
প্রতি মিনিটে ডিভাইস। এটি প্রতি মিনিটে একটি তথাকথিত পিডিপি বা প্রাথমিক ডেটা পয়েন্ট তৈরি করছে।
আপনি যদি আপনার RRD সংজ্ঞায়িত করেন একটি RRA যাতে 5 মিনিটের মান সঞ্চয় করে, আপনার পাঁচটি প্রয়োজন
সেই পিডিপিগুলি একটি সিডিপি (একত্রিত ডেটা পয়েন্ট) তৈরি করতে। এই PDP গুলি অজানা হয়ে যেতে পারে
দুটি ক্ষেত্রে:

1. আপডেটগুলি অনেক দূরে। এটি "হার্টবিট" সেটিং ব্যবহার করে টিউন করা হয়েছে।

2. কোন মান না দিয়ে (টেমপ্লেট ব্যবহার করে) উদ্দেশ্যমূলকভাবে আপডেটটি অজানা হিসাবে সেট করা হয়েছিল
বিকল্প) অথবা সন্নিবেশ করার মান হিসাবে "U" ব্যবহার করে।

যখন একটি CDP গণনা করা হয়, অন্য একটি প্রক্রিয়া নির্ধারণ করে যে এই CDP বৈধ কিনা। যদি
অজানা অনেক পিডিপি আছে, সিডিপিও অজানা। এই দ্বারা নির্ধারিত হয়
xff ফ্যাক্টর। অনুগ্রহ করে মনে রাখবেন যে একটি অজানা পাল্টা আপডেটের ফলে দুটি অজানা PDP হতে পারে! যদি
আপনি প্রতি সিডিপিতে শুধুমাত্র একটি অজানা পিডিপির অনুমতি দেন, এটি সিডিপিকে অজানা করে তোলে!

ধরুন কাউন্টারটি প্রতি সেকেন্ডে একটি করে বৃদ্ধি পায় এবং আপনি প্রতি মিনিটে এটি পুনরুদ্ধার করেন:

কাউন্টার ভ্যালু ফলে হার
10'000
10'060 1; (10'060-10'000)/60 == 1
10'120 1; (10'120-10'060)/60 == 1
অজানা অজানা; আপনি শেষ মান জানেন না
10'240 অজানা; আপনি আগের মান জানেন না
10'300 1; (10'300-10'240)/60 == 1

যদি শেষ পাঁচটি আপডেট থেকে সিডিপি গণনা করা হয় তবে এটি দুটি অজানা পিডিপি পাবে
এবং তিনটি পরিচিত পিডিপি। যদি xff 0.5 তে সেট করা যেত যা সাধারণত একটি
ব্যবহৃত ফ্যাক্টর, CDP-এর একটি পরিচিত মান 1 হবে। যদি xff 0.2 তে সেট করা হত তাহলে
ফলে সিডিপি অজানা হবে।

আপনাকে হৃদস্পন্দনের সঠিক মান, সিডিপি প্রতি পিডিপির সংখ্যা এবং xff নির্ধারণ করতে হবে
ফ্যাক্টর আপনি আগের পাঠ্য থেকে দেখতে পাচ্ছেন যে তারা আপনার RRA এর আচরণকে সংজ্ঞায়িত করে।

ওয়ার্কিং সঙ্গে অজানা উপাত্ত in তোমার ডাটাবেজ
আপনি আগের অধ্যায়ে পড়েছেন, একটি RRA-তে এন্ট্রি অজানা সেট করা যেতে পারে
মান আপনি যদি এই ধরণের মান দিয়ে গণনা করেন তবে ফলাফলটিও অজানা থাকতে হবে।
এর মানে হল "ফলাফল=a,b,+" এর মত একটি অভিব্যক্তি অজানা হবে যদি হয় a বা b হয়
অজানা শুধু অজানা মান উপেক্ষা করা এবং এর মান ফেরত দেওয়া ভুল হবে
অন্যান্য পরামিতি। এটি করার মাধ্যমে, আপনি অনুমান করবেন "অজানা" মানে "শূন্য" এবং এটি নয়
সত্য।

এমন একটি ঘটনা ঘটেছে যেখানে কেউ এক বছরেরও বেশি সময় ধরে তথ্য সংগ্রহ করছিল। একটি নতুন টুকরা
সরঞ্জাম ইনস্টল করা হয়েছিল, একটি নতুন আরআরডি তৈরি করা হয়েছিল এবং একটি যোগ করার জন্য স্ক্রিপ্টগুলি পরিবর্তন করা হয়েছিল
পুরানো ডাটাবেস থেকে কাউন্টার এবং নতুন ডাটাবেস থেকে একটি কাউন্টার। ফলাফল ছিল
হতাশাজনক, পরিসংখ্যানের একটি বড় অংশ রহস্যজনকভাবে অদৃশ্য হয়ে গেছে বলে মনে হচ্ছে ...
তারা অবশ্যই করেনি, পুরানো ডাটাবেস থেকে মান (পরিচিত মান) মানগুলিতে যোগ করা হয়েছিল
নতুন ডাটাবেস থেকে (অজানা মান) এবং ফলাফল অজানা ছিল।

এই ক্ষেত্রে, একটি CDEF ব্যবহার করা মোটামুটি যুক্তিসঙ্গত যা অজানা ডেটাকে শূন্যে পরিবর্তন করে।
ডিভাইসের কাউন্টারগুলি অজানা ছিল (সব পরে, এটি এখনও ইনস্টল করা হয়নি!) কিন্তু আপনি জানেন
যে ডিভাইসের মাধ্যমে ডেটা রেট শূন্য হতে হয়েছিল (একই কারণে: এটি ছিল
ইনস্টল করা না).

নীচে কিছু উদাহরণ রয়েছে যা এই পরিবর্তনটি করে।

অনন্ত
অসীম ডেটা একটি বিশেষ সংখ্যার আরেকটি রূপ। এটা দ্বারা গ্রাফ করা যাবে না কারণ
সংজ্ঞা আপনি অসীম মান পৌঁছাতে হবে না. আপনি ইতিবাচক চিন্তা করতে পারেন এবং
শূন্যের সাপেক্ষে অবস্থানের উপর নির্ভর করে ঋণাত্মক অসীমতা।

RRDtool তার কারেন্টে থেমে অসীমকে উপস্থাপন করতে সক্ষম (-নোট-গ্রাফিং!)
সর্বাধিক (ধনাত্মক অসীমের জন্য) বা সর্বনিম্ন (নেতিবাচক অসীমের জন্য) এটি না জেনে
সর্বাধিক (সর্বনিম্ন)।

RRDtool-এ ইনফিনিটি বেশিরভাগই এর উল্লম্ব না জেনেই একটি AREA আঁকতে ব্যবহৃত হয়
মাত্রা. আপনি এটিকে অসীম উচ্চতা সহ একটি AREA অঙ্কন এবং প্রদর্শন হিসাবে ভাবতে পারেন
শুধুমাত্র বর্তমান গ্রাফে দৃশ্যমান অংশ। এটি সম্ভবত একটি ভাল উপায়
আনুমানিক অসীম এবং এটা নিশ্চিত কিছু ঝরঝরে কৌশল জন্য অনুমতি দেয়. উদাহরণ জন্য নীচে দেখুন.

ওয়ার্কিং সঙ্গে অজানা উপাত্ত এবং অনন্ত
কখনও কখনও আপনি অজানা ডেটা বাতিল করতে চান এবং ভান করতে চান যে এটি শূন্য (বা অন্য কোনও
সেই বিষয়টির জন্য মান) এবং কখনও কখনও আপনি ভান করতে চান যে পরিচিত ডেটা অজানা
(জানা-থেকে-ভুল ডেটা বাতিল করতে)। এই কারণেই CDEF-এর অজানা ডেটার জন্য সমর্থন রয়েছে।
এমন উদাহরণও পাওয়া যায় যা অসীম ব্যবহার করে অজানা ডেটা দেখায়।

কিছু উদাহরণ


উদাহরণ: ব্যবহার a সম্প্রতি নির্মিত ডিআরআর
আপনি এখন এক বছরেরও বেশি সময় ধরে আপনার রাউটারে পরিসংখ্যান রাখছেন। সম্প্রতি আপনি একটি ইনস্টল করেছেন
অতিরিক্ত রাউটার এবং আপনি এই দুটি ডিভাইসের জন্য সম্মিলিত থ্রুপুট দেখাতে চান।

আপনি যদি রাউটার.আরআরডি এবং রাউটার২.আরডি থেকে কাউন্টার যোগ করেন তবে আপনি পরিচিত ডেটা যোগ করবেন
আপনার পরিসংখ্যানের বড় অংশের জন্য (রাউটার.আরআরডি থেকে) অজানা ডেটা (রাউটার২.আরআরডি থেকে)।
আপনি কয়েকটি উপায়ে এটি সমাধান করতে পারেন:

নতুন ডাটাবেস তৈরি করার সময়, শুরু থেকে এখন পর্যন্ত শূন্য দিয়ে পূরণ করুন। তোমার আছে
ডাটাবেসটি অন্য ডাটাবেসের অন্তত সাম্প্রতিক সময়ে বা তার আগে শুরু করতে।

· বিকল্পভাবে, আপনি CDEF ব্যবহার করতে পারেন এবং অজানা ডেটা শূন্যে পরিবর্তন করতে পারেন।

উভয় পদ্ধতির তাদের সুবিধা এবং অসুবিধা আছে। প্রথম পদ্ধতিটি ঝামেলাপূর্ণ এবং যদি আপনি চান
আপনি নিজেই এটা বের করতে হবে যে. একটি ডাটাবেস পূরণ করা সম্ভব নয়
শূন্য সহ, আপনাকে সেগুলি ম্যানুয়ালি রাখতে হবে। দ্বিতীয় পদ্ধতির বাস্তবায়ন বর্ণনা করা হয়েছে
পরবর্তী:

আমরা যা চাই তা হল: "মানটি অজানা থাকলে, এটিকে শূন্য দিয়ে প্রতিস্থাপন করুন"। এই লেখা হতে পারে
ছদ্ম-কোড হিসাবে: যদি (মান অজানা) তারপর (শূন্য) অন্য (মান)। rrdgraph পড়ার সময়
ম্যানুয়াল আপনি "UN" ফাংশন লক্ষ্য করেন যা শূন্য বা এক প্রদান করে। আপনি "IF" লক্ষ্য করুন
ফাংশন যা শূন্য বা এককে ইনপুট হিসাবে নেয়।

প্রথমে "IF" ফাংশনটি দেখুন। এটি স্ট্যাক থেকে তিনটি মান নেয়, প্রথম মানটি
সিদ্ধান্ত বিন্দু, দ্বিতীয় মান স্ট্যাকে ফেরত দেওয়া হয় যদি মূল্যায়ন "সত্য" হয়
এবং যদি না হয়, তৃতীয় মান স্ট্যাকে ফেরত দেওয়া হয়। আমরা চাই "জাতিসংঘ" ফাংশন সিদ্ধান্ত নেবে
কি হয় তাই আমরা একটি CDEF এ দুটি ফাংশন একত্রিত করি।

"IF" ফাংশনের জন্য দুটি সম্ভাব্য পথ লিখুন:

যদি সত্য ফেরত a
যদি মিথ্যা রিটার্ন খ

RPN-এ: "result=x,a,b,IF" যেখানে "x" হয় সত্য বা মিথ্যা।

এখন আমাদের "x" পূরণ করতে হবে, এটি "(মান অজানা)" অংশ হওয়া উচিত এবং এটি ইন
RPN: "ফলাফল = মান, UN"

আমরা এখন সেগুলিকে একত্রিত করি: "ফলাফল=মান,UN,a,b,IF" এবং যখন আমরা উপযুক্ত জিনিসগুলি পূরণ করি
"a" এবং "b" এর জন্য আমরা শেষ করেছি:

"CDEF:ফলাফল=মান,UN,0,মান,IF"

আপনি স্টিভ রেডারের RPN গাইড পড়তে চাইতে পারেন যদি আপনার I পদ্ধতিতে সমস্যা হয়
এই শেষ উদাহরণ ব্যাখ্যা.

আপনি যদি এই RPN এক্সপ্রেশন চেক করতে চান, শুধু RRDtool আচরণ অনুকরণ করুন:

কোনো পরিচিত মানের জন্য, অভিব্যক্তিটি নিম্নরূপ মূল্যায়ন করে:
CDEF: ফলাফল=মান,UN,0,মান,IF (মান,UN) সত্য নয় তাই এটি 0 হয়ে যায়
CDEF:result=0,0,value,IF "IF" 3য় মান প্রদান করবে
CDEF:result=value পরিচিত মান প্রদান করা হয়

অজানা মানের জন্য, এটি ঘটে:
CDEF: ফলাফল=মান,UN,0,মান,IF (মান,UN) সত্য তাই এটি 1 হয়ে যায়
CDEF:result=1,0,value,IF "IF" 1 দেখে এবং 2য় মান প্রদান করে
CDEF: ফলাফল = 0 শূন্য দেওয়া হয়েছে

অবশ্যই, আপনি যদি শূন্যের পরিবর্তে অন্য একটি মান দেখতে চান তবে আপনি অন্যটি ব্যবহার করতে পারেন
মান।

অবশেষে, যখন সমস্ত অজানা ডেটা RRD থেকে মুছে ফেলা হয়, আপনি এটি সরাতে চাইতে পারেন
নিয়ম যাতে অজানা তথ্য সঠিকভাবে প্রদর্শিত হয়।

উদাহরণ: উত্তম হ্যান্ডলিং of অজানা ডেটা, by ব্যবহার সময়
উপরের উদাহরণের একটি অপূর্ণতা আছে। আপনি যদি পরে আপনার ডাটাবেসে অজানা তথ্য লগ করেন
আপনার নতুন সরঞ্জাম ইনস্টল করা, এটি শূন্য এবং তাই আপনি অনুবাদ করা হবে
দেখবে না যে কোন সমস্যা ছিল। এটি ভাল নয় এবং আপনি যা করতে চান তা হল:

· অজানা তথ্য থাকলে, এই নমুনা নেওয়ার সময় দেখুন।

· যদি অজানা মানটি xxx সময়ের আগে হয় তবে এটিকে শূন্য করুন।

যদি এটি সময় xxx পরে হয়, এটি অজানা তথ্য হিসাবে ছেড়ে দিন।

এটি সম্ভব: আপনি কিছু পরিচিত সময়ের সাথে নমুনা নেওয়ার সময় তুলনা করতে পারেন।
ধরে নিচ্ছি আপনি 17 সেপ্টেম্বর, 1999, 00:35:57 MET শুক্রবার আপনার ডিভাইস নিরীক্ষণ করা শুরু করেছেন
ডিএসটি 1970-01-01 থেকে এই সময়টি সেকেন্ডে অনুবাদ করুন এবং এটি 937'521'357 হয়ে যায়। আপনি যদি
এই সময়ের পরে প্রাপ্ত অজানা মানগুলি প্রক্রিয়া করুন, আপনি তাদের অজানা ছেড়ে যেতে চান
এবং যদি তারা এই সময়ের আগে "প্রাপ্ত" হয়ে থাকে, তাহলে আপনি তাদের শূন্যে অনুবাদ করতে চান (তাই আপনি
আপনার অন্যান্য রাউটার কাউন্টারে যোগ করার সময় তাদের কার্যকরভাবে উপেক্ষা করতে পারে)।

শুক্রবার 17 সেপ্টেম্বর, 1999, 00:35:57 MET DST 937'521'357-এ অনুবাদ করে করা যেতে পারে,
উদাহরণস্বরূপ, gnu তারিখ ব্যবহার করে:

তারিখ -d "19990917 00:35:57" +%s

আপনি ডাটাবেস ডাম্প করতে পারেন এবং দেখতে পারেন যে ডেটা কোথায় পরিচিত হতে শুরু করে। সেখানে
এটি করার আরও কয়েকটি উপায়, শুধু একটি বেছে নিন।

এখন আমাদের এমন জাদু তৈরি করতে হবে যা আমাদের অজানা মানগুলিকে ভিন্নভাবে প্রক্রিয়া করতে দেয়
নমুনা নেওয়ার সময়ের উপর নির্ভর করে। এটি একটি তিন ধাপের প্রক্রিয়া:

1. যদি মানের টাইমস্ট্যাম্পটি 937'521'357 এর পরে হয় তবে এটিকে যেমন আছে তেমনই রেখে দিন।

2. যদি মানটি একটি পরিচিত মান হয় তবে এটিকে যেমন আছে তেমনই রেখে দিন।

3. অজানা মানকে শূন্যে পরিবর্তন করুন।

আসুন প্রথম অংশটি দেখি:

যদি (সত্য) আসল মান ফেরত দেয়

আমরা এটি পুনরায় লিখি:

যদি (সত্য) "a" ফেরত দেয়
যদি (মিথ্যা) "b" ফেরত দেয়

আমাদের ধাপ 1 থেকে সত্য বা মিথ্যা গণনা করতে হবে। একটি ফাংশন উপলব্ধ রয়েছে যা রিটার্ন করে
বর্তমান নমুনার জন্য টাইমস্ট্যাম্প। এটাকে বলা হয়, কেমন আশ্চর্যজনকভাবে, "টাইম"। এইবার
একটি ধ্রুবক সংখ্যার সাথে তুলনা করতে হবে, আমাদের "GT" প্রয়োজন। "GT" এর আউটপুট সত্য বা মিথ্যা
এবং এটি "IF" এ ভাল ইনপুট। আমরা চাই "যদি (সময় > 937521357) তারপর (একটি ফেরত) অন্য
(ফেরত খ)"।

এই প্রক্রিয়াটি পূর্ববর্তী অধ্যায়ে ইতিমধ্যেই পুঙ্খানুপুঙ্খভাবে বর্ণনা করা হয়েছে তাই আসুন এটি দ্রুত করা যাক:

if (x) তারপর a else b
যেখানে x "সময়>937521357" উপস্থাপন করে
যেখানে a মূল মান উপস্থাপন করে
যেখানে b পূর্ববর্তী উদাহরণের ফলাফল উপস্থাপন করে

সময়>937521357 --> টাইম,937521357,জিটি

if (x) তারপর a else b --> x,a,b,IF
বিকল্প x --> TIME,937521357,GT,a,b,IF
বিকল্প a --> TIME,937521357,GT,value,b,IF
বিকল্প b --> TIME,937521357,GT,মান,মান,UN,0,value,IF,IF

আমরা শেষ করি: "CDEF:result=TIME,937521357,GT,value,value,UN,0,value,IF,IF"

এটি খুব জটিল দেখায়, তবে, আপনি দেখতে পাচ্ছেন, এটি নিয়ে আসা খুব কঠিন ছিল না।

উদাহরণ: বুজরূক অদ্ভুত উপাত্ত নয় সেখানে
ধরুন আপনার একটি সমস্যা আছে যা আপনার গ্রাফে বিশাল স্পাইক হিসাবে দেখায়। তুমি এটা জানো
ঘটে এবং কেন, তাই আপনি সমস্যার সমাধান করার সিদ্ধান্ত নেন। সম্ভবত আপনি আপনার ব্যবহার করছেন
নেটওয়ার্ক রাতে একটি ব্যাকআপ করতে এবং এটি করার মাধ্যমে আপনি প্রায় 10mb/s পাবেন বাকি সময়
আপনার নেটওয়ার্ক কার্যকলাপ 100kb/s এর বেশি সংখ্যা তৈরি করে না।

দুটি বিকল্প রয়েছে:

1. সংখ্যাটি 100kb/s এর বেশি হলে এটি ভুল এবং আপনি এটি পরিবর্তন করে মুখোশ খুলে দিতে চান
অজানা মধ্যে

2. আপনি গ্রাফটি 100kb/s এর বেশি দেখাতে চান না৷

সিউডো কোড: যদি (সংখ্যা > 100) তারপর অপরিচিত অন্য নম্বর বা ছদ্ম কোড: যদি (সংখ্যা > 100)
তারপর অন্য 100 নম্বর।

দ্বিতীয় "সমস্যা" RRDtool গ্রাফের কঠোর বিকল্প ব্যবহার করেও সমাধান করা যেতে পারে,
তবে এই একই ফলাফল নেই. এই উদাহরণে আপনি একটি গ্রাফ দিয়ে শেষ করতে পারেন যে
অটোস্কেলিং করে। এছাড়াও, আপনি ম্যাক্সিমা প্রদর্শনের জন্য সংখ্যাগুলি ব্যবহার করলে সেগুলি সেট করা হবে৷
100kb/s

আমরা আবার "IF" এবং "GT" ব্যবহার করি। "if (x) তারপর (y) else (z)" হিসাবে লেখা হয়
"CDEF: ফলাফল=x,y,z,IF"; এখন x, y এবং z পূরণ করুন। x এর জন্য আপনি "এর চেয়ে বড় সংখ্যাটি পূরণ করুন
100kb/s" হচ্ছে "সংখ্যা,100000,GT" (কিলো হল 1'000 এবং b/s হল আমরা যা পরিমাপ করি!) "z"
উভয় ক্ষেত্রেই অংশটি "সংখ্যা" এবং "y" অংশটি হয় "UNKN" অজানা বা "100000" এর জন্য
100kb/s এর জন্য।

দুটি CDEF এক্সপ্রেশন হবে:

CDEF:ফলাফল=সংখ্যা,100000,GT,UNKN,সংখ্যা,IF
CDEF:ফলাফল=সংখ্যা,100000,GT,100000,সংখ্যা,IF

উদাহরণ: কাজ on a কিছু সময় বিঘত
আপনি যদি এমন একটি গ্রাফ চান যা কয়েক সপ্তাহ বিস্তৃত হয় তবে শুধুমাত্র কিছু রাউটারের ডেটা দেখতে চান
এক সপ্তাহের জন্য, আপনাকে বাকি সময় ফ্রেমের "লুকান" করতে হবে। এটা কখন হবে আমাকে জিজ্ঞাসা করবেন না
দরকারী হবে, এটি এখানে শুধু উদাহরণের জন্য :)

আমাদের একটি শুরুর তারিখ এবং একটি শেষ তারিখের সাথে টাইম স্ট্যাম্পের তুলনা করতে হবে। তুলনা করা হয় না
কঠিন:

সময়, শুরুর সময়, জিই
টাইম,এন্ডটাইম,LE

CDEF-এর এই দুটি অংশ মিথ্যার জন্য 0 বা সত্যের জন্য 1 উৎপন্ন করে। আমরা এখন যদি পরীক্ষা করতে পারেন
তারা উভয়ই 0 (বা 1) কয়েকটি IF স্টেটমেন্ট ব্যবহার করে কিন্তু, যেমন ওয়াতারু সাতোহ উল্লেখ করেছেন, আমরা করতে পারি
লজিক্যাল AND এবং লজিক্যাল OR হিসাবে "*" বা "+" ফাংশন ব্যবহার করুন।

"*"-এর জন্য ফলাফল হবে শূন্য (মিথ্যা) যদি দুটি অপারেটরের যেকোনো একটি শূন্য হয়। জন্য
"+", ফলাফল শুধুমাত্র মিথ্যা (0) হবে যখন দুটি মিথ্যা (0) অপারেটর যোগ করা হবে।
সতর্কতা: *0 এর সমান নয় এমন যেকোনো* সংখ্যা "সত্য" বলে বিবেচিত হবে। এর মানে হল যে, জন্য
উদাহরণ, "-1,1,+" (যা "সত্য বা সত্য" হওয়া উচিত) মিথ্যা হয়ে যাবে... অন্য কথায়,
"+" ব্যবহার করুন শুধুমাত্র যদি আপনি নিশ্চিতভাবে জানেন যে আপনার কাছে শুধুমাত্র ধনাত্মক সংখ্যা (বা শূন্য) আছে।

আসুন সম্পূর্ণ CDEF কম্পাইল করি:

DEF:ds0=router1.rrd:AVERAGE
CDEF:ds0modified=TIME,begintime,GT,TIME, endtime,LE,*,ds0,UNKN,IF

উভয় তুলনাই সত্য হলে এটি ds0 এর মান প্রদান করবে। আপনি এটা করতে পারেন
অন্য উপায় কাছাকাছি:

DEF:ds0=router1.rrd:AVERAGE
CDEF:ds0modified=TIME,begintime,LT,TIME, endtime,GT,+,UNKN,ds0,IF

তুলনাটি সত্য হলে এটি একটি অজানা ফেরত দেবে।

উদাহরণ: আপনি সন্দেহভাজন থেকে আছে সমস্যা এবং প্রয়োজন থেকে দেখ অজানা ডেটা।
ধরুন আপনি বেশ কয়েকটি টার্মিনাল সার্ভারে সক্রিয় ব্যবহারকারীর সংখ্যা যোগ করেছেন। যদি তাদের একজন
একটি উত্তর দেয় না (বা একটি ভুল একটি) আপনি ডাটাবেসে "NaN" পান ("একটি নয়
সংখ্যা") এবং NaN অজানা হিসাবে মূল্যায়ন করা হয়।

এই ক্ষেত্রে, আপনি এটি সম্পর্কে সতর্ক হতে চান এবং অবশিষ্ট মানের সমষ্টি হল
তোমার কাছে কোন মূল্য নেই।

এটা এরকম কিছু হবে:

DEF:users1=location1.rrd:onlineTS1:LAST
DEF:users2=location1.rrd:onlineTS2:LAST
DEF:users3=location2.rrd:onlineTS1:LAST
DEF:users4=location2.rrd:onlineTS2:LAST
CDEF:allusers=users1,users2,users3,users4,+,+,+

আপনি যদি এখন ইলাউজারদের প্লট করেন, তাহলে Users1..users4-এর একজনের মধ্যে অজানা ডেটা একটি ফাঁক হিসাবে দেখাবে
আপনার গ্রাফ। আপনি একটি উজ্জ্বল লাল রেখা দেখাতে এটি পরিবর্তন করতে চান, একটি ফাঁক নয়।

একটি অতিরিক্ত CDEF সংজ্ঞায়িত করুন যা অজানা যদি সব ঠিক থাকে এবং যদি অজানা থাকে তবে অসীম
মান:

CDEF:ভুল ডেটা=অ্যালুজার,UN,INF,UNKN,IF

"অ্যালুজারস,ইউএন" সত্য বা মিথ্যা মূল্যায়ন করবে, এটি "IF" এর (x) অংশ
ফাংশন এবং এটি পরীক্ষা করে যে allusers অজানা কিনা। "IF" ফাংশনের (y) অংশটি সেট করা আছে
"INF" এ (যার অর্থ অসীম) এবং ফাংশনের (z) অংশটি "UNKN" প্রদান করে।

যুক্তি হল: যদি (অনুগ্রহকারী == অজানা) তাহলে INF ফেরত দিন অন্যথায় UNKN ফেরত দিন।

আপনি এখন উজ্জ্বল লাল রঙে এই "ভুল ডেটা" প্রদর্শন করতে AREA ব্যবহার করতে পারেন৷ যদি এটি অজানা হয় (কারণ
allusers পরিচিত হয়) তাহলে লাল AREA দেখাবে না। যদি মান INF হয় (কারণ allusers
অজানা) তাহলে সেই নির্দিষ্ট সময়ে গ্রাফে লাল AREA পূরণ করা হবে।

AREA:allusers#0000FF:সম্মিলিত ব্যবহারকারীর সংখ্যা
এলাকা:ভুল ডেটা#FF0000:অজানা ডেটা

একই উদাহরণ দরকারী সঙ্গে স্ট্যাক করা তথ্য:
আপনি যদি আগের উদাহরণে স্ট্যাক ব্যবহার করেন (যেমন আমি করব) তাহলে আপনি মানগুলি যোগ করবেন না।
অতএব, চারটি মানের মধ্যে কোন সম্পর্ক নেই এবং আপনি একটিও পাবেন না
পরীক্ষার মান। ধরুন ব্যবহারকারীরা এক সময়ে অজানা হবেন: user3 প্লট করা হয়েছে,
user2 ইউজার 1 এর উপরে স্ট্যাক করা হয়েছে, user3 অজানা এবং তাই কিছুই হয় না,
user4 ব্যবহারকারীদের উপরে স্ট্যাক করা হয়2। যাইহোক অতিরিক্ত CDEF যোগ করুন এবং ওভারলে করতে ব্যবহার করুন
"স্বাভাবিক" গ্রাফ:

DEF:users1=location1.rrd:onlineTS1:LAST
DEF:users2=location1.rrd:onlineTS2:LAST
DEF:users3=location2.rrd:onlineTS1:LAST
DEF:users4=location2.rrd:onlineTS2:LAST
CDEF:allusers=users1,users2,users3,users4,+,+,+
CDEF:ভুল ডেটা=অ্যালুজার,UN,INF,UNKN,IF
AREA:users1#0000FF:ts1 এ ব্যবহারকারীরা
STACK:users2#00FF00:ts2 এ ব্যবহারকারীরা
STACK:users3#00FFFF:ts3 এ ব্যবহারকারীরা
STACK:users4#FFFF00:ts4 এ ব্যবহারকারীরা
এলাকা:ভুল ডেটা#FF0000:অজানা ডেটা

ব্যবহারকারী1..ব্যবহারকারী 4-এর একটিতে অজানা ডেটা থাকলে, "ভুল ডেটা" AREA আঁকা হবে এবং
কারণ এটি X-অক্ষ থেকে শুরু হয় এবং অসীম উচ্চতা রয়েছে এটি কার্যকরভাবে ওভাররাইট করবে
স্তূপ করা অংশ।

আপনি চাইলে দুটি CDEF লাইনকে একত্রিত করতে পারেন (আমরা "অ্যালুজার" ব্যবহার করি না)। কিন্তু
দুটি CDEFS লেখার জন্য ভাল কারণ আছে:

· এটি স্ক্রিপ্টের পঠনযোগ্যতা উন্নত করে।

· মোট ব্যবহারকারীর সংখ্যা প্রদর্শন করতে এটি GPRINT এর ভিতরে ব্যবহার করা যেতে পারে।

আপনি যদি সেগুলিকে একত্রিত করতে বেছে নেন, তাহলে আপনি দ্বিতীয় CDEF-এ "অনুগ্রহকারী" এর সাথে প্রতিস্থাপন করতে পারেন
প্রথম লাইন থেকে সমান চিহ্নের পরে অংশ:

CDEF:wrongdata=users1,users2,users3,users4,+,+,+,UN,INF,UNKN,IF

যদি আপনি তা করেন, আপনি এই পরবর্তী GPRINT ব্যবহার করতে পারবেন না:

মন্তব্য: "মোট ব্যবহারকারীদের দেখা হয়েছে"
GPRINT:allusers:MAX:"সর্বোচ্চ: %6.0lf"
GPRINT:allusers:MIN:"সর্বনিম্ন: %6.0lf"
GPRINT:allusers:AVERAGE:"গড়: %6.0lf"
GPRINT:allusers:LAST:"বর্তমান: %6.0lf\n"

সার্জারির উদাহরণ থেকে দ্য ডিআরআর চিত্রলেখ ম্যানুয়াল পৃষ্ঠা


ডিগ্রী তাপমাপক যন্ত্র বনাম ডিগ্রী তাপমান যন্ত্রবিশেষ
সেলসিয়াসকে ফারেনহাইটে রূপান্তর করতে F=9/5*C+32 সূত্রটি ব্যবহার করুন

rrdtool গ্রাফ demo.png --title="ডেমো গ্রাফ" \
DEF:cel=demo.rrd:exhaust:AVERAGE \
CDEF: far=9,5,/,cel,*,32,+ \
LINE2:cel#00a000:"D. সেলসিয়াস" \
LINE2: far#ff0000:"D. ফারেনহাইট\c"

এই উদাহরণটি ডাটাবেস "demo.rrd" থেকে "এক্সজস্ট" নামক ডিএস পায় এবং মানগুলি রাখে
পরিবর্তনশীল "cel"। ব্যবহৃত CDEF নিম্নরূপ মূল্যায়ন করা হয়:

CDEF:দূর=9,5,/,cel,*,32,+
1. ধাক্কা 9, ধাক্কা 5
2. পুশ ফাংশন "বিভক্ত" এবং এটি প্রক্রিয়া
স্ট্যাকে এখন 9/5 রয়েছে
3. পুশ ভেরিয়েবল "সেল"
4. পুশ ফাংশন "গুণ" এবং এটি প্রক্রিয়া
স্ট্যাকে এখন 9/5*cel রয়েছে
5. ধাক্কা 32
6. পুশ ফাংশন "প্লাস" এবং এটি প্রক্রিয়া করুন
স্ট্যাকের মধ্যে এখন ফারেনহাইট তাপমাত্রা রয়েছে

পরিবর্তন অজানা মধ্যে শূন্য
rrdtool গ্রাফ demo.png --title="ডেমো গ্রাফ" \
DEF:idat1=interface1.rrd:ds0:AVERAGE \
DEF:idat2=interface2.rrd:ds0:AVERAGE \
DEF:odat1=interface1.rrd:ds1:AVERAGE \
DEF:odat2=interface2.rrd:ds1:AVERAGE \
CDEF:agginput=idat1,UN,0,idat1,IF,idat2,UN,0,idat2,IF,+,8,* \
CDEF:aggoutput=odat1,UN,0,odat1,IF,odat2,UN,0,odat2,IF,+,8,* \
এলাকা:agginput#00cc00:ইনপুট সমষ্টি \
LINE1:aggoutput#0000FF:আউটপুট সমষ্টি

এই দুটি CDEF বিভিন্ন ফাংশন থেকে নির্মিত হয়. কি দেখার সময় এটি তাদের বিভক্ত করতে সাহায্য করে
তারা করে. প্রথম CDEF দিয়ে শুরু করে আমরা পাব:

idat1, UN --> a
0 --> খ
idat1 --> গ
যদি (ক) তারপর (খ) অন্য (গ)

ফলাফল তাই "0" যদি এটি সত্য হয় যে "idat1" সমান "UN"। না হলে আসল
"idat1" এর মান স্ট্যাকের উপর আবার রাখা হয়। এই উত্তরটিকে "d" বলা যাক। প্রক্রিয়া হল
স্ট্যাকের পরবর্তী পাঁচটি আইটেমের জন্য পুনরাবৃত্তি করা হয়, এটি একইভাবে করা হয় এবং উত্তর ফিরিয়ে দেবে
"জ"। ফলস্বরূপ স্ট্যাকটি তাই "d,h"। অভিব্যক্তি সরলীকৃত করা হয়েছে
"d,h,+,8,*" এবং এখন দেখা সহজ হবে যে আমরা "d" এবং "h" যোগ করি এবং গুণ করি
আট সঙ্গে ফলাফল.

শেষ ফলাফল হল যে আমরা "idat1" এবং "idat2" যোগ করেছি এবং প্রক্রিয়ায় আমরা কার্যকরভাবে
অজানা মান উপেক্ষা। ফলাফলটি আট দ্বারা গুণিত হয়, সম্ভবত বাইট/সেকে রূপান্তরিত হয়
বিট/সে.

অনন্ত ডেমো
rrdtool গ্রাফ example.png --title="INF ডেমো" \
DEF:val1=some.rrd:ds0:AVERAGE \
DEF:val2=some.rrd:ds1:AVERAGE \
DEF:val3=some.rrd:ds2:AVERAGE \
DEF:val4=other.rrd:ds0:AVERAGE \
CDEF:background=val4,POP,TIME,7200,%,3600,LE,INF,UNKN,IF \
CDEF:wipeout=val1,val2,val3,val4,+,+,+,UN,INF,UNKN,IF \
এলাকা:ব্যাকগ্রাউন্ড#F0F0F0 \
এলাকা:val1#0000FF:Value1 \
স্ট্যাক:val2#00C000:Value2 \
স্ট্যাক:val3#FFFF00:Value3 \
স্ট্যাক:val4#FFC000:Value4 \
এলাকা:whipeout#FF0000:অজানা

এই ডেমো অসীম ব্যবহার করার দুটি উপায় প্রদর্শন করে। এর মধ্যে কী ঘটে তা দেখা একটু কঠিন
"পটভূমি" CDEF.

"val4,POP,TIME,7200,%,3600,LE,INF,UNKN,IF"

এই RPN ইনপুট হিসাবে "val4" এর মান নেয় এবং তারপর অবিলম্বে এটি স্ট্যাক থেকে সরিয়ে দেয়
"POP" ব্যবহার করে। স্ট্যাক এখন খালি কিন্তু একটি পার্শ্ব প্রতিক্রিয়া হিসাবে আমরা এখন জানি যে এই সময়
নমুনা নেওয়া হয়েছে। এই সময় "TIME" ফাংশন দ্বারা স্ট্যাকের উপর রাখা হয়.

"TIME,7200,%" সময় এবং 7'200 (যা দুই ঘন্টা) এর মডুলো নেয়। ফলে
স্ট্যাকের মান 0 থেকে 7199 এর মধ্যে একটি সংখ্যা হবে।

যারা মডিউল ফাংশন জানেন না তাদের জন্য: এটি একটি পূর্ণসংখ্যার পরে অবশিষ্টাংশ
বিভাগ 16 কে 3 দিয়ে ভাগ করলে উত্তর হবে 5 আর বাকিটা হবে 1। তাই,
"16,3,%" 1 প্রদান করে।

স্ট্যাকে আমাদের "TIME,7200,%" এর ফলাফল রয়েছে, আসুন এটিকে "a" কল করুন। আরপিএন এর শুরু
"a,3600,LE" হয়ে গেছে এবং এটি পরীক্ষা করে যে "a" "3600" এর চেয়ে কম বা সমান কিনা। এটা সত্য
সময়ের অর্ধেক আমাদের এখন বাকি আরপিএন প্রক্রিয়া করতে হবে এবং এটি একটি সহজ
"IF" ফাংশন যা সময়ের উপর নির্ভর করে "INF" বা "UNKN" প্রদান করে। এই ফেরত দেওয়া হয়
পরিবর্তনশীল "পটভূমিতে"।

এই নথিতে দ্বিতীয় CDEF এর আগে আলোচনা করা হয়েছে তাই আমরা এখানে তা করব না।

এখন আপনি বিভিন্ন স্তর আঁকতে পারেন। পটভূমি দিয়ে শুরু করুন যা হয় অজানা
(দেখার মতো কিছুই নেই) বা অসীম (গ্রাফের পুরো ইতিবাচক অংশটি পূর্ণ হয়ে যায়)।

এরপরে আপনি এই পটভূমির উপরে ডেটা আঁকবেন, এটি পটভূমিকে ওভারলে করবে। ধরুন
val1..val4 এর একটি অজানা হবে, সেক্ষেত্রে আপনি স্তুপীকৃত মাত্র তিনটি বার দিয়ে শেষ করবেন
একে অপরের উপরে। আপনি এটি দেখতে চান না কারণ তথ্য শুধুমাত্র বৈধ যখন সব
চারটি ভেরিয়েবল বৈধ। এই কারণে আপনি দ্বিতীয় CDEF ব্যবহার করেন, এটি ডেটা ওভারলে করবে
একটি AREA সহ তাই ডেটা আর দেখা যাবে না।

যদি আপনার ডেটাতেও নেতিবাচক মান থাকতে পারে তবে আপনাকে এর বাকি অর্ধেক ওভাররাইট করতে হবে
আপনার গ্রাফ। এটি তুলনামূলকভাবে সহজ উপায়ে করা যেতে পারে: আপনার যা প্রয়োজন তা হল "ওয়াইপআউট"
পরিবর্তনশীল এবং এর আগে একটি নেতিবাচক চিহ্ন রাখুন: "CDEF:wipeout2=wipeout,-1,*"

ফিল্টারিং উপাত্ত
আপনি কিছু জটিল ডেটা ফিল্টারিং করতে পারেন:

মিডিয়ান ফিল্টার: ফিল্টার শট নয়েজ

DEF:var=database.rrd:ট্রাফিক:AVERAGE
CDEF:prev1=PREV(var)
CDEF:prev2=PREV(আগের1)
CDEF:মিডিয়ান=var,prev1,prev2,3,SORT,POP,EXC,POP
LINE3:মিডিয়ান#000077:ফিল্টার করা হয়েছে
LINE1:prev2#007700:'raw data'

ডেরিভেট:

DEF:var=database.rrd:ট্রাফিক:AVERAGE
CDEF:prev1=PREV(var)
CDEF:সময়=var,POP,TIME
CDEF:prevtime=PREV(সময়)
CDEF:derivate=var,prev1,-,time,prevtime,-,/
LINE3: derivate#000077: derivate
LINE1:var#007700:'raw data'

বাইরে of ধারনা উন্নত এখন


এই দস্তাবেজটি আমার দ্বারা বা অন্যদের দ্বারা জিজ্ঞাসা করা প্রশ্ন থেকে তৈরি করা হয়েছে৷
RRDtool মেইলিং তালিকা। আপনি যদি এটিতে ত্রুটি খুঁজে পান বা আপনার সমস্যা থাকলে দয়া করে আমাকে জানান
এটা বোঝা আপনি যদি মনে করেন একটি যোগ করা উচিত, আমাকে মেইল ​​করুন:
<[ইমেল সুরক্ষিত]>

মনে রাখবেন: না প্রতিক্রিয়া সমান না। পরিবর্তন!

onworks.net পরিষেবা ব্যবহার করে অনলাইনে cdeftutorial ব্যবহার করুন


বিনামূল্যে সার্ভার এবং ওয়ার্কস্টেশন

উইন্ডোজ এবং লিনাক্স অ্যাপ ডাউনলোড করুন

লিনাক্স কমান্ডগুলি

Ad