سؤال

لدي مجموعة من تطبيقات العميل / الخادم الموجودة التي تعمل حاليا على طول. مرة واحدة في حين، سيريد العميل إضافة نوع من واجهة الويب للوصول إلى جزء من بياناتها. هذه عادة مخصصة، على الرغم من أن البعض "عام"؛ لكن الجميع لديه "مثيلهم" الخاصة بهم في VM الخاصة به.

ما أريده هو منطقة مركزية لالتقاط أي أخطاء وتسجيل أي أخطاء تأتي على أي من هذه VMS.

أنا مستعد لإنشاء قاعدة بيانات جديدة وإعداد خدمة WCF لتمكين كل من WebApps هذه لإنشاء إدخال سجل في قاعدة بيانات My Central IS بالإضافة إلى الحدث المحلي.

هل هذا تصميم سيء؟

تحديث

WebApps موجودة في 2003 / IIS6 و 2008 / IIS7، بنيت في ASP.NET. العديد من الحالات موجودة على زوج من خوادم الويب، ولكن سيتم نشر العديد منها على فردي VMS.

هل كانت مفيدة؟

المحلول

هذا هو بالضبط كيف نفذناها.

لدينا 3 جداول في قاعدة البيانات:

Event Types
------------ 
EventType int 
EventDescription varchar(50)


MonitoredSystems
---------------
SystemID int
SystemName varchar(50)
SystemDescription text


Events
-------
RecordID bigint
EventTime datetime
SystemID int FK
EventText text
EventType int FK
Acknowledged bit

لقد سجلنا أيضا موقعا حيث يمكننا عرض الأحداث. اسمحوا حقل "المعترف به" لإعداد أسماء عرض "مشاكل حرجة غير متصلة" حتى نتمكن من رؤية أي مشاكل جديدة بسرعة، والاعتراف بهم كما قرأناها.

نحن نعلم أن هناك أدوات أخرى هناك يمكن أن تفعل ذلك بالنسبة لنا، لكن لم يكن من السهل دمج كنسخة نازمة المنزل الخاصة بنا، ونحن نستخدمها الآن في كل تطبيق نبنيه. لدينا بعض التخصيصات الأخرى التي لا ذكرها هنا أن الأدوات الأخرى لم تقدم خارج الصندوق.

لذلك أعتقد أن فكرتك على ما يرام. إذا قمت ببناءها بنفسك، يمكنك تخصيصها للعمل بالطريقة التي تريدها. ومع ذلك، أود أن أوصي على الأقل بالنظر إلى أدوات مثل log4net، إلخ.

نصائح أخرى

يجب أن نلقي نظرة على ELMAH (أخطاء تسجيل وحدات ومعالجات) (http://code.google.com/p/elmah/) مع مزيج من مراسل استثناء المدار واحد (http://aspexceptionreporter.codeplex.com/release/projectreleases.aspx؟releaseidid=35343.) والتي عند دمجها، يمكن أن تعطيك تغطية واسعة المؤسسة لخطأ الإبلاغ عن الأخطاء في موقع مركزي.

إذا قمت بتسجيل الدخول بشكل متكرر (تصحيح / معلومات / تحذير)، فتأكد من إجراء استدعاءات RPC بشكل غير متزامن.

أود أن أوصي بنية بيانات أكثر مرونة؛

Events
-------
RecordID bigint
EventTime datetime
EventLevel text 
SystemID text
EventText text
EventType text
Acknowledged bit

EventProperties
-------
RecordID bigint
key text
value text

يسمح EventProperties بتطبيق تسجيل الدخول لتسجيل أي معلومات قد تكون مفيدة، دون الحاجة إلى تحديد هذه الخصائص قبل الزمن. لاحظ أنه لا توجد قيود على النظام، مما يسمح بإضافة أنظمة دون تكوين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top