Share
Embed
Terraformを使ったNewRelic監視設定の展開
mshiono
June 15, 2023
Transcript
35 slides
-
4 自己紹介 名前:塩野 正人(しおの まさと) 所属:株式会社サーバーワークス マネージドサービス部MS2課 趣味 読書(ラノベ、小説)、音楽、たまにTwitterとか・・ 好きなもの
Youtubeなどでかわいいネコの動画を見る 牛乳が9割以上のコーヒーらしき飲み物 SNS @shioccii -
5 会社紹介 株式会社サーバーワークス 従業員数:231名(2023年2月末日時点) 事業内容 AWS専業のクラウドインテグレーター 主な事業: クラウドインテグレーション AWS環境への導入支援 請求代⾏サービス(リセール)
技術サポート、運用自動化、損害保険など システム運用・監視 ( MSP / SRE ) AWS環境のシステムの運用監視(24時間/365日) ※所属部署では右表のようなサービスを提供 -
10 自動設定ツールの特徴 New Relicで使える自動設定の選択肢は3つある New Relic NerdGraph API New Relic
REST API Terraform -
16 Terraformの仕様 Terraformの定義ファイルの主要なものは以下の3つ main.tf コード本体を入れるファイル variables.tf 変数を入れるファイル ※無くても動くが用意することが推奨 outputs.tf サブ関数で得た結果をメイン関数に返す場合に使う
※ファイル分割してモジュール化する場合に使う ※無くても動くが用意することが推奨 -
23 設定の理想と現実 Terraformというツールの課題 理想 現実 • 設定ファイルはひとつ • 全ての環境で均一した設定をする •
案件毎に設定ファイルを管理 • 設定ファイルの編集難易度は高い -
27 Terraformの機能の確認 terraformで設定する場合に、下記のフローの実現が可能 terraform init(初期化) terraform plan(内容確認) terraform apply(設定反映) terraform
state rm(設定初期化) たくさん設定する場 合でも、別の設定を ここから実施できる -
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 関数内で定 義している変数に対して設定が必要なリストとし て設定を追加する 設定コマンドで標準的に 必要なパラメータ