Slide 1

Slide 1 text

⾷べログへのNewRelic導⼊の 経緯と効果 & 運⽤効率化のための⼯夫 2021. 12. 15

Slide 2

Slide 2 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ⾷べログって? n今年 17 年⽬になる、ガラケーの頃から続いているサービスです

Slide 3

Slide 3 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ⾷べログインフラをKubernetesに!! 来年2⽉末を⽬標にKubernetes化 すでに⼀部のシステムが本番稼働🎉

Slide 4

Slide 4 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ⾃⼰紹介 図左 洋介 (ずさ ようすけ) ⾷べログシステム本部 技術部 SREチーム マネージャー @Aramassa31 Qiita アドベントカレンダーもやっています! 🔎 ⾷べログ アドベントカレンダー 2021 🔎 https://qiita.com/advent-calendar/2021/tabelog

Slide 5

Slide 5 text

導⼊前にあった オブザーバビリティ上の課題

Slide 6

Slide 6 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. 課題① 課題① Grafana & Prometheus & Thanos 運⽤コストの増⼤

Slide 7

Slide 7 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. クラスタ可視化領域の課題 ・Kubernetes Integration ・Prometheus Remote Write Integration のおかげでシンプルな Manifest になり、動作確認も楽に!! 導⼊で… 課題① Grafana & Prometheus & Thanos 運⽤コストの増⼤

Slide 8

Slide 8 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ⼿間のかかる仕組みで本番運⽤拡⼤するのは不安… 課題② OSSは使い勝⼿がいまいち (特にフィルター)

Slide 9

Slide 9 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ⼿間のかかる仕組みで本番運⽤拡⼤するのは不安… ・Kibana ライクに データソースにフィルターをかけられる ⽬的の情報にフォーカスして、⼈に優しいグラフになった 導⼊で… 課題② OSSは使い勝⼿がいまいち (特にフィルター)

Slide 10

Slide 10 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. This is やさしさ 必要な情報だけをフィルターしてちゃんと⾒れる!!

Slide 11

Slide 11 text

運⽤の効率化のために やっていること

Slide 12

Slide 12 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. terraform Alert関連の設定は terraformを利⽤しています • 設定内容が明確化される • Mapを使って類似の設定を⼀括で投⼊できる • 設定に再現性が出る • Git管理されるので壊してもすぐに戻せる resource "newrelic_alert_policy" "cpu_usage_warning" { name = "${var.env_label} CPU使⽤状況 Warning" incident_preference = "PER_CONDITION_AND_TARGET" channel_ids = var.notify_channels.warning }

Slide 13

Slide 13 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. terraform Alert関連の設定は terraformを利⽤しています • 設定内容が明確化される • Mapを使って類似の設定を⼀括で投⼊できる • 設定に再現性が出る • Git管理されるので壊してもすぐに戻せる resource "newrelic_nrql_alert_condition" "cpu_throttled" { for_each = var.target_containsers nrql { query = “SELECT * FROM … WHERE name = ‘${each.value}’; } }

Slide 14

Slide 14 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. terraform Alert関連の設定は terraformを利⽤しています • 設定内容が明確化される • Mapを使って類似の設定を⼀括で投⼊できる • 設定に再現性が出る • Git管理されるので壊してもすぐに戻せる

Slide 15

Slide 15 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ダッシュボード画⾯ ( ゚д゚ ) ……

Slide 16

Slide 16 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ダッシュボード画⾯ ( ゚д゚ ) ……

Slide 17

Slide 17 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ダッシュボード画⾯ ( ゚д゚ ) ……

Slide 18

Slide 18 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ダッシュボード画⾯ Σ(゚ロ゚;) オヤッ?

Slide 19

Slide 19 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. Base64 じゃないかコレ 【家訓】 ⾒つけたBase64は全てデコードせよ ※ ※ドラクエの壺感覚。ちなみに図左は⾊の違う草むらもしらべます。

