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

Cloud MonitoringとTerraformの付き合い方

Cloud MonitoringとTerraformの付き合い方

02f940926caaa16d4657150117fc6438?s=128

Taisei Ito

July 02, 2020
Tweet

Transcript

  1. Cloud Monitoringと Terraformの付き合い方 #HashiTalk: Japan 20.07.02 Taisei Ito

  2. 本発表は個人の意見であり、 所属組織を代表するものではありません

  3. 自己紹介 • 伊藤 太斉(Taisei Ito) ◦ @kaedemalu(Twitter, Github) ◦ フューチャー株式会社

    TIG/DX所属 ◦ コンサルタント&インフラエンジニア ◦ #GCP #Terraform • Community ◦ GCPUG Shonan Staff ◦ CloudNative Days Tokyo Committee
  4. はじめに • フューチャーはマルチクラウド化を推進 ◦ 複数のクラウドで使えるTerraformを採用 ◦ 基本的に全部インフラをコードにしている ◦ 監視ツールについてもTerraformで管理 コード化が大変

  5. 質問1 監視をTerraformで全部管理 できていますか?✋

  6. 質問2 セキュリティ面に気をつけて 書いていますか?✋

  7. 今回の話題 • 早く • 楽に • 安全に 監視設定をTerraformで管理する

  8. 早く、簡単にTerraform化 1 ~ Cloud Monitoringを例にして ~

  9. Cloud Monitoringについて • GCPの監視ツールの1つ ◦ 他にはLogging, Debugger, Error Reporting etc...

    • 元々Stackdriverとして2012年に開発された • 2014年にGoogleに買収され、2020に名前の変更
  10. Cloud Monitoring管理の辛さ • 全部GUIで設定 ◦ 設定がかなり細かい ◦ 時間がかかる • 全部コードで設定

    ◦ filterの書き方が 難しい ◦ (1から書くと)時間が かかる
  11. 最初からコード化は難しい resource "google_monitoring_alert_policy" "someone_alert_policy"{ .... conditions { condition_threshold { aggregations

    { .... filter = "metric.type=\"agent.googleapis.com/disk/percent_used\" resource.type=\"gce_instance\" metric.label.\"state\"=\"used\" metric.label.\"device\"=\"rootfs\" metadata.user_labels.\"name\"=\"sample-instance-1\"" ....
  12. Terraformer • Wazeが開発、現在はGCPのリポジトリの1つ • メジャークラウドのリソースをコード化できる • 1回の実行で複数コード化できる $ terraformer import

    google --resources=monitoring --projects certain_project 生成されるコードも大変
  13. メンテナンスが大変 resource "google_monitoring_alert_policy" "tfer--projects--project-name--alertPolicies--17320504" { .... conditions { condition_threshold {

    aggregations { .... filter = "metric.type=\"agent.googleapis.com/disk/percent_used\" resource.type=\"gce_instance\" metric.label.\"state\"=\"used\" metric.label.\"device\"=\"rootfs\" metadata.user_labels.\"name\"=\"sample-instance-1\"" ....
  14. Terraformerをうまく使うために • 雛形だけGUIで作成→Terraformerでコード化 Monitoring Batch Instance 1 Batch Instance 2

    Load Balancer
  15. Terraformerをうまく使うために • 雛形だけGUIで作成→Terraformerでコード化 Monitoring Batch Instance 1 Batch Instance 2

    Load Balancer GUIで作成+Import
  16. Terraformerをうまく使うために • 雛形だけGUIで作成→Terraformerでコード化 Monitoring Batch Instance 1 Batch Instance 2

    Load Balancer Terraformで作成
  17. 少し安全にコード化する 2

  18. 監視ツールのコード化 • 監視ツールの利用で守りたい部分 ◦ Email ◦ API Key ◦ (Slackの)Token

  19. Slack チャンネル Quote:https://www.terraform.io/docs/providers/google/r/monitoring_notification_channel.html

  20. どう守るか • Tokenを書かないといけない ◦ ハードコード ◦ tfvarsで逃す ◦ Vaultを使う ◦

    (GCPなら)Secret Manager コード化しない選択肢
  21. コード化をあえてしない resource "google_monitoring_alert_policy" "someone_alert_policy"{ .... display_name = "use-80-percent-resource-disk" enabled =

    "true" notification_channels = [ google_monitoring_notification_channel.slack_channel_1.id, "projects/project-name/notificationChannels/0123456789", ] project = "project-name" } コード化しない部分
  22. まとめ • ツールを使ったコード化も必要 ◦ 時間の節約 ◦ 使うときは最小単位で • より安全にコード化するために ◦

    クラウド側で担保する ◦ コードが流出した時のリスク ▪ ツール導入を進めながら
  23. We are hiring! • IT Consultant & Engineer ◦ Infrastructure

    ◦ Application ◦ IoT ◦ AI etc... Tech Blog