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

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

Tech Leverages
September 10, 2024

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

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

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

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 で確認できる 再掲