Upload
masahiro-nagano
View
21.678
Download
3
Embed Size (px)
Citation preview
メルカリでのNorikraの活用、Mackerelを添えて
Norikra Meetup#2Masahiro Nagano @kazeburo
Me
• 長野雅広(Masahiro Nagano)
• @kazeburo
• Mercari, Inc.
• Operations Engineer, Site Reliability
主要KPI
ダウンロード数
購入金額
出品数
1500万DL
月間数十億円
1日数十万品以上
急成長を支える運用
⤵⤵⤵⤵ Plan Do
SeeCheck
如何に速く、スムーズにサイクルを回すか
ソリューション...?
柔軟なメトリクス収集カスタマイズ可能なグラフ表現力高い通知
煩雑な手順設定項目の多さ
専門的知識、慣れが必要
DevOps 時代
Dev と Ops の情報共有が大事
Metrics を Dev と共有する
App
BatchJob
Web
Ops Dev
Treasure Data
kibana
bigquery
ssh接続できない
Graph と Alert も共有Dev が欲しいデータを自ら設定可能に(したい)
mackerel
• はてな提供の「サーバ管理ツール as a Service」
• 様々な時系列データを可視化・監視• 各種ツールとの連携
Mackerel仕組みServer
Agent
ServerAgent
Client
Server
Host Metrics Service Metrics
Store Metrics, Graphing, Monitoring
App
BatchJob
Web
SQL投入
自動でグラフ作成
Alert設定
Norikra + Mackerel
まじ、楽
NorikraとMackerelで監視しておくよ
SQLをぽちっと.
新しい機能リリースするんでログ
みておいて欲しい
グラフ出たのでここに閾値を設定しておきましょうか
そうですね~ slackへ通知きた確認します~
OpsDev 1 23 4
* フィクションです
メルカリでのNorikraの構成
App
BatchJob
Web
中継サーバcepサーバ
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
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
設定とクエリ
!uent-plugin-norikra!uent-plugin-mackerel
Basic count()
<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指定
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)
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からのアクセスがない場合、アラート発砲
norikra-udf-percentile!uent-plugin-!atten-hash
Percentile
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に送れない
<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}
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設定
まとめ
Norikra + Mackerel 便利!tagomoris ++はてな ++
以上でス
人材募集中です。よろしくお願いします