メルカリでのNorikraの活用、 Mackerelを添えて

44,957 views

Published on

slide for norikra meetup #2

Published in: Technology
0 Comments
34 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
44,957
On SlideShare
0
From Embeds
0
Number of Embeds
35,825
Actions
Shares
0
Downloads
16
Comments
0
Likes
34
Embeds 0
No embeds

No notes for slide

メルカリでのNorikraの活用、 Mackerelを添えて

  1. 1. メルカリでのNorikraの活用、 Mackerelを添えて Norikra Meetup#2 Masahiro Nagano @kazeburo
  2. 2. Me • 長野雅広(Masahiro Nagano) • @kazeburo • Mercari, Inc. • Operations Engineer, Site Reliability
  3. 3. 主要KPI ダウンロード数 購入金額 出品数 1500万DL 月間数十億円 1日数十万品以上
  4. 4. 急成長を支える運用
  5. 5. Plan Do SeeCheck 如何に速く、スムーズにサイクルを回すか
  6. 6. ソリューション...?
  7. 7. 柔軟なメトリクス収集 カスタマイズ可能なグラフ 表現力高い通知 煩雑な手順 設定項目の多さ 専門的知識、慣れが必要
  8. 8. DevOps 時代
  9. 9. Dev と Ops の情報共有が大事
  10. 10. Metrics を Dev と共有する
  11. 11. App BatchJob Web Ops Dev Treasure Data kibana bigquery ssh接続 できない
  12. 12. Graph と Alert も共有 Dev が欲しいデータを自ら設定可能に(したい)
  13. 13. mackerel • はてな提供の「サーバ管理ツール as a Service」 • 様々な時系列データを可視化・監視 • 各種ツールとの連携
  14. 14. Mackerel仕組み Server Agent Server Agent Client Server Host Metrics Service Metrics Store Metrics, Graphing, Monitoring
  15. 15. App BatchJob Web SQL投入 自動でグラフ 作成 Alert設定 Norikra + Mackerel
  16. 16. まじ、楽
  17. 17. NorikraとMackerelで 監視しておくよ SQLをぽちっと. 新しい機能リリース するんでログ みておいて欲しい グラフ出たので ここに閾値を設定して おきましょうか そうですね∼ slackへ通知きた 確認します∼ OpsDev 1 2 3 4 * フィクションです
  18. 18. メルカリでの Norikraの構成
  19. 19. App BatchJob Web 中継サーバ cepサーバ
  20. 20. Norikraの構成 • access_logとerror_logが対象 • サンプリング等は行わず全件いれてる • メモリマシマシ • jolokiaを有効にしてKuradoでJVMの monitoring -javaagent:/path/to/jolokia-jvm-1.2.3- agent.jar=port=8778,host=0.0.0.0,discoveryEnabled=false
  21. 21. Norikraが落ちる問題 • GCの途中?で落ちているっぽい • 正直わからない Current thread (0x00007fb88c030800): GCTaskThread [stack: 0x00007fb891419000,0x00007fb89151a000] [id=29597] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000018
  22. 22. 設定とクエリ
  23. 23. fluent-plugin-norikra fluent-plugin-mackerel Basic count()
  24. 24. <source> type norikra norikra localhost:8571 <fetch> method sweep target metrics tag query_name tag_prefix norikra.query interval 3s </fetch> </source> <match norikra.query.*> type mackerel api_key xxxxxxxxxxxxxxxxxxxxxxxx= service xxxxxxx metrics_name ${[2]}.${out_key} out_key_pattern .+ retry_limit 1 </match> Group指定
  25. 25. query_name: api_http_status SELECT COUNT(1, status like "5%") AS count_5xx, COUNT(1, status like "4%") AS count_4xx, COUNT(1, status like "3%") AS count_3xx, COUNT(1, status like "2%") AS count_2xx FROM mercari_access_log.win:time_batch(1 min)
  26. 26. query_name: api_req_from_xxxx SELECT COUNT(1) AS hit FROM mercari_access_log.win:time_batch(1 min) WHERE ua LIKE '%monitoring_user_agent%' このUAからの アクセスがない場合、 アラート発砲
  27. 27. norikra-udf-percentile fluent-plugin-flatten-hash Percentile
  28. 28. query_name: api_response_time SELECT avg(ptime) AS ptime_avg, percentiles(ptime, {90,95,98,99}) AS percentile FROM mercari_access_log.win:time_length_batch(1 min,50000) { "ptime_avg":34147.96952, "percentile":{ "90":xxxxx, "95":xxxxx, "98":xxxxx, "99":xxxxx } } このままだと mackerelに送れない
  29. 29. <source> type norikra norikra localhost:8571 <fetch> tag query_name tag_prefix norikra.query .... </fetch> </source> <filter norikra.query.*> type flatten_hash separator _ </filter> <match norikra.query.*> type mackerel .... metrics_name ${[2]}.${out_key} out_key_pattern .+ </match> { "ptime_avg":34147.96952, "percentile":{ "90": xxxxxx, "95": xxxxxx, "98": xxxxxx, "99": xxxxxx } } { "ptime_avg":34147.96952, "percentile_90": xxxxxx, "percentile_95": xxxxxx, "percentile_98": xxxxxx, "percentile_99": xxxxxx }
  30. 30. query_name: api_response_time SELECT avg(ptime) AS ptime_avg, percentiles(ptime, {90,95,98,99}) AS percentile FROM mercari_access_log.win:time_length_batch(1 min,50000) 95%でAlert設定
  31. 31. まとめ
  32. 32. Norikra + Mackerel 便利! tagomoris ++ はてな ++
  33. 33. 以上でス
  34. 34. 人材募集中です。よろしくお願いします

×