SAS 9

SAS 系統管理 (109)

教學目標

初步了解如何解決 SAS Visual Analytics 伺服器重新啟動之後的錯誤訊息。

重點概念

首先當我們重新啟動 SAS Visual Analytics 伺服器之後,進行登入之後發現「Service: unknown >> unknown」的錯誤訊息時,主要原因是 SAS Content Server 異常終止,也就是並非使用正常的腳本和服務,就可能會發生此錯誤,若要解決此問題,請執行以下步驟:

  1. 停止 SAS Visual Analytics 伺服器。
  2. 請將「/sas/config/Lev1/AppData/SASContentServer/Repository/workspaces/default/」中的「index」目錄重新命名或刪除。
  3. 重新啟動 SAS Visual Analytics 伺服器。

此時 SAS Visual Analytics 伺服器將會自動重新建立「index」目錄,但是若發生沒有正常建立「index」目錄的情況,則很有可能是 SAS Content Server 啟動的問題

接著所謂 SAS Content Server 主要是 SAS Web Infrastructure Platform Server 的一部分,其是一個儲存內容的儲存庫,它在啟動 SAS Web Application Server 時啟動,至於它的啟動日誌檔主要是在「/sas/config/Lev1/Web/Logs/SASServer1_1」中,當發生問題時則我們必須先查看啟動日誌檔,再根據日誌檔的錯誤資訊試著解決問題,此外建議參考 SAS Content Server 官方文件 查看是否有相關的解決方式,但是不一定會有相關解決方式。

再來我們從官方文件中的錯誤訊息能夠發現 Jackrabbit 的關鍵字,因此可以假設 SAS Content Server 主要是以 Apache Jackrabbit 內容儲存庫為基礎所建立的 SAS 內容伺服器,所謂 Jackrabbit 主要是內容儲存庫,其是完全符合 Java API 技術的內容儲存庫,內容存儲庫主要是分層內容儲存庫,支援結構化和非結構化內容、全文搜索、版本控制、…等功能。所以我們應該能夠根據 SAS Content Server 的錯誤訊息參考 Jackrabbit 官方文件查看是否有相關的解決方式,像是在 Jackrabbit 中的儲存庫鎖定機制能夠確保只有一個實例打開同一個儲存庫,預設情況下當啟動存儲庫時 Jackrabbit 會嘗試在儲存庫的主目錄中建立名為「.lock」的檔案,並使用本機檔案鎖保護它,此時若儲存庫已在使用中,則會失敗,通常是日誌檔的異常項目之一,像是「Unable to create or lock file /sas/config/Lev1/AppData/SASContentServer/Repository/.lock: Permission denied: Permission denied」或「ERROR org.apache.jackrabbit.core.RepositoryImpl - failed to start Repository: Unable to create or lock file」等錯誤訊息。

最後因為我們從 SAS Content Server 的啟動日誌檔發現上述錯誤訊息,所以推論因為「/sas/config/Lev1/AppData/SASContentServer/Repository/」中的「.lock」檔無法被目前啟動 SAS Visual Analytics 伺服器的使用者存取,以至於導致 SAS Content Server 無法再啟動時自動重新建立 「index」目錄,更進一步導致 SAS Visual Analytics 伺服器出現「Service: unknown >> unknown」的錯誤訊息,因此我們需要先移除「.lock」檔再重新啟動 SAS Visual Analytics 伺服器,以確保 SAS Content Server 會在啟動時自動重新建立「index」目錄,以利 SAS Visual Analytics 伺服器正常使用。

相關資源

SAS 系統管理 (108)

教學目標

初步了解 SAS 平台中日誌事件的基本概念。

重點概念

首先許多企業在選擇導入解決方案時,解決方案的日誌事件維運管理機制會是非常關鍵的考量因素,而在 SAS 9 平台中網站應用程式伺服器日誌事件主要以 Log4j 為主,而有許多非網站應用程式伺服器日誌事件相關的記錄檔則預設不是以 Log4j 為主,相關伺服器的日誌事件相關的記錄檔位置請參考下表。

