Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Terraformを使ったNewRelic監視設定の展開
Search
mshiono
June 15, 2023
Programming
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Terraformを使ったNewRelic監視設定の展開
mshiono
June 15, 2023
More Decks by mshiono
See All by mshiono
New Relicを使ったPING監視の特徴
mshiono
0
670
Other Decks in Programming
See All in Programming
Agents on Rails - Rails at Scale 2026
irinanazarova
0
570
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
220
ActionController meets Protocol Buffers
sorah
0
550
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
160
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
すこし踏み込む CancellationToken
htkym
2
1.7k
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
180
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
The Rails Doctrine Decade
koic
2
590
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
33k
Domain-Driven Transformation
hschwentner
2
2.3k
AWSに止められる覚悟してますか?
morizo_1984
2
540
Featured
See All Featured
Scaling GitHub
holman
464
140k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
First, design no harm
axbom
PRO
2
1.3k
Designing Experiences People Love
moore
143
24k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
WCS-LA-2024
lcolladotor
0
890
Un-Boring Meetings
codingconduct
0
460
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
terraformを使ったNew Relic 監視設定の展開 塩野 正人 2023年06月14日
目次 1. 自己紹介・会社紹介 2. 自動設定ツールの導入背景 3. 導入時の課題 4. どのように設定ファイルを作ったか?
自己紹介・会社紹介
4 自己紹介 名前:塩野 正人(しおの まさと) 所属:株式会社サーバーワークス マネージドサービス部MS2課 趣味 読書(ラノベ、小説)、音楽、たまにTwitterとか・・ 好きなもの
Youtubeなどでかわいいネコの動画を見る 牛乳が9割以上のコーヒーらしき飲み物 SNS @shioccii
5 会社紹介 株式会社サーバーワークス 従業員数:231名(2023年2月末日時点) 事業内容 AWS専業のクラウドインテグレーター 主な事業: クラウドインテグレーション AWS環境への導入支援 請求代⾏サービス(リセール)
技術サポート、運用自動化、損害保険など システム運用・監視 ( MSP / SRE ) AWS環境のシステムの運用監視(24時間/365日) ※所属部署では右表のようなサービスを提供
自動設定ツールの導入背景
7 どのように設定をしているか 弊社MSP事業を展開している関係上、 複数のお客様毎に環境が異なるため、 似たような構成の設定を施す必要があります 画面で ぽちぽち・・
8 同じような設定を複数の案件で展開するため、 数が増えれば増えるほど、ケアレスミスが発生しやすい 同じ設定で 疲れた どのように設定をしているか
自動ツールの検討
10 自動設定ツールの特徴 New Relicで使える自動設定の選択肢は3つある New Relic NerdGraph API New Relic
REST API Terraform
11 自動設定ツールの特徴ーGraph API New Relic NerdGraph API JSON形式のコードが長く、アラート毎に変更が必要 コード管理が大変そう・・・
12 自動設定ツールの特徴ーGraph API New Relic REST API そもそも非推奨・・・
13 自動設定ツールの特徴ーGraph API Terraform IaCだし、ノウハウためれば他でも流用できるし もう、これでいいんじゃね?
導入時の課題
Terraformの仕様
16 Terraformの仕様 Terraformの定義ファイルの主要なものは以下の3つ main.tf コード本体を入れるファイル variables.tf 変数を入れるファイル ※無くても動くが用意することが推奨 outputs.tf サブ関数で得た結果をメイン関数に返す場合に使う
※ファイル分割してモジュール化する場合に使う ※無くても動くが用意することが推奨
17 Terraformの仕様 Terraformの設定の流れを整理 terraform init 構成内容を初期化して必要なモジュール(provider関連など)の取得 terraform plan コード実⾏した際の変更点をチェック。dry-runのようなもの terraform
apply コードを実⾏して設定を反映
18 Terraformの仕様 Terraformの設定の流れを整理 そして・・・ 無事設定が完了すると、設定情報がtfstateファイルに保存され、 次回の設定変更の際に参照される
自動ツールの機能とあるべき姿
20 Terraformというツールの課題 Terraformの場合、変数は使えるものの監視設定のキモとな るPolicyやConditionを設定する時に、それぞれ値を埋め込 んでおく必要がある
21 案件毎に設定ファイルを個別に作成した場合、 terraformのコード作成以外にtfstateファイルの管理も必要 Terraformというツールの課題 案件A.tfstate 案件A.tf 案件B.tfstate 案件B.tf 案件C.tfstate 案件C.tf
22 案件毎にTerraformのコード改修が必要になるため、 人によるスキルレベルの差は大きな課題になる Terraformというツールの課題 Terraform? なにそれ おいしいの? Terraform? 楽勝っすよ!
23 設定の理想と現実 Terraformというツールの課題 理想 現実 • 設定ファイルはひとつ • 全ての環境で均一した設定をする •
案件毎に設定ファイルを管理 • 設定ファイルの編集難易度は高い
どのように設定ファイルを作ったか?
Terraformの機能で見落としはないのか?
26 Terraformの機能の確認 tfstateのリセットコマンドが存在することが判明 引用元 https://developer.hashicorp.com/terraform/cli/commands/state/rm
27 Terraformの機能の確認 terraformで設定する場合に、下記のフローの実現が可能 terraform init(初期化) terraform plan(内容確認) terraform apply(設定反映) terraform
state rm(設定初期化) たくさん設定する場 合でも、別の設定を ここから実施できる
Terraformのコードを実装
29 Terraformの設定ファイル 設定の流れを下記に変更 terraform init 構成内容を初期化して必要なモジュール(provider関連など)の取得 terraform plan コード実⾏した際の変更点をチェック。dry-runのようなもの terraform
apply コードを実⾏して設定を反映 terraform state rm tfstateをリセットすることで、設定ファイルを使いまわす 追加した手順
30 Terraformの設定ファイル 設定ファイルの構成 ▪New Relic設定ツール ┣ create_condition ※ここからコンディション単体を作成 ┣ main.tf
: ┣ create_policy ※この階層よりポリシー&コンディションの作成をおこなう ┣ main.tf : ┗ module ※この中に設定の定義ファイルが保存されている ┣ ec2 ┣ main.tf ┣ output.tf ┣ variable.tf :
31 Terraformの設定ファイル Conditionフォルダの中身 ▪変数ファイル(variables.tf) variable "newrelic_api_key" { type = string
default = "" } : variable "config_os_common" { type = string default = "n" } : ▪実⾏ファイル(main.tf) module "nr_condition" { source = "../module/condition/create_alert_condition" # ----- コンディション設定(Listで渡す) condition_list = concat( var.config_os_common == "y" ? module.ec2_param. windows_common : [] , : Terraformには IF関数がないため、 3点リーダーで設定用のリストを作 成 concatでパラメータが ”y” 指定されているものを追加 するのがポイント コマンド実⾏時の引 数を定義
32 Terraformの設定ファイル moduleフォルダの中身ーcondition設定 ▪変数ファイル(variables.tf) variable "newrelic_api_key" {} variable "newrelic _account_id"
{} variable "ec2_hostname" {} variable "ec2_port_number" {} variable "ec2_process_name" {} variable "ec2_service_name" {} variable "ec2_logfile_name" {} : 設定用リスト作成用のtfファイ ルと値を共有するための変数 を定義 ▪実⾏ファイル(main.tf) resource "newrelic_nrql_alert_condition" "create_alert_condition" { # コンディション(リスト変数)の値をループして、各 コンディションの設定をおこなう for_each = { for i in var. condition_list : i.condition_name => i } enabled = each.value.condition_enable : リストとして登録した設定用パラ メータを使用してそれぞれに必要 な設定をする
33 Terraformの設定ファイル moduleフォルダの中身ーec2定義ファイル ▪変数ファイル(variables.tf) locals { windows_common = [ {
nrql = "SELECT average(`host.cpuUserPercent`) FROM Metric” condition_enable = “true" , condition_operator = "above", : 各conditionに設定してい る詳細の設定内容はすべ てここで定義している ▪実⾏ファイル(output.tf) # ----- for ec2 configration output "windows_common" { value = local. windows_common } output "windows_service" { value = local. windows_ service } output "windows_port" { value = local.windows_ port } : 設定用リストに呼び出すた めの変数を定義
34 Terraformの設定ファイル 設定時のパラメータ指定方法 ▪New Relic設定ツール ┣ create_condition ※ここからコンディション単体を作成 ┣ main.tf
: C:¥newrelic-config > cd create_condition C:¥newrelic-config¥create_condition > terraform init : C:¥newrelic-config¥create_condition > terraform plan -var “newrelic_api_key =NRAKxxx” -var “ec2_hostname =hogehost” -var “newrelic _account_id=1234567” -var “config_os_common=y” 引数で指定することで、nr_condition 関数内で定 義している変数に対して設定が必要なリストとし て設定を追加する 設定コマンドで標準的に 必要なパラメータ
None