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
7
2.4k
SMTPでのOpenTelemetryの可能性を考えてみる
ryuichi1208
May 09, 2024
Tweet
Share
More Decks by ryuichi1208
See All by ryuichi1208
障害対応を楽しむ7つのコツ
ryuichi1208
7
4k
超入門 SRE
ryuichi1208
6
3.3k
SLO Docsのすゝめ
ryuichi1208
6
1.9k
実録_マルチテナント環境でのGmailガイドライン対応
ryuichi1208
9
1.9k
5分でわかるGoの自動計装
ryuichi1208
4
1.4k
入門EOL対応
ryuichi1208
24
11k
Mackerelを触り始めて2年経ったので 作ってきたプラグインを振り返る
ryuichi1208
2
1.6k
SREという働き方
ryuichi1208
0
400
SREのチーム共通言語をGoにした話
ryuichi1208
3
590
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Imperfection Machines: The Place of Print at Facebook
scottboms
261
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.2k
Stop Working from a Prison Cell
hatefulcrawdad
266
20k
How to Ace a Technical Interview
jacobian
273
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
23
2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
128
32k
Fashionably flexible responsive web design (full day workshop)
malarkey
399
65k
Docker and Python
trallard
36
2.8k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.8k
Making Projects Easy
brettharned
110
5.6k
GitHub's CSS Performance
jonrohan
1025
450k
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 ご静聴ありがとうございました