伺服器 記錄檔位置
SAS Metadata Server Lev1/SASMeta/MetadataServer/Logs
SAS Object Spawner Lev1/ObjectSpawner/Logs
SAS OLAP Server Lev1/SASApp/OLAPServer/Logs
SAS Pooled Workspace Server Lev1/SASApp/PooledWorkspaceServer/Logs
SAS Stored Process Server Lev1/SASApp/StoredProcessServer/Logs
SAS/SHARE Server Lev1/ShareServer/Logs
SAS/CONNECT spawner Lev1/ConnectSpawner/Logs
SAS DATA Step Batch Server Lev1/SASApp/BatchServer/Logs
SAS Web InfrastructurePlatform Data Server Lev1/WebInfrastructurePlatformDataServer/Logs

接著 SAS 日誌記錄工具是一個有彈性的框架,我們能夠透過收集,分類和過濾將日誌事件進行不同的輸出,同時日誌事件支援診斷問題,效能和容量管理以及稽核和法規遵循的客製參數設定,我們能夠透過分層命名系統對日誌事件進行分類,以利我們能夠產生廣泛或細化等級別的日誌事件,以及將日誌事件輸出至不同目標,像是固定檔案,滾動檔案,作業系統工具,客戶端應用程式,資料庫資料表,訊息佇列和自定義的 Java 類別,而對於每個輸出目標,我們能夠指定以下記錄檔工具的元件,分別為:

  1. 日誌事件的輸出等級,像是 TRACE、DEBUG、INFO、WARN、ERROR 和 FATAL 。
  2. 日誌事件的資訊格式,像是資料類型,資料順序以及資料格式。
  3. 日誌事件的標準過濾,像是診斷等級別和資訊內容。

此外我們更能夠動態調整記錄等級別,無需啟動和停止程序,以及透過應用程式回應測量 (Application Response Measurement, ARM) 產生與效能相關的日誌事件。

再來若要使用 SAS 日誌記錄工具,則我們必須設定日誌的記錄環境,主要有以下三步驟,分別為:

  1. 我們能夠透過設定 XML 檔案或使用SAS 程式語言元素來定義日誌記錄的設定,若執行計劃部署,則會為 SAS 伺服器提供日誌記錄設定檔案。
  2. 我們若要使用設定檔案,請指定 LOGCONFIGLOC = system 選項以啟用日誌記錄,若執行計劃部署,則此系統選項將包含在 SAS 伺服器中的設定檔案中。
  3. 我們若要客製化程式,則可以透過日誌記錄工具輸出不同日誌事件的格式,以及不同輸出方式,像是以不同日期或以檔案大小切檔。

而當我們的日誌記錄環境設定之後,SAS 日誌記錄工具將會開始處理以下步驟,分別為:

  1. SAS 程序發出日誌事件,每個事件皆會包括以下屬性,分別為訊息類別的名稱、診斷級別以及描述事件內容的資訊。
  2. 日誌記錄工具接收日誌事件,並且根據事件的名稱屬性確定要將其分配給哪個記錄器。
  3. 日誌事件的等級別與日誌記錄設定中為記錄器指定的門檻值進行比較,若事件的等級等於或高於指定的門檻值,則繼續處理,反之低於門檻值,則忽略該事件。

當完成以上步驟之後,日誌事件會分配給日誌記錄器和其日誌記錄設定中的 Appender 設定進行比較,若事件的等級等於或高於指定的門檻值,則繼續處理,反之低於門檻值,則忽略該事件,以及若 Appender 設定包含過濾器,則將事件與過濾條件進行比較,並且根據比較結果,處理繼續或停止。當比較完事件的等級和過濾條件之後,就會根據 Appender 設定中定義的規範將事件寫入輸出目標,所謂規範主要包括模式佈局,日誌資料夾,日誌檔案名,滾動策略,區域設置和編碼等參數設定。

最後對於每個伺服器皆提供一個名為 logconfig.xml 的日誌記錄設定檔案,該檔案位於伺服器的設定資料夾中,請注意若非必要請勿使用 TRACE 和 DEBUG 級別,因為這些日誌記錄等級會影響效能。此外企業客戶會期望針對記錄檔能夠提供以不同日期或以檔案大小切檔的功能,此時我們能夠透過 RollingFileAppender 將訊息寫入指定路徑中的指定檔案,並且在滿足指定條件時開始將訊息寫入具有不同名稱的新檔案,其主要有三種設定,分別為每天滾動到新日誌檔案、新連線開始時轉到新日誌檔案以及當文件到達到特定大小時轉到新日誌檔案。

