Upgrade to Pro — share decks privately, control downloads, hide ads and more …

より快適なエラーログ監視を目指して

Avatar for Tech Leverages Tech Leverages
September 10, 2024

 より快適なエラーログ監視を目指して

2024/09/11 New Relic User Group Vol.11 ただのLT大会『より快適なエラーログ監視を目指して』

レバテックでの Datadog から NewRelic への移行に際し、エラーログの Slack 通知を改善し、より快適なエラーログ監視を実現したお話です。

Avatar for Tech Leverages

Tech Leverages

September 10, 2024
Tweet

More Decks by Tech Leverages

Other Decks in Technology

Transcript

  1. | © 2024 Levtech Co., Ltd. 2 レバテック開発部 ITSプロダクト開発グループ / 契約請求ドメインチーム

    内藤 翔太 SHOTA NAITO ・2023年4月  レバレジーズ株式会社に新卒入社 ・2023年11月 レバテック開発部に異動 ・直近は、システムのリプレースに取り組んでいます!
  2. | © Leverages inc. 5 事業ポートフォリオ レバテックについて エージェント プログラミング スクール コンテンツ

    メディア プラット フォーム ダイレクト リクルーティング ITエンジニア・クリエイターの フリーランス・転職・就職・教育の すべてを備える採用プラットフォーム エージェントを中心に、求人媒体、 プログラミング教育まで IT専門職のキャリアを厚くサポート。
  3. | © Leverages inc. 9 エラーログの Slack 通知 前提: 構造化ログ 単純なテキストではなく、JSON

    形式などで構造化されたログのこと [2024-03-09 15:24:10] ERROR: Failed to process payment (order_id: 67890) 弊社での具体的な取り組みは、Speaker Deck を参照してください! ❌ { "timestamp": "2024-03-09T15:24:10Z", "level": "ERROR", "message": "Failed to process payment", "order_id": 67890, } ⭕
  4. | © Leverages inc. 10 エラーログの Slack 通知 Enriched data で設定してみた

    アラート通知にNRQLクエリの結果 を追加することで、アラート通知に 追加のコンテキストを提供できる。 New Relic Alertのニッチ?な機能 Enrichmentでアラート対応を自動化する件 より拝借
  5. | © Leverages inc. 11 エラーログの Slack 通知 Enriched data で設定してみた

    Enriched data は画像で提供されるので • 過去のアラートをテキスト検索できない... • エラーログの内容が画像幅の関係で 少し見づらく、Slack ですぐ確認できない...
  6. | © Leverages inc. 13 アラート説明欄に多くの情報を記載するようにした • ログ記録時刻 • ロガー名 •

    エラーメッセージ • トレースID • ログへのURL • etc…     ⬇ • 過去のアラートをテキスト検索できる • エラーログの内容を Slack で確認できる そこで
  7. | © Leverages inc. 15 • Entity-related tags ◦ {{tag.aws.awsRegion}} ◦

    {{tags.label.owning_team}} • Facet clause tags(以下、公式ドキュメントより引用) ◦ For NRQL conditions only. NRQL 条件で FACET 句が使用されている場合は、 tags フォーマッ トを使用して、説明テンプレートでそれらの値を使用できます。 たとえば、NRQL クエリに FACET hostName, cluster 含まれている場合は、次のように使用できます。 アラートの説明欄には “Tag attributes” を埋め込める どうやるのか? 参考: 公式ドキュメント
  8. | © Leverages inc. 16 SELECT count(*) AS 'ERROR' FROM Log

    FACET time, entity.name, err.message, name, trace.id, entity.guid WHERE upper(level) = 'ERROR' AND `entity.guid` = '{ENTITY_GUID}' TIMESERIES AUTO アラートの説明欄に記載したい属性名を FACET に指定する どうやるのか? 属性名はエラーログから確認できる
  9. | © Leverages inc. 17 `{{tag.entity.name}}` で ERROR が発生しました。 Time: `{{tag.time}}`

    Logger Name: `{{tag.name}}` Error Type: `{{tag.err.type}}` Error Message: `{{tag.err.message}}` Stack Trace: ```{{tag.err.stack}}``` Request ID: `{{tag.requestId}}` Trace ID: `{{tag.trace.id}}` Logs: https://one.newrelic.com/nr1-core/logger/logs-summary/{{tag.entity.guid}}?account={{tag.accountId}}&duration=259200000 FACET に指定した属性を説明欄(Description Template)から参照する どうやるのか? Description template で参照できる
  10. | © Leverages inc. 19 アラート説明欄に多くの情報を記載するようにした • ログ記録時刻 • ロガー名 •

    エラーメッセージ • トレースID • ログへのURL • etc…     ⬇ • 過去のアラートをテキスト検索できる • エラーログの内容を Slack で確認できる 再掲