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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
620
Other Decks in Programming
See All in Programming
What We Talk About When We Talk About XP
m_seki
2
450
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
440
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
1.7k
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
360
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
300
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.7k
ALB ログから Trace を気合で繋げる技術
fohte
7
880
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
130
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
150
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
150
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Balancing Empowerment & Direction
lara
6
1.3k
How to Talk to Developers About Accessibility
jct
2
540
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
500
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Site-Speed That Sticks
csswizardry
13
1.5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
What's in a price? How to price your products and services
michaelherold
247
13k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
Typedesign – Prime Four
hannesfritz
42
3.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
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