作者isolatorAY (Isolator_AY)
看板PHP
標題[請益] 解析container stats與log
時間Sun Aug 7 18:07:58 2022
最近在嘗試透過php curl抓取docker remote api傳出的JSON顯示在自己的網頁上,但是遇
上一些問題
我是利用docker composer同時啟動兩個container,分別是nginx 1.23與php 7.4-fpm
第一個問題是
ip/containers/$containerID/logs?stdout=true
在抓nginx的log可以看到一些資訊,但是從php容器得到的卻是空字串
第二個問題是
ip/containers/$containerID/stats
直接丟瀏覽器網址欄是持續進行每秒更新一次的..呃..是叫streaming嗎?
利用跟前面取得log、容器列表等等同樣的curl處裡方式卻會直接得到一個空值字串,請問
這種要如何正常的解析呢?
另外就是有嘗試利用網路上的JSON parser先解析直接丟瀏覽器得到的JSON 資料,發現除了
最開始的第一筆資料外,後續更新的都會在"precpu_stats"中包含了前一次的percpu_usage
,而網路上的JSON parser會將這裡標記為語法錯誤
請問這種是不是用php json_decode()就會無法轉換成陣列?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.129.183 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1659866880.A.F6B.html
1F:→ zx4109: 有 sample code 嗎? 08/13 01:06
2F:→ zx4109: 所以有兩個 API: log / stats ? 08/13 01:07
3F:→ zx4109: 然後你的意思是在 PHP 取不到 nginx 的 access log 08/13 01:11
4F:→ isolatorAY: 第一個問題解決了,只要URL後面加上detail=true就好 08/17 13:50
5F:→ isolatorAY: 第二個問題的程式大致上是這樣 08/17 13:52
6F:→ isolatorAY: $url=$ip."containers/$dockerID/stats"; 08/17 13:53
7F:→ isolatorAY: $ch=curl_init(); 08/17 13:57
8F:→ isolatorAY: curl_setopt()有四個參數,returntransfer=true 08/17 13:57
9F:→ isolatorAY: timeout=50 08/17 13:57
10F:→ isolatorAY: url=$url 08/17 13:57
11F:→ isolatorAY: httpheader contenttype,accept都是application/json 08/17 13:57
12F:→ isolatorAY: $output=curl_exec($ch) 08/17 13:58
13F:→ isolatorAY: var_dump($output)得到bool(false) 08/17 13:58