هر تراکنش تحت رصد

در آویهنگ، به منظور رصد تراکنش ها و فعالیت های هر کاربر و افزایش هرچه بیشتر سطح امنیت در Application و Web Services ، تحلیل داده های مختلف، محاسبه تعداد کاربران استفاده کننده از Application در طول زمان، گزارش گیری های مختلف از هر تراکنش و ... مانیتورینگ های جداگانه در سه لایه انجام می پذیرد که ما در این قسمت، به بررسی و تشریح هر بخش به صورت جداگانه می پردازیم:

لایه Application:

در این لایه لاگ خروجی هر Application و Web Services، توسط Filebeat از Container به Topicهای مجزا در Kafka ارسال می گردد، سپس Logstash این داده ها را از Kafka برداشت نموده و پس ار تجزیه و تحلیل و اعمال فیلترهای مورد نیاز، به Elasticsearch ارسال و سپس به جهت انجام تحلیل های مختلف در Kibana و تهیه نمودار از عملکرد Application و رصد تمامی تراکنش ها، در Grafana قابل استفاده است. همچنین وضعیت سلامت وب سرویس ها نیز توسط ابزار PRTG بصورت مداوم رصد می گردد. لاگ های خروجی هر Application که بصورت JSON می باشد، توسط فرآیند زیر مورد تجزیه و تحلیل و Monitoring قرار می گیرد:

 
 

در آویهنگ، به منظور رصد تراکنش ها و فعالیت های هر کاربر و افزایش هرچه بیشتر سطح امنیت در Application و Web Services ، تحلیل داده های مختلف، محاسبه تعداد کاربران استفاده کننده از Application در طول زمان، گزارش گیری های مختلف از هر تراکنش و ... مانیتورینگ های جداگانه در سه لایه انجام می پذیرد که ما در این قسمت، به بررسی و تشریح هر بخش به صورت جداگانه می پردازیم:

لایه Application:

در این لایه لاگ خروجی هر Application و Web Services، توسط Filebeat از Container به Topicهای مجزا در Kafka ارسال می گردد، سپس Logstash این داده ها را از Kafka برداشت نموده و پس ار تجزیه و تحلیل و اعمال فیلترهای مورد نیاز، به Elasticsearch ارسال و سپس به جهت انجام تحلیل های مختلف در Kibana و تهیه نمودار از عملکرد Application و رصد تمامی تراکنش ها، در Grafana قابل استفاده است. همچنین وضعیت سلامت وب سرویس ها نیز توسط ابزار PRTG بصورت مداوم رصد می گردد. لاگ های خروجی هر Application که بصورت JSON می باشد، توسط فرآیند زیر مورد تجزیه و تحلیل و Monitoring قرار می گیرد:

 
 

Logstash:

Logstash یک سرویس پردازش داده است که لاگ های Application را از منبعی مانند Kafka برداشت نموده و پس از تجزیه و تحلیل و اعمال فیلترهای نوشته شده توسط ادمین سیستم (Pipeline)، این داده ها (Logs) را جهت استفاده برنامه نویسان و سایر سرویس های پردازشی و نگهداری از این داده ها، به یک Database مقصد مانند Elasticsearch (که در ادامه در مورد آن توضیح داده خواهد شد) منتقل می نماید.

 
 

Elasticsearch:

Elasticsearch به عنوان یک Database و موتور جستجو و تجزیه و تحلیل داده (Log) در مقیاس های بسیار بالا می باشد که داده ها را به منظور امکان جستجوی سریع، راحتی استفاده در فیلترگذاری های مختلف جستجو، دسته بندی نتایج جستجو در داده های ذخیره شده در Database، ارتباط دقیق و منظم با سایر سرویس های مدیریت لاگ، مقیاس پذیری بالا و امکان دسته بندی داده ها در Index های مختلف ذخیره سازی می نماید.

Kibana:

