はじめに
Google Cloud でネットワーク関連を統合したコンソールとして Network Intelligence Center がある
個人環境で簡易的に試した内容を記載する
Network Intelligence Center とは
Google Cloud ネットワークのオブザーバビリティ、モニタリング、トラブルシューティングを単一コンソールで可能にするサービス
- 主な利点 (ドキュメント)
- 接続の問題を診断し、ネットワーク障害を防止
- ネットワークのセキュリティとコンプライアンスが向上
- インテリジェントなモニタリングで時間を節約
主な機能・料金
主な機能・料金は下記の通り (2023.10.15 時点)
主な機能 | 内容 (ドキュメント) | 料金 (ドキュメント) |
---|---|---|
ネットワーク トポロジ | 下記を可視化する ・VPC ネットワークのトポロジ ・オンプレミス ネットワーク間のハイブリッド接続 ・Google マネージド サービスへの接続 ・関連する指標 |
・現在すべてのユーザーが 100% 割引 (割引構成の変更は、90 日前の通知) ・GCE 1 リソース時間ごとに $0.0011 ・アドオン: インターネットと Google Cloud 間のトラフィック GCE リソース時間あたり \$0.0008 |
接続テスト | ネットワーク エンドポイント間の接続を確認できる診断ツール | ・テスト 20 回まで無料/月 ・テスト 21 回以上 $0.15 / テスト数 |
パフォーマンス ダッシュボード | 全体のパフォーマンスと、プロジェクトのリソースのパフォーマンスを可視化する | 現在すべてのユーザーが 100% 割引 (割引構成の変更は、90 日前の通知) |
ファイアウォール インサイト | ファイアウォール ルールの使用状況に関するデータを使用して、構成の誤りを確認できる | ・初期評価時 : ルールごとに 1ドル ・その後の評価 : 評価するルール 1 つにつき 0.10ドル |
ネットワーク アナライザ | VPC ネットワーク構成を自動的にモニタリングし、構成ミスや最適でない構成を検出する 基盤となるネットワークに起因する障害を特定し、根本原因の情報と考えられる解決策を提供する |
・現在すべてのユーザーが 100% 割引 (割引構成の変更は、90 日前の通知) ・GCE, GKE ノード : 1 リソース時間ごとに $0.0011 |
料金のドキュメントに記載がある通り、現在(2023.10.15時点)100%割引が適用されている箇所があるが、今後90日前通知で課金に変わる可能性がある
試験実施
Network Intelligence
の各機能を試験環境で試してみる
実施環境
共有 VPC 環境で複数のプロジェクトがある環境 (下記リンク先で作成された個人試験環境)
必要な権限
下記管理者と閲覧者は必要に応じて適用する
- ネットワーク管理管理者 (roles/networkmanagement.admin)
- ネットワーク管理閲覧者 (roles/networkmanagement.viewer)
- モニタリング管理者 (roles/monitoring.admin)
- モニタリング閲覧者 (roles/monitoring.viewer)
ファイアウォール インサイトの権限 は Firewall があるプロジェクト(共有VPCのホストプロジェクト)で権限付・操作が必要
- Firewall Recommender 管理者(roles/recommender.firewallAdmin)
- Firewall Recommender 閲覧者(roles/recommender.firewallViewer)
必要な API
下記 API を必要に応じて各プロジェクトで有効化する
-
monitoring.googleapis.com
- すべてのプロジェクトで有効化する
-
firewallinsights.googleapis.com
- 共有VPCのホストプロジェクトで有効化する
-
networkmanagement.googleapis.com
- モニタリング対象先(サービスプロジェクトを含む全ての対象プロジェクト)で有効化する
マルチプロジェクト モニタリング スコープ用プロジェクト
共有 VPC など複数のプロジェクトを前提にネットワークを構成している場合は、指標スコープを追加する必要がある
スコープ用プロジェクトに関するベスト プラクティスによるとスコープ用プロジェクトとして新しい Google Cloud プロジェクトを使用するか、リソースのないプロジェクトを使用すること
が推奨されているので、新しくプロジェクトを作成する
マルチスコープ用プロジェクトの作成
プロジェクトを作成して、必要な権限・API を有効化して、モニタリングするプロジェクトを紐付けする
terraform code 例
組織でフォルダ管理されている環境での例
main.tf
, terraform.tfvars
に環境で変わる変数は定義している
terraform.tfvars
の monitor_project_list
変数で複数のプロジェクトの紐付けをリストで定義できるようにしている
$ tree
.
|-- api.tf
|-- folder.tf
|-- iam.tf
|-- main.tf
|-- monitored_project.tf
|-- project.tf
|-- terraform.tfvars
`-- vairables.tf
# プロジェクトの API 管理
resource "google_project_service" "main" {
project = google_project.main.name
disable_dependent_services = true
for_each = toset([
"monitoring.googleapis.com", # Network Topology, Performance Dashboard, Network Analyzer のみであればこれだけでも使用可能
"networkmanagement.googleapis.com", # Connectivity Tests で必要, Network Analyzer の対象先で有効化が必要
# "firewallinsights.googleapis.com", # Firewall Insights で必要, Firewall があるプロジェクトで有効化・実施が必要
])
service = each.value
}
# マルチプロジェクトでのモニタリング向けフォルダ
resource "google_folder" "folder" {
display_name = var.folder_name
parent = var.parent_folder_name
}
# フォルダ IAM 設定
resource "google_folder_iam_binding" "admin" {
folder = google_folder.folder.name
for_each = toset([
"roles/monitoring.admin",
"roles/networkmanagement.admin",
])
role = each.value
members = [
join(":", ["group", var.org_monitoring_admin_group_email]),
]
}
terraform {
required_version = "1.1.7"
required_providers {
google = {
source = "hashicorp/google"
version = "=5.0.0" # 2023.10.14 Latest https://registry.terraform.io/providers/hashicorp/google/5.0.0/
}
}
backend "gcs" {
bucket = "YOUR_TERRAFORM_BACKEND_BACKET" # env manage terraform state bucket
prefix = "YOUR_THIS_STATE_FILE_NAME" # env manage terraform state file
}
}
provider "google" {
# export GOOGLE_APPLICATION_CREDENTIALS=YOUR_CREDENTIALS_PATH
}
## https://registry.terraform.io/providers/hashicorp/google/5.0.0/docs/resources/monitoring_monitored_project
resource "google_monitoring_monitored_project" "projects_monitored" {
for_each = toset(var.monitor_project_list)
metrics_scope = join("", ["locations/global/metricsScopes/", google_project.main.id])
name = each.value
}
# プロジェクト作成
resource "google_project" "main" {
name = var.project_id
project_id = var.project_id
billing_account = var.billing_account
folder_id = google_folder.folder.name
depends_on = [
google_folder.folder,
]
}
project_id = "MONITORING_PROJECT_NAME"
parent_folder_name = "folders/XXXXXXXXXXXX"
folder_name = "MONITORING_FOLDER_NAME"
billing_account = "XXXXXX-XXXXXX-XXXXXX"
admin_group_email = "gcp-network-admin@xxx.xxx"
monitor_project_list = ["YOUR_SHARED_VPC_PROJECT_ID", "YOUR_SERVICE_PROJECT1_ID",
"YOUR_SERVICE_PROJECT2_ID", ]
variable "project_id" {
type = string
}
variable "parent_folder_name" {
type = string
}
variable "folder_name" {
type = string
}
variable "billing_account" {
type = string
}
variable "location" {
type = string
default = "asia-northeast1"
}
variable "org_monitoring_admin_group_email" {
type = string
}
variable "monitor_project_list" {
type = list(string)
}
ネットワーク トポロジ
Cloud Console でマルチプロジェクト モニタリング 用に作成したプロジェクト
を選択して Network Intelligence
> Network Topology
を開く
複数のプロジェクト (共有 VPC のホスト・サービスプロジェクト) を統合したトポロジ図を見ることができる。
アイコンをクリックすると対象の通信の Ingress/Egress トラフィックを図示できる
トポロジのアイコンを開くとリージョン内の構造を表示できる (ここではオンプレ向け VPN とサブネット)
また、アイコンをクリックすると対象のトラフィックをグラフで表示できる
DATA FLOWS
のタブを開くとトラフィック量を表で表示できる
接続テスト
Cloud Console でマルチプロジェクト モニタリング 用に作成したプロジェクト
を選択して Network Intelligence
> Connectivity Tests
を開く
+ CREATE CONNECTIVITY TEST
をクリックして、試しに許可してな送信元 IP を指定して VM の Public IP 向けに接続テストを作成する (下記は作成例)
作成すると接続テストの一覧ができる (下記画像はFirewall でブロックされるのと許可している内容で試験作成した結果)
下記画像はブロックされる接続テストをクリックして詳細を開いた例。Firewall rules でブロックされることがわかる。
下記画像は許可される接続テストをクリックして詳細を開いた例。許可される Firewall rule 名が表示される。
パフォーマンス ダッシュボード
Cloud Console でマルチプロジェクト モニタリング 用に作成したプロジェクト
を選択して Network Intelligence
> Performance Dashboard
を開く
あまりクラウドリソースがないので見れるところがなかった。インターネット向けのレイテンシで見れたのが上記の通り。
ファイアウォール インサイト
Cloud Console でマルチプロジェクト モニタリング 用に作成したプロジェクト
を選択して Network Intelligence
> Firewall Insights
を開く
設定を変えると費用が発生するので要注意 (初期評価時 : ルールごとに 1ドル)
CONFIGURATION
をクリックして設定を開く
OBSERVATION PERIOD
(観察期間) タブで実行間隔を設定できる (下記はデフォルトのまま)
ENABLEMENT
タブで有効化している評価設定を切り替えできる
デフォルトでは Disabled
になっているのでスイッチして Enable にする (下記はスイッチ時のポップアップ内容)
両方とも Enabled
になったことを確認する
有効化 (Enabled
) にすると分析 (Insights
) 結果が表示される (分析には最大24時間かかるものがあるので注意)
有効化したままだと定期的に費用が発生するので試験後は Disabled
にする (評価するルール 1 つにつき 0.10ドル)
ネットワーク アナライザ
Cloud Console で共有 VPC のホストプロジェクト
を選択して Network Intelligence
> Network Analyzer
を開く
実施環境で分析結果を見ると、サブネット内の IP 使用率が少ないものが Low
レベルで出ていることが確認できた
まとめ
Network Intelligence Center を簡易的に試した
試験したのが個人的なラボ環境でリソースが少ないため試せた範囲は狭いが、
商用ネットワークの運用には有用そうなサービスだった
参照