レガシー環境でもPrometheus はイケるんです

1.3K Views

January 17, 20

スライド概要

Prometheusは大規模なレガシー環境に最適で一台のサーバで実行ファイルを動かすだけで数万台監視できる。
レガシー環境で動かす上でのノウハウを紹介。

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

レガシー環境でもPrometheus はイケるんです 全然モダンじゃないPrometheusの 運用ノウハウください ヤフー株式会社 大町 一仁 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

2.

Who • 所属 ヤフー新卒一年目 • 好物 システムの歴史(闇) • お仕事 Apache Solr(検索エンジン) の SaaSを提供 https://www.slideshare.net/techblogyahoo/serving-engine-as-a-service-at-yahoo-japan-solrjp Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 2

3.

Prometheusはレガシー環境に最適 • レガシーシステムは担当者が少なくてやばい => 一台のサーバで実行ファイルを動かすだけ • システムが巨大で監視するサーバ台数が多くてやばい => prometheusは数万台監視できる(スケールする Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 3

4.

監視システム構成

5.

構成はシンプルに2台で冗長化 • 監視対象 約1万台 / 60秒 1回 / 10日保存 1万台 • 監視サーバスペック 48vCPU/ 128GB/ 892GB 2千台 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 5

6.

prometheus̲tsdb̲head̲series Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 6 6

7.

利用率 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 7 7

8.

スケールアウト vs スケールアップ

9.

スケールアウト戦略は複雑である • Prometheusはメモリがあれば監視対象が増えてもスケールする • OOMKillerに64GBメモリの亭主を殺されたら128GBと再婚すれば良い • 数年前のサーバ1台でも1万台超の監視は可能 • あと5倍は札束で楽勝(๑•̀д• ́๑) by 先輩 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 9

10.

スケールアウトさせないことによる闇

11.

データの欠損は仕方ないとわりきる • PromthuesのDBのリカバリーに は20分ぐらいかかる\(^o^)/ サーバ再起動 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 11

12.

欠損の症状を緩和することは可能 • 再起動の回数を減らす • • DBのリカバリが終わるまでヘルスチェックを失敗させたい • • 設定のリロードはHUPシグナルを利用する kill -HUP 1234 Management APIを利用する curl -S http://localhost:9090/-/ready 二台のPrometheusはActive/Stanbyでロードバランシングする • ロードバランサの設定をRound-Robinではなく、Source-IPなどに設定 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 12 12

13.

システム管理構成がレガシー環境で 独自進化したことによる闇

14.
[beta]
監視対象サーバの追加/削除を自動化する
•

独自のサーバ管理システムではCRONでサーバリストを流し込む
/etc/prometheus/prometheus.yml
- job̲name: 'node'
scrape̲interval: 60s
file̲sd̲configs:
- files:
- '/etc/prometheus/targets/node.json'

/etc/prometheus/targets/node.json
[
{
"labels": {
"cluster": "prod"
},
"targets": [
"example001.yahoo.co.jp:9100",
“example002.yahoo.co.jp:9100"
]
}]

PS. https://prometheus.io/blog/2018/07/05/implementing-custom-sd/ の方法でも良い

Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

14
14

15.

レガシーでもPrometheusはイケます Copyright (C) 2020 Yahoo Japan15 Corporation. All Rights Reserved. 15

16.

Appendix

17.

セルフFAQ

18.

Q. OSやハードウェアのチューニングが大変でしょ? • いいえ。「Linux kernel チューニング」で検索してヒットすることを抑え れば大丈夫です。 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 18 18

19.

Q. 監視対象側へのExporterの導入が大変なのでは? • node̲exporter, jmx̲exporter, mtailなど必要な機能はOSSにあり事例も 豊富です • https://prometheus.io/docs/instrumenting/exporters/ もバイナリ を動かすだけなので特に大変ではないです Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 19 19

20.

異常検知を人力で良い感じにしてしまえるという闇

21.

流行りのAIでなくてもPromQLで頑張れる • CPUの利用率の高いサーバを並べてみる Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 21 21

22.

流行りのAIでなくてもPromQLで頑張れる • 標準偏差で特定のグループに遅いサーバを見つける Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 22 22

23.

流行りのAIでなくてもPromQLで頑張れる • 標準偏差で特定のグループに遅いサーバを見つける CPU不足 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 23 23