SAE容器提供了臨時的應用運行環境,通常無需運維。為了方便定位和排查線上問題,您可以使用SAE控制臺提供的簡易版Webshell,查看并調試容器。SAE容器的基礎鏡像是面向應用運行時的且暫時狀態的,因此您無需在鏡像中啟動SSH服務,僅需帶有可執行的/bin/bash
,同時建議您帶上所需的運維工具以便排查。
使用限制
Webshell不支持Windows鏡像。
應用的網絡環境
SAE應用置于自建的VPC網絡,并提供了命名空間功能,可以將中間件層面的服務調用進行邏輯隔離。命名空間與VPC內的vSwitch為綁定關系,一個命名空間僅能對應一個vSwitch,一個vSwitch可以對應多個命名空間,即VPC內的IP地址為局域網地址,不同VPC內的應用無法互相訪問。命名空間主要用于中間件邏輯隔離,不同命名空間內的應用在中間件層面是隔離的,如服務發現和配置下發等。
關于VPC的原理和產品介紹,請參見產品架構。
鑒于VPC的產品特性和當前SAE的產品特性,容器無法直接觸達VPC外的服務(OSS、鏡像服務等阿里云產品除外)。在沒有額外配置的情況下,您的容器單獨運行在網絡環境,因此您無法直接接觸SAE應用容器。
容器無法觸達公網的代碼示例如下。
容器內如果需要訪問公網服務,須購買NAT,并在VPC內配置vSwitch的SNAT規則。具體操作,請參見配置NAT網關使SAE應用能訪問公網。
SNAT規則通過配置SNAT條目,可以實現VPC內無公網IP的實例通過NAT網關綁定的EIP來訪問公網,從而能夠調用公網類產品,獲取公網資源。更多信息,請參見公網類產品。
構建鏡像的方法
基于阿里云容器鏡像服務,SAE集成了構建鏡像和管理鏡像的功能。用于構建的基礎鏡像為centos:7
,并為您配置了語言與編碼方式、時區和OpenJDK等運行環境。
容器存在的目的是為了讓應用運行起來,SAE不可能以占用所有用戶的運行資源為代價,集成過多的工具。因此,若您對容器內工具有更多需求,請自行構建鏡像或者按需從OSS獲取。更多信息,請參見制作Java鏡像。
查看Webshell
使用Webshell完成基本運維的操作步驟如下:
登錄SAE控制臺。
在左側導航欄,選擇 ,在頂部菜單欄選擇地域,然后單擊具體應用名稱。
在應用基本信息頁面,單擊實例部署信息頁簽。
在實例部署信息頁簽的默認分組區域,單擊目標實例操作列的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網關使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管理控制臺或其他工具中找到您的日志文件,下載到本地,并使用您熟悉的工具進行分析。