কাস্টম মেট্রিক্স দিয়ে গভীর ইনসাইট
অ্যাপসিগন্যাল জেম দিয়ে আপনি ইতিমধ্যে কাস্টম ইন্সট্রুমেন্টেশন ব্যবহার করতে পারতেন অ্যাপ্লিকেশন পারফরম্যান্সের আরও ডিটেইল পেতে। কিন্তু কখনো কখনো আপনি অন্যান্য মেট্রিক্সও ট্র্যাক করতে চান।
আমাদের জেমের 1.0 রিলিজের সাথে, আপনি কাস্টম মেট্রিক্স অ্যাপসিগন্যালে পাঠাতে পারেন। এই মেট্রিক্স আপনাকে আপনার অ্যাপ্লিকেশনের যেকোনো কিছু ট্র্যাক করতে দেয় — নতুন অ্যাকাউন্ট থেকে ডাটাবেস ডিস্ক ইউজেস পর্যন্ত। এগুলো কোড ইন্সট্রুমেন্টেশনের প্রতিস্থাপন নয়, বরং আপনার কোডের নির্দিষ্ট ডেটা আরও অ্যাক্সেসযোগ্য এবং সময়ের সাথে সাথে মেজারেবল করার একটি অতিরিক্ত পথ।
আমরা তিন ধরনের মেট্রিক্স অফার করি:
| Gauge | একটি সংখ্যা যা ওভাররাইট করা যায়, ইউজার কাউন্ট যেন ডেটা সংরক্ষণের জন্য উপযোগী। |
|---|---|
| Counter | একটি সংখ্যা যা দেওয়া মান দিয়ে ইনক্রিমেন্ট করা যায়, কোনো প্রসেস কতবার চলে সেটি কাউন্ট করার জন্য উপযোগী। |
| Distribution | সংখ্যার একটি সংগ্রহ যার জন্য আমরা গড় এবং কাউন্ট সংরক্ষণ করি। গড় সেল أمাউন্ট ট্র্যাক করার জন্য উপযোগী। |
অ্যাপসিগন্যাল জেমে এই তিনটি মেট্রিক্স টাইপের জন্য মেথড আছে। আপনি এই মেথডগুলো ব্যবহার করে ডেটা আমাদের সিস্টেমে পাঠাতে পারেন।
Gauge
Gauge সেই মেট্রিক্সের জন্য আদর্শ যেগুলো বাড়তে ও কমতে পারে। আমরা অ্যাপসিগন্যালে এক্টিভ অ্যাকাউন্টের সংখ্যা গ্রাফ করতে gauge ব্যবহার করি।
count = Account.active.count Appsignal.set_gauge('account_count', count)Counter
নাম অনুযায়ী, কাউন্টার কোনো কিছু কতবার হয়েছে সেটি ট্র্যাক করার চমৎকার উপায়। আমাদের ওয়ার্কার একটি পেলোড প্রসেস করে যাতে একাধিক ডেটা পয়েন্ট থাকে। এর মানে জবের কাউন্ট অ্যাকুরেটলি ডেটা প্রসেস করার পরিমাণ রিপ্রেজেন্ট করে না। কাউন্টারের সাথে আমরা প্রতিটি ডেটা পয়েন্ট প্রসেস করার সময় ইনক্রিমেন্ট করি।
minute.metrics.each do |metric| Appsignal.increment_counter('metric_count', metric.length) endDistribution
আমরা ডিস্ট্রিবিউশন ব্যবহার করি একটি কোড টুকরো এক্সিকিউট হতে গড় সময় কত লাগে সেটি মেজার করতে। উদাহরণস্বরূপ একটি জব একাধিক ম্যাপ/রিডিউস জব চালাতে পারে এবং যদিও আমরা ইন্সট্রুমেন্টেশন দিয়ে ডিউরেশন ট্র্যাক করি, আমরা তবুও প্রতিটি জবের গড় ডিউরেশন একটি সুন্দর গ্রাফে দেখতে চাই।
Appsignal.add_distribution_value('mapreduce_duration', MapReduce::Minutely.new.run.time)মেট্রিক্সকে গ্রাফে রূপান্তর
মেট্রিক্স অ্যাপসিগন্যালে পাঠানো 半截 কথা, ডেটা পাঠানোর পর আমাদের গ্রাফ তৈরি করতে হবে মেট্রিক্স দেখানোর জন্য। আমরা এটা "কাস্টম মেট্রিক্স" পেজের এডিটরে করি।
আমাদের কাস্টম মেট্রিক্স ফিচার আপনাকে একাধিক স্ক্রিনের সাথে গ্রাফ তৈরি করতে দেয়। আপনি YAML ফরম্যাটে স্ক্রিনগুলো এবং সেক্রিনের গ্রাফগুলো ডিফাইন করতে পারেন।
উদাহরণস্বরূপ, একাউন্ট-সম্পর্কিত গ্রাফের একটি স্ক্রিন তৈরি করতে, যেটি অ্যাকাউন্ট সংখ্যা দেখাবে, আপনি নিচের YAML ব্যবহার করতে পারেন:
- title: Account overview graphs: - title: "Number of accounts" kind: gauge format: number fields: - account_countএটি নিচের পেজটি তৈরি করবে:
ফিল্ডের লিস্টের বদলে আপনি একটি রেজেক্সও দিতে পারেন যা এক বা একাধিক মেট্রিক নাম ম্যাচ করে। নিচের উদাহরণে একটি থার্ড পার্টি API-এর প্রতিটি রেসপন্স কোডের জন্য লাইন সহ একটি গ্রাফ রেন্ডার করা হয়েছে।
- title: API Responses graphs: - title: "API response codes" kind: count filter: "api_response_code_[0-9]+" format: numberএইগুলো আপনার অ্যাপসিগন্যালে ট্র্যাক করতে পারেন এমন অনেক উপযোগী মেট্রিক্সের কয়েকটি উদাহরণ মাত্র। কাস্টম মেট্রিক্স সম্পর্কে আরও জানতে আমাদের ডকুমেন্টেশন চেক করুন বা সেটআপে সাহায্য দরকার হলে যোগাযোগ করুন।