Slide 20

Slide 20 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. Base64 じゃないかコレ 【家訓】 ⾒つけたBase64は全てデコードせよ ※ "nerdletId": "dashboards.detail", "useDefaultTimeRange": false, "selectedPage": "MzI0MjY0NXxWSVp8REFTSEJPQVJE……..", "isTemplateEmpty": false, "filters": "(`k8s.clusterName` IN ('tb-development-external-1_20', 'tb-development-internal-1_20') AND `k8s.deploymentName` LIKE ‘%application%')", "entityGuid": "MzI0MjY0NXxWSVp8REFTSEJPQVJEfGRhO………" デコード結果

Slide 21

Slide 21 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ⾊々でてきた中⾝ 項⽬ 考察 nerdletId 値 dashboards.detail 予想 ページの種別かな? useDefaultTimeRange 値 useDefaultTimeRange 予想 時間指定 ….? selectedPage 値 MzI0MjY0NXxWSVp8REFTSEJPQVJEfD…… 予想 ページの識別⼦ .. ? isTemplateEmpty 値 false 予想 ????? filters 値 (`k8s.clusterName` IN ….. 予想 NRQLっぽい検索条件 entityGuid 値 MzI0MjY0NXxWSVp8REFTSEJPQVJEfGRhOj……. 予想 ?????

Slide 22

Slide 22 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ⾊々でてきた中⾝ 項⽬ 考察 nerdletId 値 dashboards.detail 予想 ページの種別かな? useDefaultTimeRange 値 useDefaultTimeRange 予想 時間指定 ….? selectedPage 値 MzI0MjY0NXxWSVp8REFTSEJPQVJEfDIyODI3NzE 予想 ページの識別⼦ .. ? isTemplateEmpty 値 false 予想 ????? filters 値 (`k8s.clusterName` IN ….. 予想 NRQLっぽい検索条件 entityGuid 値 MzI0MjY0NXxWSVp8REFTSEJPQVJEfGRhOjIxODA5MQ 予想 ????? コレ!?

Slide 23

Slide 23 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. filters いじれば条件変更ができそう k8s.clusterName` IN ('tb-development-external-1_20', 'tb-development-internal-1_20’) AND `k8s.deploymentName` LIKE ‘%application%') → パラメータを変更して動作確認 (あのハッシュは整合性チェック⽤、とかだとOUTなので) → できた!!🎉

Slide 24

Slide 24 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. 共有リンクページを作成 → YAML定義からMarkdown 出⼒するコードを書いて GitHub で共有!

Slide 25

Slide 25 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. ダッシュボードのリンク集が じゃんじゃん作れるようになりました🎉 システムが増えても⼤丈夫💪 何かあった時も素早くダッシュボードに アクセスできます🥳

Slide 26

Slide 26 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. チャート化したくない条件 にも対応できるので便利😏 New Relic さんこの仕様なくさないで🙇

Slide 27

Slide 27 text

今後 New Relic でやりたいこと

Slide 28

Slide 28 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. NewRelic の導⼊したい機能 Synthetics (Minion) APM Pixie → 現在の外形監視よりも多くのエンドポイントを対象としたい → ⾯⽩そう。HTTPトラフィックの観測に利⽤してみたい。 → 個別のアプリケーションのパフォーマンス改善 → エンドポイントごとのSLI/SLOの簡易的な観測

Slide 29

Slide 29 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. We are hiring!!!! n⼀緒に⾷べログのサービスを強くしましょう! nSRE以外の職種も幅広く募集中!!※ nhttps://hrmos.co/pages/kakakucom/jobs/1011020 ※FE, データサイエンス, テストエンジニアなど 『カカクコム 採⽤ エンジニア』で検索してください!!

Slide 30

Slide 30 text

Copyright (c) Kakaku.com, Inc. All Rights Reserved. Thank you!! ご清聴 ありがとうございました