Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Terraformを使ったNewRelic監視設定の展開

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 Terraformを使ったNewRelic監視設定の展開

Avatar for mshiono

mshiono

June 15, 2023
Tweet

More Decks by mshiono

Other Decks in Programming

Transcript

  1. 5 会社紹介 株式会社サーバーワークス 従業員数:231名(2023年2月末日時点) 事業内容 AWS専業のクラウドインテグレーター 主な事業: クラウドインテグレーション AWS環境への導入支援 請求代⾏サービス(リセール)

    技術サポート、運用自動化、損害保険など システム運用・監視 ( MSP / SRE ) AWS環境のシステムの運用監視(24時間/365日) ※所属部署では右表のようなサービスを提供
  2. 30 Terraformの設定ファイル 設定ファイルの構成 ▪New Relic設定ツール ┣ create_condition ※ここからコンディション単体を作成 ┣ main.tf

    : ┣ create_policy ※この階層よりポリシー&コンディションの作成をおこなう ┣ main.tf : ┗ module ※この中に設定の定義ファイルが保存されている ┣ ec2 ┣ main.tf ┣ output.tf ┣ variable.tf :
  3. 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” 指定されているものを追加 するのがポイント コマンド実⾏時の引 数を定義
  4. 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 : リストとして登録した設定用パラ メータを使用してそれぞれに必要 な設定をする
  5. 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 } : 設定用リストに呼び出すた めの変数を定義
  6. 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 関数内で定 義している変数に対して設定が必要なリストとし て設定を追加する 設定コマンドで標準的に 必要なパラメータ