目次
AWS と Google Cloud の資格試験の勉強中
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 の autoscalingGoogle 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