Cloud Logging は GCP 内のリソース等で生成されるログを処理するためのサービスです。旧称は Google Stackdriver Logs です。Cloud Logging 自体は、Operations Suite という枠組みの一部という位置付けです。基本的な使い方を記載します。
gcloud および API の利用
書き込み (textPayload や jsonPayload がサポートされています)
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 を独自に作成することもできます。

ログは 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 なども指定できます。

記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- GKE における Node および Pod の autoscaling
Google Kubernetes Engine (GKE) における autoscaling について、用語の意味を整理します。 GKE の機能による Node の autoscaling GKE のクラスタには Standard と Autopilot の二種類が存在します。 Autopilot の場合は Node は Google によって管理されるため、自動で autoscaling され... - Snowflake におけるネットワーク関連の設定
本ページではネットワーク関連の設定について記載します。 Network Policy によるアクセス元 IP 制限 IPv4 で指定します。IPv6 は 2021/9/21 時点では利用できません。 allowed list で許可されていない IP は block されます。 allowed list が /24 等で指定されており、その一部を - VPC Service Controls に関する雑多な事項の整理
VPC Service Controls (VPC-SC) に関する雑多な事項を記載します。 Private Google Access の基本形 Private Google Access は外部 IP を持たない VM のための機能です。VPC の機能ですが、VPC-SC と関連するため基本事項を記載します。 [Private Google Access](ht - AWS IAM Role を GCP から STS 認証で利用する設定例
GCP から AWS IAM Role を利用するための設定例を記載します。 GCP Service Account の作成 Service Account を作成して Unique ID を確認します。 AWS IAM Role の作成 Trust relationship の設定は Web Identity を選択します。Identity Provider - Amazon Comprehend を GCP VPC 内から実行する設定の例 (Public Internet 接続なし)GCP DLP に相当する AWS サービスに Amazon Comprehend が存在します。GCP VPC 内から Public Internet を経由せずに利用する設定の例を記載します。 AWS VPC と GCP VPC の作成 クラウド 項目 値 AWS VPC region ap-northeast-1 AWS VPC CIDR 10.2.0.0/16 AWS ap-north




