啟用使用者鑑別問題除錯

啟用 platform-auth-service Liberty 除錯,以取得追蹤日誌來進行使用者鑑別問題除錯。

如果要使用 oc 用戶端來啟用除錯,請執行下列動作:

  1. 執行下列指令,以更新配置對映。 然後,更新配置對映並儲存。

     oc edit cm platform-auth-idp -n  ibm-common-services
    
     LIBERTY_DEBUG_ENABLED: "false"   << true
     LOG_LEVEL_AUTHSVC: info   <<debug
     LOG_LEVEL_IDMGMT: info     <<debug
     LOG_LEVEL_IDPROVIDER: info  <<debug
    
  2. 透過刪除 Pod 來重新啟動 auth-idp Pod。

     oc delete pod -l k8s-app=auth-idp -n namespace-common-services
    
  3. 等待 Pod 全部 4 個儲存器啟動。

     oc get pods -l k8s-app=auth-idp -n namespace-common-services
    

啟用 auth-idp Pod 儲存器的除錯日誌的步驟

  1. 以具有叢集管理者存取權的使用者身分登入 OpenShift Container Platform 主控台。

  2. 從導覽功能表中,按一下 配置 > ConfigMaps。

  3. 搜尋 platform-auth-idp

  4. 按一下 ... > 編輯

  5. LOG_LEVEL_IDPROVIDERLOG_LEVEL_AUTHSVCLOG_LEVEL_IDMGMT 參數值變更為 debug

     LIBERTY_DEBUG_ENABLED: "false" << true
     LOG_LEVEL_AUTHSVC: info <<debug
     LOG_LEVEL_IDMGMT: info <<debug
     LOG_LEVEL_IDPROVIDER: info <<debug
    
  6. 按一下提交

  7. 從導覽功能表中,按一下 工作量> Pod

  8. 找出 auth-idp 並刪除它。

  9. 按一下 ... > 動作 > 刪除 Pod

  10. 等一下 然後,在 Pod 窗格中檢查 auth-idp Pod 的狀態。 所有 Pod 的狀態必須在 備妥 欄位名稱下顯示為 4/4

  11. 重建問題。 共用所有 auth-idp Pod 日誌。 下列日誌可協助收集多個 auth-idp Pod 的容器日誌及 liberty 日誌,以收集 liberty 日誌。

cat MG-IDP-log.sh
#!/bin/bash
export NAMESPACE=ibm-common-services
export AUTHMGDIR=AuthidpLogs-$(date '+%y%b%dT%H-%M-%S')
mkdir -p $AUTHMGDIR
for pod in $(oc -n $NAMESPACE get pods -l component=auth-idp --no-headers -o custom-columns=name:.metadata.name); do
 echo "===== $pod ====="
 LIBDIR="$AUTHMGDIR/$pod/liberty"
 sudo mkdir -p $LIBDIR
 # Collect the liberty logs
 echo "===== $pod collect liberty logs           ====="
 oc -n $NAMESPACE cp $pod:/logs -c platform-auth-service $LIBDIR/logs
 echo "===== $pod collect liberty configuration  ====="
 oc -n $NAMESPACE cp $pod:/opt/ibm/wlp/usr/servers/defaultServer/ -c platform-auth-service $LIBDIR/defaultserver
 #collect the idp container logs
 echo "===== $pod collect container logs         ====="
 oc get pods -l component=auth-idp -n $NAMESPACE -o go-template='{{range $i := .items}}{{range $c := $i.spec.containers}}{{println $i.metadata.name $c.name}}{{end}}{{end}}' > $AUTHMGDIR/$pod/container-list.txt
 awk '{print "oc -n $NAMESPACE logs "$1" -c "$2"  -p > $AUTHMGDIR/$pod/"$1"_"$2"_previous.log && echo gathered previous logs of "$1"_"$2}' $AUTHMGDIR/$pod/container-list.txt | bash
 awk '{print "oc -n $NAMESPACE logs "$1" -c "$2"   > $AUTHMGDIR/$pod/"$1"_"$2".log && echo gathered logs of "$1"_"$2}' $AUTHMGDIR/$pod/container-list.txt | bash
done
echo;echo
echo "===== tar czf $AUTHMGDIR.tgz $AUTHMGDIR  and send the file for analysis ----"
echo;echo

附註:

取得 Openshift 環境的日誌

  1. 使用 Openshift Container 用戶端登入叢集。 如需相關資訊,請參閱 從指令行介面登入叢集

  2. 切換至已安裝基礎服務的專案。 在下列指令中,將 <namespace> 取代為用於專案的名稱空間:

    oc project <namespace>
    
  1. 取得 auth-idp Pod 名稱。

    oc get po | grep auth-idp
    

附註: 如果有多個 Pod 在執行中,請在指令中記下 Pod 名稱以使用這些 Pod。

  1. 逐一取得現行目錄的 Liberty 日誌。 在下列指令中,將 <podname> 取代為 Pod 名稱:

    oc rsync <podname>:/logs -c platform-auth-service
    

直接從 Docker 儲存器取得日誌

附註: 它偏好用於 IBM Cloud Private (ICP) 環境。

請遵循下列步驟來取得配置和追蹤日誌:

  1. 使用 OpenShift Container Platform 主控台或 cloudctl (如果已安裝) 數次來登入產品叢集,以產生日誌。

  2. 使用 Secure Shell (SSH) 登入主要節點。

  3. 取得 platform-auth 儲存器 ID。

    docker ps | grep platform-auth
    
  4. 將配置和日誌複製到主要節點上的資料夾。

    docker cp <container-id>:/config/configDropins/defaults auth-service_config
    docker cp <container-id>:/logs auth-service_logs
    
  5. 如果叢集中有多個主要節點,請針對所有其他主要節點重複步驟 2 到步驟 4。

  6. 從所有節點取得配置 (auth-service_config) 和日誌 (auth-service_logs) 資料夾。