۱. قبل از شروع
همانطور که در بخش « اشکالزدایی آزمایشگاه کد خانه هوشمند» پوشش دادهایم، ما معیارها و گزارشهایی را برای پروژههای خانه هوشمند شما منتشر میکنیم. معیارها به شما کمک میکنند تا مشخص کنید که عملکرد خانه هوشمند شما در کجا مشکل دارد و گزارشها هنگام بررسی عمیق برای حل این مشکلات مفید هستند.

علاوه بر معیارهایی که ما در اختیار پروژه شما قرار میدهیم، میتوانید معیارهای خودتان را نیز با استفاده از معیارهای مبتنی بر گزارش از Google Cloud ایجاد کنید. این به شما امکان میدهد الگوهای خاصی را در گزارشهای خود رصد کنید و به طور موثر مشکلات کیفی را اشکالزدایی کنید.
پیشنیازها
آنچه یاد خواهید گرفت
- نحوه نوشتن کوئریهای مؤثر برای فیلتر کردن گزارشهای خطای خانه هوشمند
- نحوه ایجاد معیارهای مبتنی بر لاگ برای تولید معیارها از کوئریهای شما
- نحوه ایجاد نمودارها و داشبوردها از معیارهای مبتنی بر گزارش برای نظارت
۲. کار با لاگها
همانطور که به طور خلاصه در بخش اشکالزدایی آزمایشگاه کد خانه هوشمند توضیح دادیم، کار با لاگها کلید موفقیت پروژه شماست. ابزارهای بسیار خوبی در Google Cloud برای نظارت و تجزیه و تحلیل لاگهای شما موجود است. برای دسترسی به تمام لاگهای موجود در پروژه خود، میتوانید از Logs Explorer استفاده کنید.
دسترسی به لاگها
اولین قدم برای دسترسی به گزارشهایتان، ورود به Google Cloud و انتخاب پروژهتان است. با استفاده از منوی کناری، با رفتن به Operations > Logging > Logs Explorer، به Logs Explorer بروید. پس از باز کردن ابزار، باید این نمای را ببینید:

Logs Explorer از دو بخش اصلی تشکیل شده است: بخشی برای نوشتن کوئریهای شما در بالا ( Query builder ) و بخشی برای نمایش نتایج منطبق ( Query results ).
بسیاری از اجزای مختلف در گوگل به طور پیشفرض لاگهایی را در پروژه شما مینویسند. برای یافتن و کار با لاگهای حاصل از ادغام خانه هوشمند خود، باید کوئریهای سفارشی بنویسید.
نوشتن کوئریها
گزارشها (لاگها) تحت یک نوع منبع در پروژهها منتشر میشوند. هر نوع منبع، پلتفرم متفاوتی را در گوگل نشان میدهد. گزارشهایی که از پلتفرم خانه هوشمند میآیند، تحت نوع منبع assistant_action_project در پروژه شما در دسترس هستند.
همچنین، به همه لاگها در زمان ایجاد، یک سطح شدت اختصاص داده میشود. در لاگهای خانه هوشمند، ما از سطح ERROR برای لاگهایی که نشاندهنده خطاها و استثنائات هستند و از سطح DEBUG برای سایر موارد استفاده میکنیم.
در مثال زیر، یک کوئری برای فیلتر کردن لاگهایی که فقط از پلتفرم ما میآیند و نشاندهنده خطا هستند، به صورت زیر خواهیم نوشت:

پس از اتمام نوشتن پرس و جو، برای شروع پرس و جو روی دکمه اجرای پرس و جو کلیک کنید. این کار باید خطاهایی را که از ادغام خانه هوشمند شما ناشی میشود، نمایش دهد:

همانطور که میبینید، تعدادی خطا داریم که در زمانهای مختلف در طول یک ساعت گذشته رخ دادهاند. هر خط نشان دهنده یک گزارش خطا است. میتوانید روی گزارشهای جداگانه کلیک کنید و فیلدهای تو در تو را گسترش دهید تا اطلاعات موجود در آنها را ببینید.
استفاده از هیستوگرام
Logs Explorer یک ویژگی مفید Histogram برای مشاهده توزیع زمانی لاگهایی که با درخواست شما مطابقت دارند، ارائه میدهد. برای فعال کردن Histogram، از دکمههای گوشه بالا سمت راست روی PAGE LAYOUT کلیک کنید و Histogram را برای فعال کردن این ویژگی تیک بزنید.