相關資源

SAS 資訊安全 (20)

教學目標

初步了解 SAS 9 平台加密方法的基本概念。

重點概念

首先編碼技術偽裝密碼的方法主要在於防止隨意或非惡意地查看密碼,並且透過編碼將一個字元透過某種形式表查找轉換為另一個字元,而加密主要涉及透過使用數學運算將資料從一種形式轉換為另一種形式,通常是關鍵值。通常加密通常比編碼更難破解,請注意密碼保護是我們安全策略的重要組成部分,但是我們不應僅依靠密碼保護來滿足我們的所有資料安全需求,資料還應受到其他安全控制的保護,像是檔案系統權限,其他存取控制機制以及靜態和傳輸中的資料加密。

接著在 SAS 平台中主要提供 PROC PWENCODE 的編碼方法,目前從 SAS 9.4 M5 開始主要有 SAS001 至 SAS005,請參考下表。

編碼方法 使用資料加密演算法 編碼密碼和密鑰描述
SAS001 None 使用 BASE64 編碼的密碼。
SAS002(預設值) SASProprietary 使用 32 位元固定金鑰加密密碼。
SAS003 AES (Advanced EncryptionStandard), 使用 256 位元固定金鑰加上 16 位元隨機鹽值加密密碼。
SAS004 AES (Advanced EncryptionStandard), 使用 256 位元固定金鑰加上 64 位元隨機鹽值加密密碼。
SAS005 AES (Advanced EncryptionStandard), 使用 256 位元固定金鑰加上 64 位元隨機鹽值,以及其它迭代雜湊碼加密密碼。

請注意若要使用 SAS003、SAS004 和 SAS005 ,則僅限於我們具有 SAS/SECURE 才能夠透過使用行業標準加密和雜湊演算法來保護資料,此外隨機鹽值主要加強困難度,以及雜湊碼進行密碼驗證。

再來當我譬在安裝與設定期間無需進一步調整,就會透過 PROC PWENCODE 的編碼方法為靜態資料進行加密,尤其是針對在中繼資料存儲庫中的密碼和在設定檔中的密碼,而對於靜態資料進行加密,重點是保護中繼資料存儲庫和設定檔案中的密碼,當然我們更能夠加密 SAS 資料集。請注意在中繼資料存儲庫的內部帳號密碼主要是以 SHA256-10000, SHA256 或 MD5 雜湊編碼方式進行儲存。

最後當 SAS 平台中的服務帳號的密碼需要變更時,我們主要會透過 SAS Deployment Manager 更新密碼,因為這些密碼包含在設定檔案中。這時若我們輸入明文密碼,則該應用程式就透過 SAS Proprietary 編碼 (SAS002) 對於該密碼進行編碼之後儲存至中繼資料存儲庫和設定檔中,此外我們更能夠 PROC PWENCODE 的編碼方法產生不同加密強度的密碼進行輸入設定。

相關資源

SAS 資訊安全 (19)

教學目標

初步了解 SAS 9 平台內部帳號政策相關設定的基本概念。

重點概念

首先在 SAS 9 平台中有分內部帳號和外部帳號,一般我們會設定內部帳號對應外部帳號僅包含使用者 ID 的情況,此時不需要更新中繼資料中的密碼,而對於儲存在 SAS 中繼資料中的任何外部密碼,並且主要由在外部身份驗證提供者進行更新,此外每個身份驗證提供者皆為該帳號提供密碼設定,以及主機帳號的密碼到期策略後該由該主機確定。

接著對於 SAS 內部身份驗證提供者,統一所有 SAS 應用程式的內部認證機制,其主要是參與 SAS 伺服器僅根據存在於中繼資料中的帳號列表,驗證具有特殊後綴 (@saspw) 的使用者 ID,而針對內部身份驗證我們可以設定伺服器策略和每個帳號策略。

再來我們針對內部帳號之初始伺服器策略,主要有五大策略,分別為:

  1. 帳號不會過期,也不會因不活動而暫停。
  2. 密碼必須至少為六個字元,不必包含數字或大小寫,並且不會過期。
  3. 最近使用五個密碼無法重複使用。
  4. 在三次嘗試登錄失敗後,帳戶被鎖定一小時,而管理員可以透過存取使用者定義選項來解鎖帳戶。
  5. 密碼不會過期,因此不會發生強制密碼更改。

