কম্পিউটার

StatsD এবং AppSignal এর স্বতন্ত্র এজেন্ট সহ যেকোন সিস্টেম নিরীক্ষণ করা

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

Node.js-এর জন্য AppSignal APM, এবং Ruby APM এবং Elixir APM স্বয়ংক্রিয়ভাবে আপনার অ্যাপকে ইন্সট্রুমেন্ট করে। কিন্তু AppSignal ডিফল্টরূপে এই স্যাটেলাইট প্রক্রিয়াগুলি দেখে না। সর্বত্র মনিটরিং প্রসারিত করতে এবং একটি একক অ্যাপে আপনার সমস্ত ডেটা রাখতে, আপনি AppSignal-এর স্বতন্ত্র এজেন্ট ইনস্টল করতে পারেন৷

AppSignal এর স্বতন্ত্র এজেন্ট

স্বতন্ত্র এজেন্ট একই সফ্টওয়্যারের উপর ভিত্তি করে তৈরি করা হয় যার সাহায্যে আমরা সাধারণত রুবি, এলিক্সির বা জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনের উপকরণ তৈরি করি। এই সফ্টওয়্যারটি স্বতন্ত্র মোডেও চলতে পারে৷

স্বতন্ত্র এজেন্ট নিরীক্ষণ করতে ব্যবহার করা যেতে পারে:

  • অবকাঠামো :মেশিন যেগুলি আমাদের সিস্টেমের অংশ কিন্তু অ্যাপ্লিকেশন কোড চালায় না৷
  • ব্যাকগ্রাউন্ড জব :যেমন নিবিড় ক্রন কাজ বা দীর্ঘ-চলমান ডেটা-প্রসেসিং স্ক্রিপ্ট। যদি এই ব্যাকগ্রাউন্ড কাজগুলি একটি সমর্থিত ভাষায় লেখা হয় (রুবি, এলিক্সির, বা Node.js) তাহলে আপনি স্ট্যান্ডার্ড ইন্টিগ্রেশন ব্যবহার করতে পারেন৷
  • আরো ভাষা :বাক্সের বাইরে সমর্থিত ভাষা ছাড়া অন্য ভাষায় লেখা প্রোগ্রাম।

উদাহরণস্বরূপ, স্বতন্ত্র এজেন্টের সাথে, আমরা পাইথনে লেখা একটি মেশিন লার্নিং মডেল, যন্ত্র ব্যাকআপ স্ক্রিপ্ট, কাফকা ব্রোকারদের মনিটর করতে বা আমাদের ওয়েব খামারগুলিতে হোস্ট মেট্রিক্স সংগ্রহ করতে পারি। আপনার প্রধান অ্যাপ্লিকেশনগুলির জন্য ইতিমধ্যে আপনার কাছে থাকা মেট্রিকগুলিকে পরিপূরক করতে আপনি AppSignal-এ এই সমস্ত তথ্য দেখতে পারেন৷

এটি কিভাবে কাজ করে

এজেন্ট একটি deb বা rpm প্যাকেজ হিসাবে পাঠানো হয় এবং কোন ভাষা নির্ভরতা নেই। এটি যেকোন ডেবিয়ান/উবুন্টু বা রেড হ্যাট-ভিত্তিক সিস্টেমে চলে। বিস্তারিত ইনস্টলেশন নির্দেশাবলীর জন্য, এজেন্ট ডকুমেন্টেশন চেক করুন।

একবার ইনস্টল হয়ে গেলে, এজেন্টটি কয়েক মিনিটের মধ্যে কনফিগার করা হয় এবং একটি ডেমন হিসাবে চিরতরে চলতে থাকে, নীরবে আপনার পরিকাঠামো পর্যবেক্ষণ করে। আরও কি, এজেন্ট একটি স্ট্যাটসডি সার্ভার অন্তর্ভুক্ত করে যা আপনার অ্যাপসিগন্যাল ড্যাশবোর্ডে লগ ইন করলে যে কোনো কাস্টম ডেটা রিলে করে।

