2013-07-20 41 views
0

我正在使用此庫的修改版本(https://github.com/kamermans/HAProxyAPI)連接到我的所有負載均衡器實例。 但是,要知道所連接的服務器是活動實例還是備份實例,我需要從統計信息中尋找'bck'屬性。 (我無法使用:$ loadbalancer ['haproxy_stats'] - > info-> line-> data-> bck)訪問PHP保護的對象屬性(haproxy)

請注意,此屬性爲:$ loadbalancer ['haproxy_stats'] - > health-> backup。不是我需要的那個,這隻表示備份服務器是否存在於此負載均衡器中。

如何訪問此屬性?示例Haproxy Stats來自:HAProxy_Stats :: get($ exec) - > getServiceStats($ interface,$ server);示例代碼如下:HAProxy_Stats :: get($ exec) - > getServiceStats($ interface,$ server);

結果(的print_r)看起來像這樣:

HAProxy_Stats_Service對象 ( [信息] = > HAProxy_Stats_Info對象 ( [圖:保護] = >陣列 ( [pxname] = > proxy_name [svname] = > service_name [weight] = > weight [pid] = > process_id [iid] = > proxy_id [SID] = >的service_id [跟蹤] = >跟蹤 [型] = >類型 )

 [type] => 2 
     [proxy_name] => core_loadbalancer 
     [service_name] => Core03 
     [process_id] => 1 
     [proxy_id] => 2 
     [service_id] => 3 
     [weight] => 1 
     [tracked] => 
     [line:protected] => HAProxy_Stats_Line Object 
      (
       [data:protected] => Array 
        (
         [pxname] => core_loadbalancer 
         [svname] => Core03 
         [qcur] => 0 
         [qmax] => 0 
         [scur] => 0 
         [smax] => 0 
         [slim] => 20000 
         [stot] => 0 
         [bin] => 0 
         [bout] => 0 
         [dreq] => 
         [dresp] => 0 
         [ereq] => 
         [econ] => 0 
         [eresp] => 0 
         [wretr] => 0 
         [wredis] => 0 
         [status] => UP 
         [weight] => 1 
         [act] => 0 
         [bck] => 1 
         [chkfail] => 6 
         [chkdown] => 0 
         [lastchg] => 523133 
         [downtime] => 0 
         [qlimit] => 
         [pid] => 1 
         [iid] => 2 
         [sid] => 3 
         [throttle] => 
         [lbtot] => 0 
         [tracked] => 
         [type] => 2 
         [rate] => 0 
         [rate_lim] => 
         [rate_max] => 0 
         [check_status] => L4OK 
         [check_code] => 
         [check_duration] => 0 
         [hrsp_1xx] => 0 
         [hrsp_2xx] => 0 
         [hrsp_3xx] => 0 
         [hrsp_4xx] => 0 
         [hrsp_5xx] => 0 
         [hrsp_other] => 0 
         [hanafail] => 0 
         [req_rate] => 
         [req_rate_max] => 
         [req_tot] => 
         [cli_abrt] => 0 
         [srv_abrt] => 0 
         [] => 
        ) 

      ) 

    ) 

目的繼續,但有字符限制...

回答

0

這將已經得到了更快的回答,如果一個issue was created for it,但比我從來沒有想過更好的遲到:)

這確實是正確的屬性:

$loadbalancer['haproxy_stats']->health->backup 

但是,如果您正在檢查負載均衡器BACKEND的統計信息,它只會返回備份節點的數量。如果你想知道,如果個別節點是主動或備份,您將需要遍歷他們是這樣的:

foreach ($stats->getBackendNames() as $backend) { 
    foreach ($stats->getServerNames($backend) as $server) { 
     $service = $stats->getServiceStats($backend, $server); 
     echo "$backend:$server\n"; 
     echo " Active: {$service->health->active}\n"; 
     echo " Backup: {$service->health->backup}\n"; 
     echo " Health: {$service->health->status}\n\n"; 
    } 
} 

這將產生這樣的輸出:

foo-cloud:FRONTEND 
    Active: 
    Backup: 
    Health: OPEN 

production-nodes:hiphop-node01-us.foocloud.com 
    Active: 1 
    Backup: 0 
    Health: UP 

production-nodes:apache-node01-us.foocloud.com 
    Active: 0 
    Backup: 1 
    Health: UP 

production-nodes:hiphop-node02-us.foocloud.com 
    Active: 1 
    Backup: 0 
    Health: UP 

production-nodes:apache-node02-us.foocloud.com 
    Active: 0 
    Backup: 1 
    Health: MAINT 

production-nodes:BACKEND 
    Active: 2 
    Backup: 2 
    Health: UP 

stats:FRONTEND 
    Active: 
    Backup: 
    Health: OPEN 

stats:BACKEND 
    Active: 0 
    Backup: 0 
    Health: UP