SAE容器提供了臨時的應用運行環境,通常無需營運。為了方便定位和排查線上問題,您可以使用SAE控制台提供的簡易版Webshell,查看並調試容器。SAE容器的基礎鏡像是面嚮應用運行時的且暫時狀態的,因此您無需在鏡像中啟動SSH服務,僅需帶有可執行檔/bin/bash,同時建議您帶上所需的營運工具以便排查。
使用限制
Webshell不支援Windows鏡像。
使用說明
代碼執行、Webshell運行環境歸屬使用者。
應用的網路環境
SAE應用置於自建的VPC網路,並提供了命名空間功能,可以將中介軟體層面的服務調用進行邏輯隔離。命名空間與VPC內的vSwitch為綁定關係,一個命名空間僅能對應一個vSwitch,一個vSwitch可以對應多個命名空間,即VPC內的IP地址為區域網路地址,不同VPC內的應用無法互相訪問。命名空間主要用於中介軟體邏輯隔離,不同命名空間內的應用在中介軟體層面是隔離的,如服務發現和配置下發等。
關於VPC的原理和產品介紹,請參見產品架構。
鑒於VPC的產品特性和當前SAE的產品特性,容器無法直接觸達VPC外的服務(OSS、鏡像服務等阿里雲產品除外)。在沒有額外配置的情況下,您的容器單獨運行在網路環境,因此您無法直接接觸SAE應用程式容器。
容器無法觸達公網的程式碼範例如下。

容器內如果需要訪問公網服務,須購買NAT,並在VPC內配置vSwitch的SNAT規則。具體操作,請參見配置NAT Gateway使SAE應用能訪問公網。
SNAT規則通過配置SNAT條目,可以實現VPC內無公網IP的執行個體通過NAT Gateway綁定的EIP來訪問公網,從而能夠調用公網類產品,擷取公網資源。更多資訊,請參見公網類產品。
構建鏡像的方法
基於阿里雲Container Registry,SAE整合了構建鏡像和管理鏡像的功能。用於構建的基礎鏡像為centos:7,並為您配置了語言與編碼方式、時區和OpenJDK等運行環境。
容器存在的目的是為了讓應用運行起來,SAE不可能以佔用所有使用者的運行資源為代價,整合過多的工具。因此,若您對容器內工具有更多需求,請自行構建鏡像或者按需從OSS擷取。更多資訊,請參見製作Java鏡像。
查看Webshell
使用Webshell完成基本營運的操作步驟如下:
登入SAE控制台,在左側導覽列選擇,然後選擇目標地區和目標命名空間,最後單擊目標應用ID。
在應用基礎資訊頁面,單擊執行個體列表頁簽。
在執行個體列表頁簽的預設分組地區,單擊目標執行個體操作列的Webshell。