پس از فعالسازی، توزیعی از گزارشهای مطابق با درخواست خود را مشاهده خواهید کرد:

همانطور که در تصویر بالا مشاهده میکنید، چندین خطا داریم که به صورت پراکنده در طول یک ساعت گذشته خوشهبندی شدهاند. به نظر میرسد که آنها حدود ساعتهای ۱:۴۵، ۲:۰۰ و ۲:۱۵ بعد از ظهر سه خوشه تشکیل میدهند. هیستوگرام میتواند به شما کمک کند الگوهایی را که فقط با بررسی مقادیر مهر زمانی قابل تشخیص نیستند، تشخیص دهید.
در حال حاضر، کوئریای که ما استفاده میکنیم بین لاگها تفاوتی قائل نمیشود و تمام خطاهای ناشی از یکپارچهسازی خانه هوشمند ما را نشان میدهد. مواقع زیادی وجود دارد که ممکن است بخواهید بین خطاها تمایز قائل شوید، به عنوان مثال برای ردیابی الگوهای خطای ناشی از انواع یا ویژگیهای خاص دستگاه. برای انجام این کار، نگاهی به نوشتن کوئریهای پیشرفته خواهیم انداخت.
پرسوجوهای پیشرفته
وقتی یک گزارش رویداد خانه هوشمند را بررسی میکنید، خواهید دید که فیلدهای مختلفی وجود دارد که میتوانید از آنها اطلاعات جمعآوری کنید:

action
-
trait: ویژگی دستگاه هدف توسط کاربر (برای مثال، روشن/خاموش، شروع/توقف، روشنایی) -
actionType: حالت دانهبندی دقیق ویژگی (برای مثال، روشن، خاموش، مکث، توقف، از سرگیری)
device
-
deviceType: نوع دستگاه مورد نظر توسط کاربر (برای مثال، چراغ، کلید، ماشین لباسشویی)
status
-
isSuccess: مشخص میکند که آیا نتیجهی عمل موفقیتآمیز تلقی میشود یا خیر (درست / نادرست) -
statusType: کد وضعیت برای نتیجهی اکشن (در صورت عدم موفقیت، کد خطا را نشان میدهد) -
externalDebugString: رشته اشکالزدایی برای عمل (خطا را با جزئیات شرح میدهد)
سایر زمینهها
همچنین فیلدهای اضافی وجود دارد که میتوانید از آنها اطلاعات استخراج کنید:
-
requestId: یک شناسه منحصر به فرد مرتبط با درخواست (تولید شده توسط گوگل) -
executionType: مسیری که توسط درخواست استفاده شده است (نشان میدهد که آیا Cloud است یا Local) -
latencyMsec: میزان تأخیر مشاهدهشده برای درخواست در سرورهای گوگل (برحسب میلیثانیه) -
locale: درخواست از کدام جفت زبان/منطقه ارسال میشود (برای مثال، en-US، fr-FR)
با استفاده از فیلد trait از لیست بالا، کوئری خود را طوری اصلاح میکنیم که فقط خطاهایی که از OnOff trait میآیند را به صورت زیر در بر بگیرد:
resource.type="assistant_action_project" AND severity=ERROR AND jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"
پس از اجرای کوئری بهروزرسانیشده، سیستم لاگها را شناسایی کرده و نتیجهی مربوطه را به ما نشان میدهد:

تاکنون تمام کوئریهای خود را به صورت دستی انجام دادهایم. این یک روش عالی برای بررسی سریع وضعیت خطاها است، اما برای نظارت بر تغییرات الگوهای خطا در طول زمان چندان مناسب نیست. برای خودکارسازی این جریان و جمعآوری دادهها از دورههای زمانی طولانیتر، معیارهای مبتنی بر لاگ ایجاد خواهیم کرد.
۳. معیارهای مبتنی بر لاگ
برای شمارش تعداد لاگهایی که با کوئریهای شما در طول زمان مطابقت دارند، میتوانید از معیارهای مبتنی بر لاگ استفاده کنید. این به شما امکان میدهد الگوها را در لاگهای خود مشاهده کنید و بینش خوبی در مورد مشکلات اساسی ارائه دهید.
ایجاد یک معیار مبتنی بر لاگ
برای ایجاد یک معیار مبتنی بر لاگ، به Operations > Logging > Log-based Metrics بروید. این کار لیستی از معیارهای مبتنی بر لاگ را که از قبل در پروژه شما موجود است، به شما نشان میدهد. پس از کلیک بر روی دکمه CREATE METRIC ، صفحه ایجاد معیار مبتنی بر لاگ به شما نمایش داده میشود:

دو نوع معیار اصلی وجود دارد: یک معیار شمارنده تعداد لاگهایی را که با پرسوجوی شما مطابقت دارند، شمارش میکند. یک معیار توزیع ، توزیع اساسی را پیگیری میکند و امکان عملیات آماری مانند میانگین، میانه و صدک ۹۵ را فراهم میکند.
با اسکرول کردن به پایین، یک بخش فیلتر خواهید دید که میتوانید در آن عبارت مورد نظر خود را تایپ کنید.

ما کوئری خود را از بخش قبلی در قسمت متن فیلتر ساخت (Build filter) قرار خواهیم داد.
resource.type="assistant_action_project" AND severity=ERROR AND jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"
همچنین میتوانید روی دکمهی PREVIEW LOGS کلیک کنید تا نمای سریعی از گزارشهای قبلی مطابق با فیلتر خود را ببینید. پس از اتمام کار، میتوانید روی دکمهی CREATE METRIC کلیک کنید و به بخش بعدی بروید.
مشاهده دادههای متریک مبتنی بر لاگ
اکنون که معیار مبتنی بر گزارش ما ایجاد شده است، در بخش معیارهای تعریفشده توسط کاربر از صفحه معیارهای مبتنی بر گزارش در دسترس خواهد بود.

از منوی مربوط به معیار مبتنی بر لاگ (۳ نقطه)، گزینه View in Metrics Explorer را انتخاب کنید تا دادههای جمعآوریشده در معیار مبتنی بر لاگ را مشاهده کنید:

به محض اینکه خطای جدیدی داشته باشیم، توسط معیار مبتنی بر لاگ ما ثبت شده و در پنجره نمودار در Metrics Explorer نمایش داده میشود.
نظارت از طریق داشبوردهای سفارشی
زمانی که مشاهده کردیم معیار جدید مبتنی بر لاگ ما طبق انتظار عمل میکند، زمان آن رسیده است که این نمای نمودار را در یک داشبورد سفارشی ذخیره کنیم. برای این کار، روی دکمه ذخیره نمودار در گوشه سمت راست بالای Metrics Explorer کلیک کنید. با این کار، پنجرهای برای نامگذاری نمودار و انتخاب داشبوردی که میخواهید در آن ذخیره کنید، باز میشود:

وقتی نمودار را در داشبورد ذخیره کردیم، میتوانیم از آنجا به راحتی به آن دسترسی داشته باشیم. برای دسترسی به لیست داشبوردهای موجود در پروژه خود، به Operations > Monitoring > Dashboards بروید.

ما نمودار خود را در داشبوردی به نام "Codelab Dashboard" ذخیره کردهایم. با باز کردن آن، نمای زیر نمایش داده میشود:

همانطور که میبینید نموداری که نشاندهندهی معیار مبتنی بر لاگ است، به همراه دادههای تازه جمعآوریشده در اینجا نمایش داده میشود. لاگهای خانه هوشمند به صورت بلادرنگ در پروژه شما منتشر میشوند. وقتی یک لاگ جدید در دسترس باشد، بلافاصله خواهید دید که توسط معیار مبتنی بر لاگ شما شمارش میشود.
۴. تبریک

تبریک! شما با موفقیت یاد گرفتید که چگونه کوئریهای خود را به معیارهای مبتنی بر لاگ تبدیل کنید و آنها را در داشبوردهای سفارشی برای نظارت ذخیره کنید.
مراحل بعدی
با تکیه بر این Codelab، تمرینهای زیر را امتحان کنید و منابع اضافی را بررسی کنید:
- برای ایجاد معیارهای مبتنی بر گزارش در فیلدهای عددی مانند تأخیر، راهنمای ایجاد معیارهای توزیع را بررسی کنید.
- برای مشاهده برخی از فیلترهای پیچیدهای که میتوانید برای معیارهای مبتنی بر لاگ استفاده کنید، کتابخانه نمونه کوئری ارائه شده توسط گوگل کلود را بررسی کنید.