সি ++ অ্যাপ্লিকেশন পর্যবেক্ষণ করা হচ্ছে


10

আমরা একটি নতুন কেন্দ্রিক পর্যবেক্ষণ সমাধান (জেনোস) বাস্তবায়ন করছি। সার্ভার, নেটওয়ার্কিং এবং জাভা প্রোগ্রামগুলি অন্তর্ভুক্ত করা এসএনএমপি এবং জেএমএক্সের সাথে সোজা।

তবে প্রশ্নটি হ'ল বৃহত্তর, ভিন্ন ভিন্ন (সোলারিস x86, আরএইচইল লিনাক্স, উইন্ডোজ) পরিবেশে কাস্টম সি ++ অ্যাপ্লিকেশনগুলি পর্যবেক্ষণ এবং পরিচালনা করার সেরা অনুশীলনগুলি কী?

আমি যে সম্ভাবনাগুলি দেখছি তা হ'ল:

  1. নেট এসএনএমপি
  • সুবিধাদি
  1. প্রতিটি সার্ভারে একক, কেন্দ্রীয় ডিমন
  2. সুপরিচিত মান
  3. মনিটরিং সমাধানগুলিতে সহজ সংহতকরণ
  4. আমরা ইতিমধ্যে আমাদের সার্ভারগুলিতে নেট এসএনএমপি ডেমন পরিচালনা করি
  • অসুবিধা:
    1. জটিল বাস্তবায়ন (এমআইবি, নেট এসএনএমপি গ্রন্থাগার)
    2. সি ++ বিকাশকারীদের জন্য নতুন প্রযুক্তি চালু করা
  • নিম্নলিখিত rsyslog
    • সুবিধাদি
    1. প্রতিটি সার্ভারে একক, কেন্দ্রীয় ডিমন
    2. সুপরিচিত মান
    3. মনিটরিং সমাধানগুলিতে অজানা সংহতকরণ (আমি জানি তারা পাঠ্যের উপর ভিত্তি করে সতর্কতাগুলি করতে পারে তবে মেমরির ব্যবহার, সারি গভীরতা, থ্রেড ক্ষমতা ইত্যাদির মতো টেলিমেট্রি প্রেরণে এটি কতটা ভাল কাজ করবে)
    4. সহজ বাস্তবায়ন
  • অসুবিধা:
    1. সম্ভব ইন্টিগ্রেশন সমস্যা
    2. সি ++ বিকাশকারীদের জন্য কিছুটা নতুন প্রযুক্তি
    3. সম্ভাব্য পোর্টিংয়ের সমস্যা যদি আমরা মনিটরিং বিক্রেতাদের স্যুইচ করি
    4. সম্ভবত একটি অ্যাডহক যোগাযোগ প্রোটোকল (বা আরএফসি5424 স্ট্রাকচার্ড ডেটা ব্যবহার করে জড়িত; জেনোস কাস্টম জেনপ্যাক কোডিং ব্যতীত এটি সমর্থন করে কিনা আমি জানি না)
  • এম্বেড করা জেএমএক্স (একটি জেভিএম এম্বেড করুন এবং জেএনআই ব্যবহার করুন)
    • সুবিধাদি
    1. জাভা এবং সি ++ উভয়ের জন্য নিয়মিত পরিচালনা ইন্টারফেস
    2. সুপরিচিত মান
    3. মনিটরিং সমাধানগুলিতে সহজ সংহতকরণ
    4. কিছুটা সহজ বাস্তবায়ন (আমরা ইতিমধ্যে অন্যান্য উদ্দেশ্যে এটি আজই করছি)
  • অসুবিধা:
    1. জটিলতা (জেএনআই, নেটিভ সি ++ এবং জাভা এর মধ্যে ক্ষুদ্র স্তর, মূলত দু'বার ম্যানেজমেন্ট কোড লিখতে হবে)
    2. সম্ভাব্য স্থায়িত্ব সমস্যা
    3. যথেষ্ট পরিমাণে মেমরি ব্যবহার করে প্রতিটি প্রক্রিয়ায় একটি জেভিএম প্রয়োজন
    4. জেএমএক্স হ'ল সি ++ বিকাশকারীদের জন্য নতুন প্রযুক্তি
    5. প্রতিটি প্রক্রিয়াটির নিজস্ব জেএমএক্স পোর্ট রয়েছে (আমরা প্রতিটি মেশিনে প্রচুর প্রক্রিয়া চালাই)
  • স্থানীয় জেএমএক্স ডেমন, প্রক্রিয়াগুলি এর সাথে সংযুক্ত হয়
    • সুবিধাদি
    1. প্রতিটি সার্ভারে একক, কেন্দ্রীয় ডিমন
    2. জাভা এবং সি ++ উভয়ের জন্য নিয়মিত পরিচালনা ইন্টারফেস
    3. সুপরিচিত মান
    4. মনিটরিং সমাধানগুলিতে সহজ সংহতকরণ
  • অসুবিধা:
    1. জটিলতা (মূলত ম্যানেজমেন্ট কোডটি দু'বার লিখে)
    2. যেমন একটি ডিমন খুঁজে বা লিখতে প্রয়োজন
    3. জেএমএক্স ডেমন এবং সি ++ প্রক্রিয়াটির মধ্যে একটি প্রোটোকল দরকার
    4. জেএমএক্স হ'ল সি ++ বিকাশকারীদের জন্য নতুন প্রযুক্তি
  • কোডমেশ জুনসি ++ আয়ন
    • সুবিধাদি
    1. জাভা এবং সি ++ উভয়ের জন্য নিয়মিত পরিচালনা ইন্টারফেস
    2. সুপরিচিত মান
    3. মনিটরিং সমাধানগুলিতে সহজ সংহতকরণ
    4. ভাগ করা জেভিএম মোডে চলাকালীন প্রতিটি সার্ভারে একক, কেন্দ্রীয় ডেমন
    5. কিছুটা সহজ বাস্তবায়ন (কোড উত্পন্নকরণের প্রয়োজন)
  • অসুবিধা:
    1. জটিলতা (কোড জেনারেশন, প্রক্সাইড কোড উত্পাদন করতে একটি জিইউআই এবং কয়েকটি রাউন্ড টুইটের প্রয়োজন)
    2. সম্ভব JNI স্থায়িত্ব সমস্যা
    3. যথেষ্ট পরিমাণে মেমরি (এম্বেড মোডে) ব্যবহার করে প্রতিটি প্রক্রিয়াতে একটি জেভিএম প্রয়োজন
    4. সোলারিস x86 (ডিল ব্রেকার) সমর্থন করে না
    5. এমনকি যদি এটি সোলারিস x86 সমর্থন করে তবে সম্ভাব্য সংকলক সামঞ্জস্যতা সমস্যা রয়েছে (আমরা সোলারিসে এসটিএলপোর্ট এবং ফোর্টের একটি বিজোড় সংমিশ্রণটি ব্যবহার করি)
    6. এম্বেড মোডে চলাকালীন প্রতিটি প্রক্রিয়াটির নিজস্ব জেএমএক্স পোর্ট থাকে (আমরা প্রতিটি মেশিনে প্রচুর প্রক্রিয়া চালাই)
    7. সম্ভবত নন-সি ++ প্রক্রিয়াগুলির (?) এর জন্য ভাগ করা জেএমএক্স সার্ভারকে অন্তর্ভুক্ত করে

    আমি কি অনুপস্থিত কিছু যুক্তিসঙ্গতভাবে প্রমিত, সহজ সমাধান আছে?

    অন্য কোন যুক্তিসঙ্গত সমাধান না দেওয়া, এর মধ্যে কোনটি সাধারণত কাস্টম সি ++ প্রোগ্রামের জন্য ব্যবহৃত হয়?

    আমার অন্ত্র অনুভূতি হ'ল নেট এসএনএমপি হ'ল লোকেরা কীভাবে এটি করে তবে সিদ্ধান্ত নেওয়ার আগে আমি অন্যের ইনপুট এবং অভিজ্ঞতা চাই।

    উত্তর:


    1

    আমি জেনোসের সাথে খুব বেশি পরিচিত নই তবে আমি যখন এই ধরণের জিনিসটির জন্য নাগিওগুলি ব্যবহার করতাম তখন আমরা সি / সি ++ প্রক্রিয়াটি একটি সকেটে শুনতে পেতাম এবং একটি কাস্টম নাগিও প্লাগইন লিখতাম যা ডায়াগনস্টিক এবং স্থিতির তথ্য হস্তান্তরিত হত।

    প্রথম পদক্ষেপটি হ'ল আপনার প্রক্রিয়াটি শোনানোর জন্য আপনি যে লাইবটি ব্যবহার করতে চান তা চয়ন করা .. সি ++ সকেট লাইব্রেরির মতো কিছু এর জন্য করবে। সেখানে জটিল কিছু নেই .. কেবল প্রক্রিয়াটি শোনার জন্য করুন।

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

    আরও অনেক পরিশীলিত জিনিস আপনি করতে পারেন তবে ধারণাটি যথেষ্ট সহজ। আপনি আপনার নিজের প্রসেস শোনার কোডটির ছোট্ট লিব লিখতে পারেন যা বস্তুর মধ্যে আবদ্ধ থাকে এবং এটি আপনার কাস্টম সি ++ স্টাফের সাথে মানক পদ্ধতিতে টানতে পারেন যখনই আপনি নিজের এক্সিকিউটেবলগুলি (বা সমস্ত) তৈরি করেন

    আমার বোঝা জেনোস এটিও করতে পারে

    সম্ভবত যেহেতু জেনোসটি অজগর তাই আপনি আপনার শ্রোতার সি ++ এক্সিকিউটেবলের সাথে সংযোগের জন্য টুইস্টেড জাতীয় কিছু ব্যবহার করে এর জন্য আপনার কাস্টম প্লাগইনটি লিখবেন ।


    1

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

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


    1

    আমরা সম্প্রতি আপনার মতো একই প্রক্রিয়াটি অনুসরণ করার সাথে সাথে এটি গ্রহণ করছি: আমরা একটি হালকা ওজনবিহীন, অবরুদ্ধকরণ, মুক্ত উত্স সমাধান খুঁজছিলাম যা সি / সি ++ পরিষেবাগুলির মধ্যে থেকে মেট্রিকের দূরবর্তী পর্যবেক্ষণের অনুমতি দেয় () আমাদের প্রায় ~ 3000 রয়েছে)।

    এসএনএমপি নিকটে এসেছিল তবে উত্স এবং মনিটরিং সিস্টেমের মধ্যে সংহতকরণ একটি ব্যথা এবং আমাদের রিয়েল-টাইম প্রক্রিয়াগুলির জন্য উপযুক্ত নয়।

    শেষ পর্যন্ত, আমরা সিএমএক্স নামে একটি নতুন সমাধান বিকাশ করার সিদ্ধান্ত নিয়েছি যা ভাগ করে নেওয়া মেমরি প্রযুক্তি ব্যবহার করে এবং এটি উন্মুক্ত উত্স তৈরি করেছে made আপনি এখানে এটি চেক আউট করতে পারেন: www.cern.ch/cmx


    0

    আমি জিনিসের সি ++ দিকের সাথে খুব বেশি পরিচিত নই তবে জাভাতে আমরা গ্রাফাইটের সাথে একযোগে কোডা হেল মেট্রিকগুলি ব্যাপকভাবে ব্যবহার করি । উদাহরণস্বরূপ স্থানীয় স্মৃতিতে কোডা হেল প্রতি উদাহরণের ভিত্তিতে মেট্রিকগুলি সঞ্চয় করে তারপরে প্রতি মিনিটে গ্রাফাইট সার্ভারে মেট্রিকগুলি ফ্ল্যাশ করতে ব্যাকগ্রাউন্ড থ্রেড ব্যবহার করে (কনফিগারযোগ্য)। গ্রাফাইটে আমরা দৃষ্টান্ত জুড়ে সামগ্রিক পাশাপাশি ত্রুটিযুক্ত দৃষ্টান্তগুলি সনাক্ত করতে পারি। আপনি যদি গ্রাফাইট ক্লাস্টার বজায় রাখার জটিলতা না চান তবে আপনি হোস্টেডগ্রাফাইট ব্যবহার করতে পারেন ।

    এই সেটআপটির অর্থ মেট্রিক্স সমষ্টি বা রিপোর্টিংয়ের ক্ষেত্রে ব্যর্থতার কোনও একক বিন্দু নয় (সময় ভিত্তিক সমষ্টিগুলি নোডগুলিতে নিজেরাই ঘটে এবং প্রতিবেদনের সমষ্টিটি বিতরণ গ্রাফাইট ক্লাস্টারে ঘটে (বা হোস্টেড গ্রাফাইট)।

    শেষ অবধি , আপনি পর্যবেক্ষণের ডেটার উপরে সতর্কতা প্রদান করতে সেরেন ব্যবহার করতে পারেন ।


    0

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

    লিনাক্সে এটি স্পষ্টতই আরও নমনীয় হয়ে থাকে তবে আমি সবসময় নাগিও স্টাইলের মনিটরের প্রয়োগ দেখেছি, একটি কাস্টম সকেট নাগিওস স্টাইল সার্ভারে ডেটা প্রেরণ করে।

    এগুলি সমস্তই বলেছিল যে আমি এসএমএনপি ব্যবহৃত হয় এমন বেশ কয়েকটি জায়গা দেখেছি এবং সত্যই , আপনি এটি ব্যবহার করবেন না এমন কোনও কারণ আমি দেখতে পাচ্ছি না - বিশেষত যদি আপনি সম্পূর্ণ ভিন্ন ভিন্ন পরিবেশ চালাচ্ছেন।

    আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
    Licensed under cc by-sa 3.0 with attribution required.