可選:開啟Webshell後,您可以單擊視窗右上方的
表徵圖,全螢幕顯示視窗。按需在Webshell視窗執行命令,查看並調試您的容器。
更多資訊,請參見擷取執行個體內部中繼資料和診斷應用。
擷取執行個體內部中繼資料
您通過SAE成功部署應用後,即可擷取執行個體的基本中繼資料,包括安全性群組ID、VPC ID和vSwitch ID。
執行個體中繼資料項 | 說明 |
/etc/podinfo/sgId | 安全性群組ID中繼資料所在的路徑。 |
/etc/podinfo/vpcId | VPC ID中繼資料所在的路徑。 |
/etc/podinfo/vswitchId | vSwitch ID中繼資料所在的路徑。 說明 如果有多個vSwitch,將以半形逗號(,)分隔開多個vSwitch ID。 |
您可以登入SAE控制台,在Webshell視窗執行以下命令,驗證安全性群組ID、VPC ID和vSwitch ID的中繼資料資訊。
執行以下命令,進入
podinfo目錄內。cd /etc/podinfo/說明如果執行該命令時顯示
can't cd to /etc/podinfo/報錯,您可以選擇重啟執行個體或重新部署應用解決該問題。執行以下命令,查看執行個體中繼資料資訊的所有檔案。
ls預期輸出。
sgId vpcId vswitchId按需執行以下命令,驗證執行個體內部相應的中繼資料資訊。
擷取安全性群組ID。
cat sgId預期輸出。
sg-2ze4ddm2rqgenvcx****sh-4.2#擷取VPC ID。
cat vpcId預期輸出。
vpc-2zeqku2oevokwm66b****sh-4.2#擷取vSwitch ID。
cat vswitchId預期輸出。
vsw-2zewmy4ynhljytzhu****sh-4.2#
一鍵複製安裝命令
您可以登入SAE控制台,在Webshell視窗按照以下步驟按需安裝命令。
在Webshell中安裝的命令,會在下次容器重建後消失。對於常用的命令,建議您在製作鏡像時提前安裝。
單擊Webshell視窗右上方的
表徵圖。在彈出的一鍵複製安裝命令對話方塊內,按需選擇以下安裝組件,預覽命令並單擊複製。
安裝openssh:OpenSSH是SSH(Secure Shell)協議的免費開源實現,OpenSSH提供了服務端背景程式和用戶端工具,用來加密遠程式控制件和檔案傳輸過程中的資料。您可以通過安裝OpenSSH,藉助遠端偵錯的能力實現SSH遠程登入以及SFTP、SCP上傳下載檔案的功能,進而方便您臨時調試SAE的某個應用執行個體。
安裝net-tools(netstat):netstat命令用於監控網路狀態,可以顯示路由表、實際的網路連接以及每一個網路介面裝置的狀態資訊。
安裝iproute(ss):Socket Statistics(ss)命令用於擷取Socket統計資訊,雖然與netstat命令擷取的內容類別似,但是ss命令能夠快速顯示更詳細的有關TCP和串連狀態的資訊。
在Webshell視窗粘貼已複製的命令並斷行符號執行。
診斷應用
通過常規檢查診斷應用
診斷SAE應用程式套件括常規檢查和上傳下載搜集的日誌兩種方式。其中,常規檢查方法眾多。以Java應用為例,有進程檢查、線程以及JVM的健康狀態檢查。操作樣本如下。
執行以下命令,檢查應用的Java進程是否存在。
ps -ef | grep java說明容器內通常使用主進程啟動應用,如果應用被停止,則容器也會退出,SAE自動將退出的容器重新啟動,防止業務中斷。
如果進程不存在,請執行
dmesg | grep -i kill命令檢查OOM日誌。如果日誌存在,表示應用的進程被停止,需要檢查工作目錄下
hs_err_pid{PID}.log記錄檔,並定位具體原因。
Java類型應用線上分析還可以使用阿里巴巴開源軟體Arthas,建議在測試鏡像中整合Arthas工具進行常規診斷。Arthas能夠即時查看Java類載入情況,方便觀察方法出參、入參和環境變數等。
串連公網。
具體操作,請參見配置NAT Gateway使SAE應用能訪問公網。
執行以下命令,下載Arthas。
sudo wget https://alibaba.github.io/arthas/arthas-boot.jar執行以下命令,運行Arthas。
sudo java -jar arthas-boot.jar
通過日誌上傳下載診斷應用
如果常規檢查不能滿足您的需求,推薦您將容器內收集到的日誌上傳到雲端,並下載到本地進行分析。
檔案不超過10 MB:您可以直接使用Webshell內建的功能。具體操作,請參見使用Webshell實現檔案上傳下載。
檔案超過10 MB:您可以使用阿里雲OSS服務。OSS服務連通阿里雲下所有網路環境,因此您可以使用該服務進行日誌上傳下載,具體操作步驟如下。
在容器內部安裝OSS命令列工具。具體操作,請參見安裝OSS命令列工具。
本文中以64位CentOS系統的使用者為例,在沒有打通公網的情況下您可以選擇在本地下載,然後將這個檔案上傳到OSS,然後擷取OSS的VPC內網地址並下載檔案。
執行以下命令,下載ossutil。
sudo wget http://gosspublic.alicdn.com/ossutil/1.5.0/ossutil64執行以下命令,修改檔案執行許可權。
sudo chmod 755 ossutil64
配置所需的OSS命令列工具,並附上當前地區VPC內的Endpoint,填寫用於接收上傳檔案的帳號的AccessKey,查看已經建立的Bucket,檢查您的OSS服務是否可用。
說明請確保您的阿里雲帳號(不必是當前帳號,任意開通阿里雲OSS服務的帳號均可)已開通OSS服務。
建立Bucket。具體操作,請參見控制台建立儲存空間。
執行以下命令,建立設定檔,用於儲存OSS訪問資訊。
按照提示配置您的AccessKey、Endpoint資訊,無需填寫STS Token。
./ossutil64 config執行以下命令,列舉所有Bucket。
檢查帳號是否可用,如果報錯則配置錯誤。
./ossutil64 ls輸出樣本如下:
CreationTime Region StorageClass BucketName 2021-12-08 18:53:46 +0800 CST oss-cn-hangzhou Standard oss://test-bucket執行以下命令,建立一個用於上傳的類比記錄檔sae-app.log。
echo "Hello" > sae-app.log執行以下命令,上傳記錄檔至指定的Bucket。
./ossutil64 cp sae-app.log {bucket-address}範例程式碼如下:
./ossutil64 cp sae-app.log oss://test-bucket
結果驗證。
方式一:執行以下命令,查看已上傳的樣本檔案。
./ossutil64 ls oss://test-bucket輸出樣本如下:
LastModifiedTime Size(B) StorageClass ETAG ObjectName 2021-12-08 19:26:18 +0800 CST 6 Standard 09F7E02F1290BE211DA707A266F1**** oss://cri-55md3gmii09m****-chart/sae-app.log Object Number is: 1 0.047758(s) elapsed方式二:從OSS管理主控台或其他工具中找到您的記錄檔,下載到本地,並使用您熟悉的工具進行分析。