Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SMTPでのOpenTelemetryの可能性を考えてみる
Search
ryuichi1208
May 09, 2024
9
3.3k
SMTPでのOpenTelemetryの可能性を考えてみる
ryuichi1208
May 09, 2024
Tweet
Share
More Decks by ryuichi1208
See All by ryuichi1208
AI前提のサービス運用について再考する
ryuichi1208
6
1.3k
A Shallow Dive into the World of TCP
ryuichi1208
1
580
入門リトライ
ryuichi1208
19
7.3k
超入門SRE 2025
ryuichi1208
4
1.4k
Goで作って学ぶWebSocket
ryuichi1208
5
3.8k
コード化されていない稼働中のサーバを移設_再構築する技術
ryuichi1208
20
14k
AI前提のサービス運用ってなんだろう?
ryuichi1208
9
1.9k
入門 バックアップ
ryuichi1208
22
10k
効果的なオンコール対応と障害対応
ryuichi1208
9
3.9k
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
187
54k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
RailsConf 2023
tenderlove
30
1.2k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
Building Applications with DynamoDB
mza
96
6.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
Navigating Team Friction
lara
189
15k
Transcript
1 SMTPでのOpenTelemetryの可能性を考えてみる 渡部 ⿓⼀ Pepabo Tech Conference #22 春のSREまつり 2024.05.09
技術部プラットフォームグループ 2021年 中途入社 2 自己紹介 渡部 龍一 Watanabe Ryuichi •
ロール: SRE、メールエンジニア(自称) • SNS: @ryuichi_1208 • 好きなこと: EOL対応、障害対応
メールの仕組みのおさらい 3
4 イントロダクション 届いた! メール送信!
5 送信者 MTA MDA MTA MDA SMTP SMTP MXレコード 問い合わせ
DNSサーバ 宛先:
[email protected]
送信元サーバ 送信先サーバ mail box 受信者
6 これ以外にも複数の登場⼈物がいる
7 SMTPのシーケンス図
割と複雑! 8
9 テストで送ってみたメールが届かないんですが ...
10 どこで落ちてるのか調べるのが⼤変
11 • 送信⽤メールクライアント⾃体がバグっている • アプリケーションのバグ • ウイルス判定されている • リレー設定のミス •
メールサーバのサービスが⽌まっている • IPレピュテーションの低下によって送信先で拒否されている • 送信先のメールサーバで拒否する設定になっている 考えられる原因
メールサービスでも分散トレースしたい! 12
そうだOpenTelemetryだ! 13
trace/log/metricsをどう実装するか 14
15 • アプリケーションでtrace idを発⾏してヘッダーに挿⼊する ◦ traceparentをメールヘッダーに⼊れる • Postfixでは、Milterと呼ばれるAPIが提供されている ◦ 「mail
filter」の略 ▪ Rspamd / clamav-milter ◦ SMTPプロトコル処理の各段階をフックできる ▪ DATAコマンドやMAIL FROMコマンドの各フェーズでトレースの送信ができる ◦ Milterでアトリビュートを⼊れつつtraceを送信 trace
16 • Postfixではメールヘッダーをログに書き出すことができる ◦ /etc/postfix/header_checksあたりに追記 ▪ /^Received:/ PREPEND traceparent: $traceparen
▪ td-agentからlokiなりのOtel Backendに送信して連携 • Milterでログを出⼒して送信する⽅針でも良い ◦ 送信元や送信ステータスを属性として出⼒ log
17 • kumina/postfix_exporterあたりを使⽤ • open-telemetry/opentelemetry-collector-contribにはメール関連のサーバは ない ◦ コントリビューションのチャンス..?? • メールのステータスコード40xとか50xとかとトレースやログに紐づけられたら
便利そう metrics
実装⽅針(現在作業中) 18
19 • Pythonで使えるpymilterを⽤いて実装 ◦ Milterプロトコルを喋れれば実装⾔語⾃体に制限はないが情報が多そうな Pythonを選定 • OtelでPythonはTrace/MetricsはstableだがlogsはExperimental ◦ Postfix
+ fluent-bitの組み合わせで考えてる Milterで実装していく
まとめと今後やりたいこと 20
21 • メールサービスでもトレースやログがあると便利 • PostfixではMilterを⽤いることでSMTPの各処理でフックできるのでトレースを埋め込 みやすい • 「SMTP OpenTelemetry」とか「Postfix OpenTelemetry」でググってもヒット数0な
ので取り組むのは結構⾯⽩そう まとめと今後やりたいこと
22 ご静聴ありがとうございました