前提
pythonのgcpのsdkを使ってk8sのクラスタで吐かれたGCPのログを取得したいのですが、web上のコンソールとapiで取得したログに違いがあります。
GCPコンソール
https://console.cloud.google.com/logs/query
pythonのapiライブラリ
https://googleapis.dev/python/logging/latest/index.html
GCPのコンソール上で実行するクエリ
resource.type="k8s_container" resource.labels.namespace_name="xxx-namespace" resource.labels.container_name="xxx-container" timestamp>="2022-09-06" timestamp<="2022-09-08"
APIで取得する場合
python
from google.cloud import logging_v2 project_id = "xxx" filter = "resource.type:k8s_container and resource.labels.namespace_name:xxx-namespace and resource.labels.container_name:xxx-container and timestamp>=2022-09-06 and timestamp<=2022-09-08" logging_client = logging_v2.Client(project=project_id)for log in logging_client.list_entries(filter_=filter): write_file("gcp-log.log", log.payload)
上記のスクリプトでいくつかのログは取得できるのですが、GCPのコンソールのクエリで上記のget_logの引数に指定しているfilterと同じ条件でクエリするとapiで取得できなかったログが表示されています。
確認したこと
apiでは取得できず、GCPのコンソール上では表示されているログとどちらの手段でも取得できるログにresource.labels...やproject_idなどの違いも見当たりませんでした。
version
google-cloud-logging: 3.2.2
どなたかわかる方がいらっしゃいましたらご教授おねがいします。🙇♂️

0 コメント