2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CloudFunctionsでWEBサイトのSSL証明書の監視をしてみる

Last updated at Posted at 2021-12-25

この記事は?

謝辞

この記事でやること/やりたいこと

  • WEBサイトのSSL証明書監視をGCPで実装してみます。
    • 有効期限残りXX日(閾値)を下回ったらSlackに通知、がゴールです。
    • ここでは例として、google.comの証明書有効期限をチェックするようにしています。
  • イメージ図
    check_ssl_cert.png

出来上がったもの

所感

  • Monitoringで直接SSL証明書の有効期限ができると嬉しいなあ…
  • おそらく、CloudFuntcions→Logging→ログベースのアラートは良くない。
    • 本来
      • MonitoringAPIで直接メトリクス書き込むべき。
        • でないと、Monitoring側でメトリクス表示できなさそう。
        • 別途直していきます。
  • 残り有効期限何日、をSlackで通知したい。
  • とはいえ、プログラム万年初心者でも、こういったものをサクッと作れるのはGCPの良いところ。
    • 大変ありがたい。

前提

  • 課金設定済みのGCP環境があること。
  • 以下のGCPリソースの作成権限があり、APIが有効化されていること。
    • CloudScheduler
    • Pub/Sub
    • CloudFunctions
    • CloudLogging
    • CloudMonitoring
  • 通知用のSlackがあること。
    • Slackへの通知設定等はここでは割愛します。

要素

  • 1.CloudScheduler
    • JOBキック用。
    • Pub/Subへ連携します。
  • 2.Pub/Sub
    • CloudSchedulerとCloudFunctionsの橋渡し。
  • 3.CloudFunctions
    • Pub/Subから経由でCloudFuntcionsを実行します。
      • pythonでgoogle.comのSSL証明書有効期限をチェック。
      • 残り日数をCloudLoggingへ記録。
  • 4.CloudLogging
    • ログベースのアラートを仕掛ける。
  • 5.CloudMonitoring
    • 通知先にSlackを指定。
      • ここでは割愛します。
  • 6.Slack
    • Monitoring側から通知を受信。

やること

1.CloudScheduler

JOBキック用にCloudSchedulerを設定します。

以下のようにJOBを作成します。

1.スケジュールの定義する。

  • 説明
    • よしなに。極力分かりやすい命名規則に。
  • 頻度
    • 毎日00:00に実行したいので以下のように設定しています。
      0 0 * * *
      
    • タイムゾーン
      • 日本在住なのでJSTで。

image.png

2.実行内容を構成する。

  • ターゲットタイプ
    • Pub/Sub
  • CloudPub/Subトピック
    • ここでは、check_web_ssl_expire_for_google_topicというトピックを作成しています。
      image.png
  • メッセージ本文
    • 今回はメッセージは使用しないのですが、必須項目なのでcheck_web_ssl_expireと入力しています。

image.png

3.Configure the job's retry (optional)

  • リトライ回数、リトライ時間等の設定。
  • オプションなので、今回はそのまま。

image.png

2.Pub/Sub

  • 今回、上記1のCloudScheduler設定時にPub/Subのトピックも作成したので不要です。

3.CloudFunctions

CloudFunctionsで関数の作成を行います。

3-1.構成

  • 関数名
    • 任意の値を入力。ここではcheck_web_ssl_expire_test2としています。
  • リージョン
    • 実行したいリージョンを選択。ここではus-central1にしています。
  • トリガー
    • トリガーのタイプ
      • Cloud Pub/Subを選択。
    • Cloud Pub/Subのトピック
      • 先に作成したものを選択。ここではcheck_web_ssl_expire_for_google_topicを選択します。
  • ランタイム、ビルド、接続、セキュリティの設定
    • 今回はデフォルトのまま次へ。

image.png

3-2.関数の作成

  • ランタイム
    • Python 3.9 を選択。
  • エントリ ポイント
    • main と入力
  • ソースコード

image.png

4.CloudLogging

ログエクスプローラーにてアラートを作成します。
まずはログエクスプローラーで対象のログを検索します。

  • クエリ
logName="projects/<プロジェクト名>/logs/check_web_ssl_expire_remaining_days_log"
textPayload <= 72
  • アラートを作成を選択。
    image.png

    • Alert details
      • Alert Name
        • 通知名を入力。
      • ドキュメント
        • 通知を見て分かりやすいように入力。
    • Choose logs to include in the alert
      • 検索条件が既に入力されているので、そのまま次へ。
    • う.
    • Set time between notifications
      • 通知の間隔を任意のものを選択し、次へ。
    • Who should be notified?
      • 通知先の選択。
        • ここでは既にCloudMonitoringへ仕込んでおいた通知先設定を使用。
          image.png
  • ログベースのアラートポリシー設定イメージ
    image.png

通知テスト.

  • Cloud SchedulerからJOBを実行.
    image.png
  • Slackで受信を確認。  
            image.png
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?