この記事はNew Relic Advent Calender 2023の20日目の記事です。
自社でNew Relicの導入が始まり、データベースに関しても利用することになりました。
まだまだ習熟中の身ですが、とても便利なツールで知れば知るほど味が出る感じがとても好きになっています。
そんなNewRelicのおかげで監視について勉強するキッカケができたのでその経緯と現状についてまとめていきます。
NewRelicを活用していきます
弊社ではEC2に積んだPostgreSQL、AWS RDS/Aurora for MySQL or PostgreSQLを利用しています。(オンプレのOracleもありますが今回は触れません)
これまでZabbixを利用してDBの動きを把握・監視していたのをNew Relicで行っていきます。
ZabbixからNewRelicへ
まずはZabbixで見ていた情報と同等の内容がNewRelicで見れるようにしていきます
例えばLoadAverageやCPU使用率など。
NewRelicではNRQLという言語で作成します。
NewRelicでのアラート設定
アラートについてもZabbixで設定していた内容と同じアラートを設定していきます。
以下を参考にプロダクトにあった条件を作成しました。
New Relicを使用してアラート条件を作成する
アラートを設定していて沸いた疑問
なんでこのアラート設定なんだろうか?と疑問に思い始めました。
例えば「LoadAverageに対して仮に50を超えたらアラートする」といったアラートを作成しましたが、なんで50なのかがわからなくて気持ち悪いのでこれを機に調べることにしました。
監視について理解を深める
NewRelicでのチャートの作成・アラートは簡単に設定できるのですが、
それらを見てアラートが出たから原因追求して終わり。では常に対応に追われてしまう。
なので監視について理解を深めてなんでアラートが出てしまうのかの根本原因解決に繋げていこうと考えます。
以下の書籍やググって理解を深めていきました。
入門 監視
単語ごとの説明についてはググってもすぐに出てきますが、
アラートを設定する際に考慮すべきことについてまとめているのはなかなか見つけられなかったです。
その点を書籍でカバーしてくれたりその逆もあったりでした。
例えば、
LoadAverageはCPUに処理してもらう待っているプロセスがいくつあるかの指標。
CPUコアが1つに対して1ロードであれば1つのプロセスが待ち状態である。
CPUコアが16に対して32ロードであれば32個のプロセスが待ち状態である
といった内容は書籍を見るまでは知りませんでした。
とりあえずロードアベレージが高いとマズイぐらいの理解でも障害対応はできてましたから。
ただ、アラートの設定をするとなるとなぜその値でアラートさせるのかといった説明ができないといけません。監視を理解することでこれがクリアできるようになっています。
まとめ
監視は安定した運用をするのには必須で大事なはずですが、個人的に勉強をすることは後回しにしていましたが、今回のNewRelicへ移行をきっかけに監視について理解を深めるきっかけができて改めて監視の重要性を理解することができました。
【おまけ】聞いてみた
生成型AIによる可観測性アシスタント NewRelic Grokを利用してみました。
早速Grokに何ができるのかを聞いてみる。
まだプレビュー段階ではあるものの日本語にも対応してくれているのは嬉しいですね。
NRQLの編集画面でGrokを開くと既存のクエリを元に相談することができます。
他にも既にあるチャートに対して事象の調査もしてくれます!
※調査対象のチャートの数が多すぎるとエラーになります。