StatsD কি?

স্ট্যাটসডি হল নির্বিচারে ডেটা সংগ্রহ এবং একত্রিত করার জন্য একটি মান। এটি মেট্রিক এবং কর্মক্ষমতা তথ্য লগিং উপর ফোকাস. এটি UDP সংযোগগুলির উপর একটি হালকা টেক্সট প্রোটোকল ব্যবহার করে যার আপনার মেশিনে একটি ছোট পদচিহ্ন রয়েছে৷

একটি স্ট্যাটাসডি বার্তা এইরকম দেখায়:

KEY:VALUE|TYPE

যেখানে KEY যে কোনো নির্বিচারে স্ট্রিং, এবং VALUE একটি সংখ্যা। টাইপ মান সংজ্ঞায়িত করে কিভাবে সংখ্যাটি প্রক্রিয়া করা হয়।

আমরা তিন ধরনের মেট্রিক্স সমর্থন করি:

  • c :এটি একটি কাউন্টার যে প্রতিটি সময় এটি বলা হয় বৃদ্ধি. উদাহরণস্বরূপ, active_users:1|c active_users-এ 1 যোগ করে পাল্টা।
  • g :একটি গেজ একটি সাংখ্যিক মান নেয় এবং আপডেট না হওয়া পর্যন্ত এটি বজায় রাখে। এটি সময়ের সাথে সাথে পরিবর্তনশীল মানগুলি রেকর্ড করার জন্য দরকারী, যেমন থ্রুপুট, সক্রিয় ব্যবহারকারীর সংখ্যা বা একটি সারিতে মুলতুবি থাকা কাজের সংখ্যা৷
  • t :দোকান সময় মান এই ধরনের ট্র্যাকিং সময়কাল জন্য আদর্শ. AppSignal সমস্ত লগ করা সময়ের জন্য মানে, গণনা এবং শতকরা হিসাব করে।

অন্যান্য অসমর্থিত মেট্রিক প্রকারগুলি নীরবে উপেক্ষা করা হবে৷

StatsD-এ ডেটা পাঠানো হচ্ছে

স্বতন্ত্র এজেন্ট পোর্ট 8125-এ UDP প্যাকেটের জন্য শোনে। আমরা netcat ব্যবহার করে কমান্ড লাইন থেকে স্ট্যাটসডি-ফরম্যাটেড স্ট্রিং পাঠাতে পারি:

echo -n "myscript.myevent.counter:1|c" | nc -4u -w0 localhost 8125

যেহেতু আমরা UDP ব্যবহার করছি, তাই আমাদের প্রতিক্রিয়ার জন্য অপেক্ষা করতে হবে না।

Socat এছাড়াও কাজ করে:

echo -n "myscript.myevent.counter:1|c" | socat - udp:localhost:8125

এটি যেকোন ব্যাচ বা ক্রন কাজকে সহজ করে তোলে। উদাহরণস্বরূপ, একটি ব্যাকআপ কাজ কতটা ডেটা তৈরি করেছে তা লগ করতে নিম্নলিখিত লাইনগুলি একটি গেজ ব্যবহার করে:

backup_size=$(du -m /backups | cut -f1)
echo -n "backup.data:$backup_size|g" | nc -4u -w0 localhost 8125

আমরা পূর্ণসংখ্যার মধ্যে সীমাবদ্ধ নই। স্ট্যাটসডি ফ্লোটিং-পয়েন্ট নম্বরগুলির সাথেও কাজ করে:

echo -n "network.latency:0.2|g" | nc -4u -w0 localhost 8125

ট্যাগ ব্যবহার করা

আপনি আপনার মেট্রিক্স ট্যাগ যোগ করতে পারেন. StatsD সার্ভার বার্তার শেষে ঐচ্ছিক ট্যাগ সমর্থন করে:

KEY:VALUE|TYPE|#TAGS

আমরা একই বার্তায় বেশ কয়েকটি ট্যাগ প্রয়োগ করতে পারি এবং পরে ফিল্টার করার জন্য মান নির্ধারণ করতে পারি:

echo -n "backup.data:$backup_size|g|#backups,env:production" | nc -4u -w0 localhost 8125

আমরা কিছুক্ষণের মধ্যে অ্যাপসিগন্যালে ডেটা কীভাবে দেখতে হয় তা শিখব।

ইন্সট্রুমেন্টিং ভাষা

স্ট্যাটসডি সার্ভার যে কোনো ভাষার সাথে সামঞ্জস্যপূর্ণ যেটি UDP প্যাকেট পাঠাতে পারে। আসুন কয়েকটি উদাহরণ দেখি।

পাইথন ডেটা মাইনিং এবং মেশিন লার্নিংয়ের জন্য একটি জনপ্রিয় ভাষা। আমরা বিল্ড-ইন socket ব্যবহার করে পাইথন অ্যাপ্লিকেশনগুলিতে ইন্সট্রুমেন্টেশন যোগ করতে পারি লাইব্রেরি:

import time
 
# measure time taken for function
start = time.process_time()
train_my_model()
training_time = time.process_time() - start
 
# send value to statsd
import socket
 
UDP_IP = "127.0.0.1"
UDP_PORT = 8125
MESSAGE = b"model.training.time:" + bytes(str(training_time), 'utf-8') + b"|t"
 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

আমরা java.net দিয়ে জাভাতে একই রকম ফলাফল পেতে পারি লাইব্রেরি:

byte[] buffer = "mybatch.exception.counter:1|c".getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(
    buffer, buffer.length, address, 8125
);
DatagramSocket datagramSocket = new DatagramSocket();
datagramSocket.send(packet);

পিএইচপি একটি অবিশ্বাস্যভাবে জনপ্রিয় ভাষার আরেকটি উদাহরণ। আমরা socket_sendto দিয়ে UDP প্যাকেট পাঠাতে পারি :

$msg = "mywebsite.active_users:$ACTIVE_USERS|g";
$len = strlen($msg);
 
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 8125);
socket_close($sock);

StatsD ক্লায়েন্ট

এই পর্যন্ত, আমরা প্রতিটি ভাষায় অন্তর্নির্মিত নেটওয়ার্কিং ক্ষমতা ব্যবহার করেছি। কিন্তু আরো আছে। অনেক ভাষা এবং পণ্য তৃতীয় পক্ষের StatsD ক্লায়েন্ট বা অ্যাডঅন অন্তর্ভুক্ত করে। যেকোন স্ট্যাটাসডি-সম্মত ক্লায়েন্টের কাজ করা উচিত, অন্তত সমর্থিত ডেটা প্রকারের জন্য। আপনি স্ট্যাটসডি প্রজেক্ট উইকিতে ক্লায়েন্টদের একটি তালিকা খুঁজে পেতে পারেন।

অ্যাপসিগন্যালে হোস্ট ডেটা দেখা হচ্ছে

হোস্ট মেট্রিক্স ড্যাশবোর্ড আপনার মেশিনের সম্পদের ব্যবহার দেখায়:

AppSignal স্বতন্ত্র এজেন্ট চালানো প্রতিটি মেশিনের জন্য একটি এন্ট্রি যোগ করে।

ড্যাশবোর্ড লোড এবং CPU গড় ডিস্ক, নেটওয়ার্ক, মেমরি এবং অদলবদল ব্যবহার দেখায়:

ড্যাশবোর্ড তৈরি করা হচ্ছে

AppSignal আপনার পাঠানো স্ট্যাটসডি মানের জন্য স্বয়ংক্রিয়ভাবে ড্যাশবোর্ড তৈরি করে না—এর জন্য আপনাকে কাস্টম ড্যাশবোর্ড তৈরি করতে হবে।

