Slide 1

Slide 1 text

より快適な エラーログ監視 を目指して レバテック開発部 内藤 翔太

Slide 2

Slide 2 text

| © 2024 Levtech Co., Ltd. 2 レバテック開発部 ITSプロダクト開発グループ / 契約請求ドメインチーム 内藤 翔太 SHOTA NAITO ・2023年4月  レバレジーズ株式会社に新卒入社 ・2023年11月 レバテック開発部に異動 ・直近は、システムのリプレースに取り組んでいます!

Slide 3

Slide 3 text

レバテック について

Slide 4

Slide 4 text

| © Leverages inc. 4 VISIONとMISSION レバテックについて

Slide 5

Slide 5 text

| © Leverages inc. 5 事業ポートフォリオ レバテックについて エージェント プログラミング スクール コンテンツ メディア プラット フォーム ダイレクト リクルーティング ITエンジニア・クリエイターの フリーランス・転職・就職・教育の すべてを備える採用プラットフォーム エージェントを中心に、求人媒体、 プログラミング教育まで IT専門職のキャリアを厚くサポート。

Slide 6

Slide 6 text

当時の状況

Slide 7

Slide 7 text

| © Leverages inc. 7 当時の状況 Datadog から NewRelic への移行 詳細はテックブログを参照してください!

Slide 8

Slide 8 text

エラーログの Slack 通知

Slide 9

Slide 9 text

| © 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, } ⭕

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

| © Leverages inc. 11 エラーログの Slack 通知 Enriched data で設定してみた Enriched data は画像で提供されるので ● 過去のアラートをテキスト検索できない... ● エラーログの内容が画像幅の関係で 少し見づらく、Slack ですぐ確認できない...

Slide 12

Slide 12 text

そこで

Slide 13

Slide 13 text

| © Leverages inc. 13 アラート説明欄に多くの情報を記載するようにした ● ログ記録時刻 ● ロガー名 ● エラーメッセージ ● トレースID ● ログへのURL ● etc…     ⬇ ● 過去のアラートをテキスト検索できる ● エラーログの内容を Slack で確認できる そこで

Slide 14

Slide 14 text

どうやるのか?

Slide 15

Slide 15 text

| © 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” を埋め込める どうやるのか? 参考: 公式ドキュメント

Slide 16

Slide 16 text

| © 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 に指定する どうやるのか? 属性名はエラーログから確認できる

Slide 17

Slide 17 text

| © 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 で参照できる

Slide 18

Slide 18 text

| © Leverages inc. 18 FACET でグルーピングするため、アラート発報条件が変わらないことを確認しましょう Thresholds で “above or equals 1” を使用している場合は問題ないです 注意点 どうやるのか?

Slide 19

Slide 19 text

| © Leverages inc. 19 アラート説明欄に多くの情報を記載するようにした ● ログ記録時刻 ● ロガー名 ● エラーメッセージ ● トレースID ● ログへのURL ● etc…     ⬇ ● 過去のアラートをテキスト検索できる ● エラーログの内容を Slack で確認できる 再掲

Slide 20

Slide 20 text

宣伝

Slide 21

Slide 21 text

開発職向け会社紹介資料 プロダクトや開発組織についてご紹介しています。 https://speakerdeck.com/leverages/levtech-hui-she-shao-jie-zi-liao-enzi niazhi-xiang-ke レバテック開発部テックブログ 日々の開発におけるリアルをお届けしています! https://zenn.dev/p/levtech カジュアル面談フォーム 気軽にご応募ください!いろんなお話しましょう! https://hrmos.co/pages/leverages/jobs/A_c_00071