メルカリでのnorikraの活用、 mackerelを添えて

39
メルカリでのNorikraの活用、 Mackerelを添えて Norikra Meetup#2 Masahiro Nagano @kazeburo

Upload: masahiro-nagano

Post on 05-Aug-2015

21.678 views

Category:

Technology


3 download

TRANSCRIPT

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

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

Norikra Meetup#2Masahiro Nagano @kazeburo

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

Me

• 長野雅広(Masahiro Nagano)

• @kazeburo

• Mercari, Inc.

• Operations Engineer, Site Reliability

Page 3: メルカリでのNorikraの活用、 Mackerelを添えて
Page 4: メルカリでのNorikraの活用、 Mackerelを添えて
Page 5: メルカリでのNorikraの活用、 Mackerelを添えて

主要KPI

ダウンロード数

購入金額

出品数

1500万DL

月間数十億円

1日数十万品以上

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

急成長を支える運用

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

⤵⤵⤵⤵ Plan Do

SeeCheck

如何に速く、スムーズにサイクルを回すか

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

ソリューション...?

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

柔軟なメトリクス収集カスタマイズ可能なグラフ表現力高い通知

煩雑な手順設定項目の多さ

専門的知識、慣れが必要

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

DevOps 時代

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

Dev と Ops の情報共有が大事

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

Metrics を Dev と共有する

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

App

BatchJob

Web

Ops Dev

Treasure Data

kibana

bigquery

ssh接続できない

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

Graph と Alert も共有Dev が欲しいデータを自ら設定可能に(したい)

Page 15: メルカリでのNorikraの活用、 Mackerelを添えて
Page 16: メルカリでのNorikraの活用、 Mackerelを添えて
Page 17: メルカリでのNorikraの活用、 Mackerelを添えて

mackerel

• はてな提供の「サーバ管理ツール as a Service」

• 様々な時系列データを可視化・監視• 各種ツールとの連携

Page 18: メルカリでのNorikraの活用、 Mackerelを添えて
Page 19: メルカリでのNorikraの活用、 Mackerelを添えて

Mackerel仕組みServer

Agent

ServerAgent

Client

Server

Host Metrics Service Metrics

Store Metrics, Graphing, Monitoring

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

App

BatchJob

Web

SQL投入

自動でグラフ作成

Alert設定

Norikra + Mackerel

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

まじ、楽

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

NorikraとMackerelで監視しておくよ

SQLをぽちっと.

新しい機能リリースするんでログ

みておいて欲しい

グラフ出たのでここに閾値を設定しておきましょうか

そうですね~ slackへ通知きた確認します~

OpsDev 1 23 4

* フィクションです

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

メルカリでのNorikraの構成

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

App

BatchJob

Web

中継サーバcepサーバ

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

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

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

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

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

設定とクエリ

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

!uent-plugin-norikra!uent-plugin-mackerel

Basic count()

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

<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指定

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

query_name: api_http_statusSELECT 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_2xxFROM mercari_access_log.win:time_batch(1 min)

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

query_name: api_req_from_xxxxSELECT COUNT(1) AS hitFROM mercari_access_log.win:time_batch(1 min)WHERE ua LIKE '%monitoring_user_agent%'

このUAからのアクセスがない場合、アラート発砲

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

norikra-udf-percentile!uent-plugin-!atten-hash

Percentile

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

query_name: api_response_timeSELECT avg(ptime) AS ptime_avg, percentiles(ptime, {90,95,98,99}) AS percentileFROM mercari_access_log.win:time_length_batch(1 min,50000)

{ "ptime_avg":34147.96952, "percentile":{ "90":xxxxx, "95":xxxxx, "98":xxxxx, "99":xxxxx }}

このままだとmackerelに送れない

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

<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}

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

query_name: api_response_timeSELECT avg(ptime) AS ptime_avg, percentiles(ptime, {90,95,98,99}) AS percentileFROM mercari_access_log.win:time_length_batch(1 min,50000)

95%でAlert設定

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

まとめ

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

Norikra + Mackerel 便利!tagomoris ++はてな ++

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

以上でス

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

人材募集中です。よろしくお願いします