モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

Cloud Logging の基本的な使い方

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2021/05/08
最終更新最終更新
2023/12/06
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    AWS と Google Cloud の資格試験の勉強中

    0
    ステッカーを贈るとは?

    Cloud Logging は GCP 内のリソース等で生成されるログを処理するためのサービスです。旧称は Google Stackdriver Logs です。Cloud Logging 自体は、Operations Suite という枠組みの一部という位置付けです。基本的な使い方を記載します。

    gcloud および API の利用

    書き込み (textPayloadjsonPayload がサポートされています)

    gcloud logging write my-test-log 'A simple entry.'
    gcloud logging write --payload-type=json my-test-log '{ "message": "My second entry", "weather": "partly cloudy"}'
    

    読み出し

    gcloud logging read 'resource.type=global'
    gcloud logging read 'resource.type=global' --freshness 10d --limit 2
    

    削除

    gcloud logging logs delete my-test-log
    

    API の利用 entries.list (Chrome ブラウザから直接 EXECUTE することもできます)

    curl -sS -XPOST -H 'Content-Type: applicaiton/json' \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://logging.googleapis.com/v2/entries:list \
    -d @req.json
    

    req.json

    {
      "resourceNames": [
        "projects/my-project-xxxx"
      ],
      "filter": "resource.type=global",
      "orderBy": "timestamp desc"
    }
    

    上記 API は、例えば Terraform モジュールが利用するライブラリでも利用されています。

    書き込み

                res = self.api.entries().write(body=body).execute()
    ...
    
            return {
                'timestamp': {'seconds': int(time.time())},
                'insertId': record['etag'],
                'jsonPayload': {
                    'requestMetadata': {'callerIp': record.get('ipAddress')},
                    'authenticationInfo': {
                        'callerType': record['actor'].get('callerType'),
                        'principalEmail': record['actor'].get('email')
                    },
                    'methodName': record['events'][0]['name'],
                    'parameters': record['events'][0].get('parameters'),
                    'report_timestamp': self.get_time_dict(record)
                },
                'resource': {'type': 'global'}
            }
    

    読み出し

            query = {
                'orderBy': 'timestamp desc',
                'pageSize': 1,
                'resourceNames': [self.project_id],
                'filter': 'logName={}'.format(destination)
            }
            log = self.api.entries().list(body=query).execute()
    

    ログ エクスプローラについて

    Cloud Logging は書き込まれたログをルーティングして、既定では以下の二つの ログバケット のいずれかに格納します。

    • _Required → 400日の保持期間を持ちます。GCP のリソース作成時のログなどが書き込まれます。
    • _Default → 30日の保持期間を持ちます。API で書き込んだログはこちらに格納されます。料金を支払えば保持期間を延長設定できます。

    既定の二つの Log Sink に加えて、Pub/Sub や Cloud Storage、BigQuery にログを格納するための Log Sink を独自に作成することもできます。

    Routing and storage overview

    ログは tail -f コマンドのように、ストリーミング確認できます。

    「ストレージによるスコープ」を選ぶことで Log Sink を選択できます。「範囲を絞り込む」をクリックします。

    上記 _Required_Default 以外の Log Sink を利用している場合には、明示的に選択しないと表示されないことがあるため注意します。

    Filter 結果を別の場所に Export する Log Sink の作成

    Log Sink は「filter と destination」を設定値として持ちます。Destination には、別のプロジェクトの Log Bucket や Pub/Sub Topic を指定できます。

    以下の例では、Cloud Identity から組織のログとして取り込んだログを、Log Sink で別の場所に流し込みます。

    参考ページ: Storing your organization's logs in a log bucket

    Destination

    Destination として Log Bucket を作成してみます。

    gcloud logging buckets create my-log-bucket --location=global --project=myproject-20210411
    

    _Default_Required 以外に一つ追加されたことが確認できます。

    gcloud logging buckets list --project=myproject-20210411
    
    LOCATION  BUCKET_ID      RETENTION_DAYS  LIFECYCLE_STATE  LOCKED  CREATE_TIME                     UPDATE_TIME
    global    _Default       30              ACTIVE
    global    _Required      400             ACTIVE           True
    global    my-log-bucket  30              ACTIVE                   2021-08-02T13:34:03.406038292Z  2021-08-02T13:34:03.406038292Z
    

    Sink

    組織ID を確認しておきます。

    gcloud organizations list
    

    組織のログを対象とするためには --organization オプションを指定します。

    連携される Cloud Identity ログのうち、パスワード変更のログをフィルタしてみます。

    組織のログのみを対象とし、組織配下のプロジェクトのログを対象としたくないため、--include-children オプションは指定しません

    gcloud logging sinks create my-log-sink \
    logging.googleapis.com/projects/myproject-20210411/locations/global/buckets/my-log-bucket \
    --log-filter='protoPayload.metadata.event.eventName="password_edit"' \
    --organization=111111111111
    

    作成されたフィルタを確認します。

    gcloud logging sinks list --organization=111111111111
    gcloud logging sinks describe my-log-sink --organization=111111111111
    

    サービスアカウントの情報をメモしておきます。

    writerIdentity: serviceAccount:o111111111111-523844@gcp-sa-logging.iam.gserviceaccount.com
    

    IAM

    ログバケットが存在する myproject-20210411 プロジェクトにおいて、サービスアカウント o111111111111-523844@gcp-sa-logging.iam.gserviceaccount.com に対して、「Logs Buckets Writer」ロールを付与します。

    動作検証

    確かにログが連携されることを、プロジェクト myproject-20210411 の Cloud Logging で確認します。

    Cloud Console

    上記の gcloud コマンドによる操作は Cloud Console から行なうこともできます。

    gcloud と同様に、destination については Pub/Sub なども指定できます

    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    AWS と Google Cloud の資格試験の勉強中

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事