প্রথমে, ড্যাশবোর্ড যোগ করুন এ ক্লিক করুন ড্যাশবোর্ড মেনুর অধীনে:

ড্যাশবোর্ডে একটি নাম দিন:

গ্রাফ যোগ করুন ক্লিক করা হচ্ছে বোতামটি গ্রাফ নির্মাতাকে দেখায়:

গ্রাফটিতে একটি নাম দিন এবং মেট্রিক যোগ করুন এ ক্লিক করুন :

মেনু থেকে আপনার পছন্দের মেট্রিকটি বেছে নিন।

ঐচ্ছিকভাবে, ফিল্টার করার জন্য ট্যাগ ব্যবহার করুন:

এরপরে, ওভারভিউতে ফিরে যান ক্লিক করুন . আপনি যে ডেটা উপস্থাপন করতে চান তার জন্য কোনটি সবচেয়ে উপযুক্ত তা খুঁজে বের করতে আপনি বিভিন্ন গ্রাফের ধরন এবং মান একক চেষ্টা করতে চাইতে পারেন।

এলাকা গ্রাফের সাথে টাইমিং ডেটা আরও ভাল দেখায় কারণ গড় এবং শতাংশগুলি আরও স্পষ্টভাবে দেখানো হয়৷

লাইন গ্রাফগুলি কাউন্টার এবং গেজের জন্য দুর্দান্ত কাজ করে৷

একবার আপনি ফলাফলে খুশি হলে, গ্রাফ তৈরি করুন-এ ক্লিক করুন৷ .

মনে রাখবেন যে আপনি যদি Node.js-এর জন্য আপনার পারফরম্যান্স মনিটরিং টুল (APM) হিসাবে অ্যাপসিগন্যাল সেট বা আপনার রুবি (রেলগুলিতে) APM বা Elixir APM হিসাবে সেট করে থাকেন তাহলে আপনি অন্য যেকোনো স্বয়ংক্রিয়ভাবে যন্ত্রযুক্ত বা পরিমাপ করা মেট্রিক্সের জন্য একটি ড্যাশবোর্ড যোগ করতে পারেন।

র্যাপিং আপ

আমরা আপনার মেশিন এবং স্যাটেলাইট কোড দেখার জন্য AppSignal-এর স্বতন্ত্র সার্ভার কীভাবে ব্যবহার করতে হয় তা শিখেছি। এর অন্তর্নির্মিত StatsD সার্ভারের সাহায্যে, আপনি নির্বিচারে পারফরম্যান্স ডেটা রেকর্ড করতে পারেন এবং যে কোনও প্রক্রিয়ার উপকরণ করতে পারেন৷

স্বতন্ত্র এজেন্ট ব্যবহার সম্পর্কে আরও জানতে নিম্নলিখিত লিঙ্কগুলি দেখুন:

  • StatsD রেফারেন্স।
  • কিভাবে কাস্টম মেট্রিক্স পাঠাবেন।
  • AppSignal-এ ড্যাশবোর্ড তৈরি করা।
  • একটি কাফকা ইস্যু স্বতন্ত্র এজেন্টকে চিহ্নিত করা এবং সমাধান করা।

  1. পাইথন প্রোগ্রামের সাথে ডেটা বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন

  2. Defraggler দিয়ে বুট-টাইমে ডিস্ক, ফাইল এবং সিস্টেম ফাইল ডিফ্র্যাগ করুন

  3. Defraggler দিয়ে বুট-টাইমে ডিস্ক, ফাইল এবং সিস্টেম ফাইল ডিফ্র্যাগ করুন

  4. GCE, ক্লাউড স্টোরেজ, এবং PubSub এর সাথে রুবিতে একটি আপটাইম মনিটরিং সিস্টেম তৈরি করুন