اگر با اگریگیشن های مانگو یا الستیک آشنا باشید کارهای جالبی میشه انجام داد. مثلا اگر از Elasticsearch APM برای مانیتورینگ api استفاده میکنید و از سنتری به هر دلیلی استفاده نمیکنید و هزینه لیسانس اکس پک هم زیاده، برای گرفتن آگاهی از error های APM که به ایندکس مخصوص خودش در الستیک میره، میتونید یا یک اسکریپت مستقیم به الستیک http get ریکوست بزنید و نتایج رو بررسی کنید و با زبیکس یا اسلک ارور ها رو ببینید. کاری که اینجا توضیح دادم به طور خلاصه این هست که هر نیم ساعت با دستور curl به ایندکس های apm error در الستیک کویری میزنیم و هر بار سرچ میکنیم که در نیم ساعت گذشته آیا اروری ثبت شده و اگر شده باشه، لینکش رو استخراج میکنیم و به اسلک میفرستیم که با کلیک روی اون لینک مستقیم به صفحه اون ارور میریم. APM میتونه ارورهای کاستم یا unhandled exception ها رو با کمک agent بگیره و در پنل کیبانا نمایش بده. برای استفاده دوستان اسکریپتم رو در گیت هابم گذاشتم. لب مطلب این کویری هست:
curl -s -XGET "http://127.0.0.1:9200/apm-*-error*/_search" -H 'Content-Type: application/json' -d '{ "query" : { "bool" : { "must": [ { "range": { "@timestamp": { "gte": "now-30m", "lt": "now" } } } ] } } }'
Output sample(truncated):
{"took":8,"timed_out":false,"_shards":{"total":47,"successful":47,"skipped":0,"failed":0},"hits":{"total":{"value":16,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"apm-7.2.1-error-2020.02.16","_type":"_doc","_id":"_L3_THABUP6M4b493oYn","_score":1.0,"_source":{"@timestamp":"2020-02-16T07:56:40.828Z",...
query: bool : must :
با استفاده از این فرمت یک کویری AND ساختیم که البته یک سر نداره ولی بدون این هم نتونستم جوابی بگیرم و با استفاده از بازه now منهای زمان بین کویری ها که میتونه به m, h, d باشه میتونید بازه رو به دلخواه تنظیم کنید.
اسکریپت کامل هم در گیت هاب هست و بعد از گرفتن api key از اسلک و استفاده در این اسکریپت میتونید نتایج رو در اسلک ببینید. این اسکریپت تست شده و البته گاهی لینک بر اساس ورژن apm کمی تغییر کرده.
در پست های بعدی یک راهکار هست که میتونیم اگر طول مدت انجام یک رست بیشتر شد الرت بگیرم پس تا پست بعدی...