Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mackerelを触り始めて2年経ったので 作ってきたプラグインを振り返る

ryuichi1208
July 11, 2023
1.4k

Mackerelを触り始めて2年経ったので 作ってきたプラグインを振り返る

ryuichi1208

July 11, 2023
Tweet

Transcript

  1. 1
    Mackerelを触り始めて2年経ったので
    作ってきたプラグインを振り返る
    渡部 龍一/ GMO PEPABO inc.
    2023/07/11 Mackerel Meetup #14 Tokyo

    View full-size slide

  2. 技術部プラットフォームグループ
    2021年 中途入社
    2
    自己紹介
    渡部 龍一 Watanabe Ryuichi
    ● ロール: SRE
    ● 仙台から来ました
    ● Mackerel歴: 2年
    ● 好きな公式プラグイン: mackerel-plugin-gearmand
    ● Twitter : @ryuichi_1208

    View full-size slide

  3. 3
    ペパボはどれくらいMackerel使ってるのか

    View full-size slide

  4. ● サービス数: 25
    ● ホスト数: 840+
    ● VM + コンテナ
    ● 監視ルール: 300+
    ● プラグインの利用数: 60+
    ● 用途
    ● メトリクス、自動化ツール、SLIの計測
    ● 自宅サーバの監視
    i. アラートはLINEに通知して鳴っても放置してる
    5

    View full-size slide

  5. 6
    これまで作ったプラグイン紹介

    View full-size slide

  6. ● メトリックプラグイン(24個)
    ● mackerel-plugin-linux-netstat
    ● mackerel-plugin-sslhandshake-time
    ● mackerel-plugin-linux-meminfo
    ● mackerel-low-usage-police
    ● mackerel-plugin-mysql-extend
    ● mackerel-plugin-axslog-light
    ● mackerel-plugin-dns-healthcheck
    ● mackerel-errorbudget-calculator
    ● mackerel-plugin-dns-lookup
    ● mackerel-plugin-linux-virt-mem
    ● mackerel-plugin-linux-tcp-memory
    ● mackerel-plugin-linux-socket-queue-size
    ● チェックプラグイン(8個)
    ● check-ddos-udp
    ● check-dos-tls12
    ● check-ssl-validate
    ● check-mysql-backup
    ● go-check-virtmem
    ● go-check-longtransaction-cnt
    7

    View full-size slide

  7. ● メトリックプラグイン(24個)
    ● mackerel-plugin-linux-netstat
    ● mackerel-plugin-sslhandshake-time
    ● mackerel-plugin-linux-meminfo
    ● mackerel-low-usage-police
    ● mackerel-plugin-mysql-extend
    ● mackerel-plugin-axslog-light
    ● mackerel-plugin-dns-healthcheck
    ● mackerel-errorbudget-calculator
    ● mackerel-plugin-dns-lookup
    ● mackerel-plugin-linux-virt-mem
    ● mackerel-plugin-linux-tcp-memory
    ● mackerel-plugin-linux-socket-queue-size
    ● チェックプラグイン(8個)
    ● check-ddos-udp
    ● check-dos-tls12
    ● check-ssl-validate
    ● check-mysql-backup
    ● go-check-virtmem
    ● go-check-longtransaction-cnt
    8

    View full-size slide

  8. ● ryuichi1208/go-check-longtransaction-cnt
    ● MySQLのロングトランザクションの数を監視するチェックプラグイン
    ● 大容量のUNDO(rollback)セグメントを消費することによる
    BufferPool荒れを防ぎたく
    て作った
    i. 分析クエリの発行が1トランザクションで実行されていたりして
    3日かかるようなク
    エリがあった
    ii. 閉じ忘れられるトランザクションとかにも有効
    ● INFORMATION_SCHEMA INNODB_TRX テーブルあたりをパースして実装
    ● 検出後はクエリを出して開発者へフィードバックとか
    9

    View full-size slide

  9. ● ryuichi1208/mackerel-plugin-linux-socket-queue-size
    ● 指定したポートの listen-queue と accept-queue の数を出力するプラグイン
    ● /proc/net/tcpをパースして実装
    ● nginxでSSL終端をしているサービスでnginxでの処理時間が伸びているという事象
    が発生していた
    ● 当時はこの時間をリアルタイムに監視する術がなかった
    ● nginxで処理が詰まっていることをアラートとして出すために作成
    i. nginxのスレッドがなんらかの原因で詰まると
    accept(2)の呼び出しが行われな
    いため増える
    ii. この数値をトリガーとしてnginx自体のオートスケール処理
    10

    View full-size slide

  10. ● ryuichi1208/mackerel-plugin-sslhandshake-time
    ● 指定されたURLへhttpsリクエストをして”名前解決”、”tcp接続”、”SSLハンドシェイク”
    のそれぞれを計測するメトリクスプラグイン
    ● httptrace.ClientTraceの各処理にフックを入れて計測処理を実装
    ● DNSはPowerDNSを使っていたり、OpenStack Load-balancing サービス の
    Octavia自分たちで運用していたりSSLの部分はngx_mrubyを使った動的証明書の
    仕組みを実装していたり
    ● 外形監視のアラートがなった際の調査の範囲を狭めるために作成
    i. DNSなのかLBなのかSSL処理部分が悪いのかをある程度短時間で判断できる
    仕組み
    11

    View full-size slide

  11. ● ryuichi1208/mackerel-plugin-linux-virt-mem
    ● Linuxの仮想メモリの上限と現在使用量を出力するメトリクスプラグイン
    ● /proc/meminfoをパースして実装
    ● MySQLがメモリ使用量(RSS)は多くないのにOOMが発生していたケースがあって実

    i. 仮想メモリの不足が原因
    ● /proc/sys/vm/overcommit_memoryを1で運用(厳格なオーバーコミット管理)
    i. 夜中に仮想メモリをめっちゃ使用しているグラフがわかった
    ii. プラグインも結構使用していることがわかった
    iii. 参考) Why does my Go process use so much virtual memory?
    12

    View full-size slide

  12. 13
    終わりに

    View full-size slide

  13. ● Mackerelプラグインサクッと作れてとても楽しい
    ● ChatGPTを使って仙台->東京の移動で作ったりして東京でリリース
    ● OpenTelemetry対応弊社のメンバーもとても楽しみにしてます!!
    ● (宣伝)9月にペパボのSREやってるメンバーで勉強会やります!!
    14

    View full-size slide

  14. 15
    ご清聴ありがとうございました

    View full-size slide