17
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ディップAdvent Calendar 2023

Day 15

陰のSREがNewRelicでBotを可視化してみた

Last updated at Posted at 2023-12-14

ディップ株式会社 Advent Calendar 2023の記事です。

はじめに

陰のSREになりたくて日々研鑽している、自称アニヲタSREです。
平素は弊社サービスの開発や運用に従事しております。

昨今、SREチームを持つ組織が多い中、弊社にはインフラ全般を見るチームはありますが、明確にSREチームは存在しておらず各プロジェクトやチームがうまく連携してやってます。

今年を振り返るに私はNewRelicに多く関わってきました。
DatadogからNewRelicへの移行に始まり、データや指標の可視化、開発メンバーへの布教など日々の運用でNewRelicを非常に活用しています。

NewRelicで日々観測していると明らかにBotと思わしき負荷が見られたためBotのアクセス状況を可視化してみました。

結論

作成したクエリ例です(もっと良い書き方があったらご教授ください💦)。
NewRelicのQuery Your Data > Query builderでクエリを実行します。
(NewRelicのLogのmessageにUserAgentが含まれている場合を想定)

「TIMESERIES」を入れているので折れ線グラフとして可視化されます。

SELECT count(*) FROM Log WHERE message NOT RLIKE '.+(robots.txt).+' AND message RLIKE '.+((bot)|(crawl)|(spider)|(krowler)).+' FACET capture(message, r'.+((?P<botname>((test-bot)|(compatible;\s.+;)|(AdsBot[-G]{2}oogle)|([a-z]+bot/[0-9.]+\s)))).+') SINCE 1 day ago WITH TIMEZONE 'Asia/Tokyo' TIMESERIES LIMIT MAX

今回、確認用に用意した環境のBotアクセス状況を見てみます。

img1.png

WAFを入れているとは言え、結構来てますねー。
クエリ内の「LIMIT MAX」を入れることで検出した全てのBotを見ることができますが、省略すると上位件数のものだけになります。

NewRelicの良いところは様々なChart typeが用意されているところです。

上記クエリの「TIMESERIES」を削除してクエリを実行し、Chart typeを「Bar」にするとBot毎の件数をより見やすくできます。

img2.png

これらのChartはクエリ実行画面右下の 「Add to dashboard 」から簡単にダッシュボードに組み込むことができます。

同じダッシュボード画面内にALBリクエストログやサーバ負荷Chartなどと一緒に置いておけば、Botが影響しているのかどうかわかりやすくなるのではないでしょうか。
ダッシュボード画面の右上で日時を設定できるため、同じ時間軸で複数のChartを確認することができるのが良いですよね!

img3.png

さいごに

今後とも陰のSREとして活動していこうと思いますが、
弊社には陰にひそまず大いに活動できる場が沢山あり絶賛エンジニアを募集中です!!
カジュアル面談もありますのでお気軽にご応募ください!!!

17
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?