Sumologic でログを記録しました。ログ JSON には、要求の応答時間が含まれています。「response_time」という名前の JSON キーにします。各リクエストは、JSON キー「request_id」で示される一意の ID によって識別されます。および JSON キー「url」で示される URL。次の条件に基づいて、スラック チャネルでアラートを出す必要があります。
1) 10 分間のウィンドウで、100 件のリクエストがあり、リクエストの 5% 以上の応答時間が 100 ミリ秒を超えている場合、それらすべてのリクエストの「url」、「request_id」、および「response_time」を警告します。2) リクエストの 5 % 以下の応答時間が 100 ミリ秒を超える場合、アラートはまったく発生しません。このようなクエリを書きました。
_sourceName=<my_source_name>
| json field=_raw "response_time" as response_time
| json field=_raw "request_id" as request_id
| if (num(response_time) > 100, 1, 0) as higher
| if (num(response_time) <= 100, 1, 0) as lower
| count as total_requests, sum(higher) as
response_time_greater_than_100, sum(lower) as
response_time_less_than_100
| (response_time_greater_than_100/total_requests) as failure_ratio
| where (failure_ratio > 0.05)
上記のクエリでは、5% 以上のリクエストで response_time が 100 ミリ秒を超えている場合に、すべてのリクエストが表示されます。しかし、応答時間に関係なく、すべてのリクエストを受け取ります。それ以外の場合、結果は返されません。
この結果に加えて、「response_time」> 100 ミリ秒のリクエストで上記のクエリをさらにフィルタリングしたいと考えています。結果があるたびに、2 つのタブが表示されます。1 つは「メッセージ」用で、もう 1 つは「集合体」用です。「メッセージ」タブのフィールドを Slack チャネルに送信したいと考えています。これを達成する方法は?