最後我們可以在 SAS Management Console 中檢查當前內部帳號的策略,主要能夠透過查看「omaconfig.xml」檔案來檢查內部帳號的伺服器策略,並且進行編輯 InternalAuthenticationPolicy 元素,然後重新啟動該伺服器才會生效,其主要有以下參數設定,分別為:

參數 說明
ChangeDelayInMinutes=”number” 指定密碼更改之間必須經過多少分鐘,僅在重置自己的密碼時適用。
DigitRequired=”T ,F” 指定密碼是否必須包含至少一個數字,若要要強制執行此要求,請指定 T,反之指定 F。
ExpirationDays=”number” 指定密碼設定密碼到期後的天數,值為 0 則可防止密碼過期。
ExpirePasswordOnReset=”T ,F” 指定在首次使用時和管理密碼重置後是否發生強制密碼更改,若要禁用此要求,請指定 F,反之指定 T。
HashPasswords =“SHA256-10000, SHA256, MD5” 指定內部帳戶密碼如何存儲在中繼資料中。
MinLength=”number-of-characters” 指定密碼的最小長度。
MixedCase=”T, F” 指定密碼是否必須包含至少一個大寫字母和至少一個小寫字母,若要強制執行此要求,請指定 T,反之指定 F。
NumPriorPasswords=”number” 指定每個帳號的密碼歷史記錄中維護的密碼數,使用者無法重複使用帳號歷史記錄中的密碼。
LockoutDurationInMinutes=”number” 指定在過多登入失敗之後鎖定帳戶多少分鐘。
NumFailuresForLockout=”number” 指定導致帳戶被鎖定的連續失敗登錄嘗試次數,建議不要指定 0。

相關資源

SAS 系統管理 (107)

教學目標

初步了解如何針對 SAS Enterprise Miner 效能進行診斷的基本概念。

重點概念

首先當我們使用 SAS Enterprise Miner 時可能會遇到效能的問題,像是特定任務的完成時間比預期的要長,此外並非每個未能按預期執行的任務都是效能問題,不合理的期望或未遵循最佳實務可能會導致錯誤地認為是效能問題的情境,像是可能代表效能問題的症狀,主要有:

  1. 使用範本資料執行簡單模型需要很長時間。
  2. 互動方式操作數百個以上的變數需要很長時間。

接著診斷和解決效能問題的方法是迭代的,每次迭代至少包括解決問題的相關步驟,分別為:

  1. 了解關注的行為。
  2. 收集適當的診斷資料。
  3. 分析診斷資料。
  4. 規定調整。
  5. 嘗試重新建立行為或監視行為的環境。
  6. 重新評估情況。

其中每次迭代的關鍵要素是理解行為或關注點,請務必包括將觀察到的行為與預期行為進行比較和對比,表明預期的行為是如何預期的以及提供定量和定性詳細資訊。

再來描述行為的主要會包括以下定量和定性詳細資訊,分別為:

  1. 描述觀察到的行為和預期的行為。
  2. 描述預期行為是如何發生的。
  3. 描述導致行為的範例。
  4. 描述行為發生的環境。
  5. 描述首次觀察行為的時間,以及此後行為的頻率,自從首次觀察到這種行為以來,是否存在行為頻率的趨勢。
  6. 描述行為的範圍,特別是關於使用者數量,客戶端電腦數量,其他環境以及持續時間或幅度,自首次觀察以來,是否存在行為程度的趨勢。

最後我們除了需要初始化診斷的記錄檔,像是啟動客戶端工具記錄檔啟動 Workspace 伺服器的記錄檔之外,建議先建立範本專案作為效能的比較基準,此範例主要是在 SAS Enterprise Miner 中執行多項操作包括啟動,登入使用者,建立新專案,建立新流程圖,建立範例資料來源,執行流程以及查看結果,我們能夠透過此範例產生診斷比較的基礎,同時提供 SAS Enterprise Miner 內部效能的總體概念。

(註: 若是操作 SAS Enterprise Miner 經常發生異常錯誤,建議先試著調整 sasv9.cfg 的 -MEMSIZE 8G 的記憶體參數,請參考 Note 61376。)

相關資源