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

Post on 05-Aug-2015

21.678 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

メルカリでの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 ++はてな ++

以上でス

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

top related