Kibana ابزاری تحلیلی بوده و دارای یک Dashboard است که داده های تحلیلی را بنا بر نیازمندی کاربر، بصورت جداول، نمودار ها و سایر شیوه های مختلف، توسط Queryهایی که به Elasticsearch می زند قابل نمایش می کند. یعنی Query را از طریق Elasticsearch API فراخوانی و نهایتا خروجی آن ها را تبدیل به نمودار و یا جدول با فرمت های مختلف می نماید.

Grafana:

Grafana یک ابزار Visualize داده ها می باشد که دارای قابلیت Alert بوده و از Data Sourceهای گوناگونی همچون Elasticsearch پشتیبانی می کند. که توسط Query به Elasticsearch، داده ها را به شکل گراف های خوانا به کاربر نمایش می دهد.

لایه Container :

با توجه به اینکه آویهنگ از زیرساخت Docker بهره می برد و موضوع حداکثر کارایی Containerها به منظور بهترین سطح سرویس دهی به کاربران در این شرکت بسیار حائز اهمیت می باشد، در این لایه، هر Container به صورت دقیق و مداوم با ابزار cAdvisor مانیتور و بررسی می گردد. مواردی چون مصرف منابعی چون CPU ، Memoey ، Disk ، Network و... ، پردازش های در لایه Container، اطلاعات مربوط به راه اندازی Containerها و بسیاری موارد دیگر از طریق این ابزار جهت ارسال به Grafana به  Prometheus منتقل می گردد.

 
 

Continer:

نگهداری برنامه‌ها در محیطی ایزوله و به صورت مستقل، از اهداف سیستم‌های جدید توسعه نرم افزار است. به این ترتیب فعالیت آن‌ها بر روی یکدیگر تاثیری نداشته و کاملا مستقل از هم کار می‌کنند. یکی از راه‌های پیاده کردن این تکنولوژی استفاده از Virtual Machine (VM) است که برنامه‌ها را روی یک سخت افزار اما جدا از هم نگهداری می‌کند. در این حالت Component ها با هم تداخل نداشته و رقابت برای استفاده از منابع سخت افزاری به حداقل می‌رسد.

اما Container چیست؟ Container‌ها می‌توانند جایگزین مناسبی برای VMs باشند. Containerها محیط‌های اجرایی را جدا کرده و هسته سیستم عامل (Kernel) را به اشتراک می‌گذارند. Containerها نسبت به VMs از منابع کمتری استفاده می‌کنند و همچنین خیلی سریع قابلیت اجرا پیدا می‌کنند. هر Container یک نمونه‌ی راه‌اندازی شده از Image خود می‌باشد. با Containerها می‌توان آن عملکرد مد نظر خود از Image و یا Container را ایجاد و از آن استفاده نمود. Containerها را می‌توان ایجاد، پاک و هرگونه تغییری که مد نظر باشد بر روی آن انجام داد.

cAdvisor:

cAdvisor (مخفف Container Advisor) داده های مورد استفاده و عملکرد منابع را از Containerهای در حال اجرا تجزیه و تحلیل نموده و خروجی را به صورت Metrics به Prometheus ارسال می کند.

Prometheus:

یک سیستم Monitoring می باشد که جهت Monitor کردن منابع سیستمی و کارایی سیستم از آن استفاده می شود. هدف اصلی اش آنالیز کردن عملیات و کارایی Container و یا VM و تشخیص و اخطار در مورد خطاهای موجود می باشد. چنین سیستم هایی به ما این امکان را می دهند تا ببینیم در هر زمانی چه اتفاقی روی منابع ما افتاده است.

لایه OS:

در این لایه، تمامی فاکتورهای موجود در OSهای مورد استفاده در سرورها که اغلب Linux و یا Windows Server می باشند، از قبیل مصرف منابع، موارد مربوط به شبکه و کارت های شبکه فیزیکی و یا مجازی، میزان Uptime و همچنین سلامت در عملکرد سیستم عامل، از طریق پروتکل SNMP به ابزاری به نام PRTG ارسال می گردد و توسط Admin، Monitor می گردد.