上一篇文章,是將 Cloud Logging 下載回 local,不過在扒 log 時發現 json log 其實閱讀難度不低。
從 Cloud Logging 上檢視記錄時,可以發現 MySQL slow query log 會有多行的資料,而 Cloud Logging 則是將將一行記錄轉成一個 json item:
這類資料還是不要轉為 JSON 比較容易閱讀 ….
上一篇文章,是將 Cloud Logging 下載回 local,不過在扒 log 時發現 json log 其實閱讀難度不低。
從 Cloud Logging 上檢視記錄時,可以發現 MySQL slow query log 會有多行的資料,而 Cloud Logging 則是將將一行記錄轉成一個 json item:
這類資料還是不要轉為 JSON 比較容易閱讀 ….
個人覺得 GCP 後端管理頁面很難操作,顯示方法也不直覺,所以決定把 Cloud Logging 上的資料全部拉回 local 來分析。
首先在 Cloud Logging 上面建立 filter 來篩選出需要的資料,以下範例是篩出 Cloud SQL 的 logs:
接下來透過 gcloud console 來組出命令,主要以 gcloud logging read
開始,在加入上圖的 filter ,最後選擇 log format :
gcloud logging read \ 'resource.type=cloudsql_database AND \ resource.labels.database_id="my-database" AND \ logName=("projects/my-project/logs/cloudsql.googleapis.com%2Fmysql.err" OR \ "projects/my-project/logs/cloudsql.googleapis.com%2Fmysql-general.log" OR \ "projects/my-project/logs/cloudsql.googleapis.com%2Fmysql-slow.log") AND \ timestamp>="2022-04-26T07:00:00Z" AND timestamp<="2022-04-26T20:00:00Z" ' \ --project=my-project \ --format=json > local-logs.json
在一般有視窗界面的環境下,安裝 google-cloud-sdk 以後執行 gcloud init
的話,gcloud 會自動開啟瀏覽器。但若是在 ssh 或是只有 console 的情況下則會開啟 w3m 或是其他不支援 JavaScript 的瀏覽器,導致驗證失敗。
若要在 console 下執行 gcloud init 可以加上 --no-launch-browser
參數:
Network diagnostic detects and fixes local network connection issues. Checking network connection...done. Reachability Check passed. Network diagnostic passed (1/1 checks passed). You must log in to continue. Would you like to log in (Y/n)? y Go to the following link in your browser: https://accounts.google.com/o/oauth2/auth?....... Enter verification code:
接著在自己的作業系統上開啟瀏覽器,貼上 gcloud 提供的驗證網址,驗證成功以後把代碼貼回 console 中即可完成身份驗證。
不曉得 GCP Cloud Functions 到底對 PHP 支援多少東西,畢竟很多功能需要安裝 extensions,因此寫個 script 列出環境中可用的 extensions:
<?php var_dump(get_loaded_extensions());
不過很意外得發現幾乎所有 extensions 都可以用:
Array
(
[0] => Core
[1] => date
[2] => libxml
[3] => openssl
[4] => pcre
[5] => sqlite3
[6] => zlib
[7] => bcmath
[8] => bz2
[9] => calendar
[10] => ctype
[11] => curl
[12] => dba
[13] => dom
[14] => enchant
[15] => hash
[16] => fileinfo
[17] => filter
[18] => ftp
[19] => gd
[20] => gettext
[21] => gmp
[22] => SPL
[23] => iconv
[24] => intl
[25] => json
[26] => ldap
[27] => mbstring
[28] => session
[29] => pcntl
[30] => PDO
[31] => standard
[32] => pdo_pgsql
[33] => pdo_sqlite
[34] => pgsql
[35] => Phar
[36] => posix
[37] => Reflection
[38] => mysqlnd
[39] => shmop
[40] => SimpleXML
[41] => soap
[42] => sockets
[43] => pdo_mysql
[44] => exif
[45] => sysvshm
[46] => tidy
[47] => tokenizer
[48] => xml
[49] => xmlreader
[50] => xmlrpc
[51] => xmlwriter
[52] => xsl
[53] => zend-test
[54] => zip
[55] => mysqli
[56] => cgi-fcgi
[57] => Zend OPcache
)
看了 example code,也可以使用 composer,這樣彈性非常大。搞不好可以把一些服務直接搬過去了。