"private uptime checks"の使い方 ✅

こんにちは。Enabling team の山本です。

2023年5月2回目は、[private uptime checks](https://cloud.google.com/monitoring/uptime-checks/private-checks)　についてです。

"private uptime checks" は、GA がアナウンスされました。 5月12日の release notes にて。
> Cloud Monitoring
The new flow for creating uptime checks, which includes usability improvements and offers a seamless way to create uptime checks on your private resources, is now GA. For more information, see Create public uptime checks and Create private uptime checks.

"public uptime checks" は、Preview 時から利用してきました。

"private uptime checks" の GA も待ってました！

## TL;DR
- "public uptime checks"　との違いは、"Service Directory Service" と Firewall です。

## Installation
### VM を作成する
```bash
gcloud compute instances create private-uptime-check --project=junior-engineers-gym --zone=us-central1-a --machine-type=e2-medium --network-interface=network-tier=PREMIUM,stack-type=IPV4_ONLY,subnet=default --maintenance-policy=MIGRATE --provisioning-model=STANDARD --service-account=1076059400241-compute@developer.gserviceaccount.com --scopes=https://www.googleapis.com/auth/cloud-platform --create-disk=auto-delete=yes,boot=yes,device-name=private-uptime-check,image=projects/debian-cloud/global/images/debian-11-bullseye-v20230509,mode=rw,size=10,type=projects/junior-engineers-gym/zones/us-central1-a/diskTypes/pd-balanced --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --labels=ec-src=vm_add-gcloud --reservation-affinity=any
```

### Apache HTTP Server を起動する
- 動作確認のため、HTTP を起動させます。
```bash
sudo apt update && sudo apt -y install apache2
sudo systemctl status apache2
```

### External IP を外す
- Internal IP のみにします。

### private uptime checks を作成する
![スクリーンショット 2023-05-16 15.12.14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569971/ef84829d-2df6-d109-4297-50bd94af123c.jpeg)

### Service Directory を作成する
- Console から作成します。

### ファイアウォール ルールの作成
- Google Cloud の DNS `35.199.192.0/19` からの ingress の Firewall Rule が必要です。
- Console から作成します。
```bash
gcloud compute firewall-rules create private-check-network-hope-rule-default \
--network="default" \
--action=allow \
--direction=ingress \
--source-ranges="35.199.192.0/19" \
--rules=tcp
```

### Service Directory を介した VPC ネットワークへのアクセスを許可する
```
gcloud projects add-iam-policy-binding junior-engineers-gym --member='serviceAccount:service-1076059400241@gcp-sa-monitoring-notification.iam.gserviceaccount.com' --role='roles/servicedirectory.pscAuthorizedService'
```

### Access Log の確認
```bash
35.199.192.168 - - [16/May/2023:09:37:37 +0000] "GET / HTTP/1.1" 200 3380 "-" "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)"
35.199.195.140 - - [16/May/2023:09:37:40 +0000] "GET / HTTP/1.1" 200 3380 "-" "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)"
35.199.195.168 - - [16/May/2023:09:37:52 +0000] "GET / HTTP/1.1" 200 3380 "-" "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)"
35.199.193.200 - - [16/May/2023:09:37:55 +0000] "GET / HTTP/1.1" 200 3380 "-" "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)"
35.199.206.3 - - [16/May/2023:09:38:04 +0000] "GET / HTTP/1.1" 200 3380 "-" "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)"
35.199.218.135 - - [16/May/2023:09:38:16 +0000] "GET / HTTP/1.1" 200 3380 "-" "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)"
35.199.215.230 - - [16/May/2023:09:38:37 +0000] "GET / HTTP/1.1" 200 3380 "-" "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)"
35.199.199.70 - - [16/May/2023:09:38:40 +0000] "GET / HTTP/1.1" 200 3380 "-" "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)"
```

## VM を止める
- 停止を正常に認識しました。
![スクリーンショット 2023-05-16 18.58.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569971/a17ef04b-1ab2-b9b0-c581-588065e58601.jpeg)

## まとめ
"private uptime checks" について、検証しました。

監視は、Cloud に最も頼りたい機能の1つです。

なぜなら、これまで何度も、on-prem で「監視」の「監視」の「監視」を構築してきたからです。冗長化を重ねる。

on-prem 側のチェックにも活用できれば最高ですが、現時点では出来ないような感じがします。調べて追記します。

時間は有限です。頼れるところは、積極的に活用していきます。