如何在程式中擷取系統ASP使用率等系統狀態資訊

來源:互聯網
上載者:User
如何在程式中擷取系統ASP使用率等系統狀態資訊

AS/400系統管理員都對系統ASP空間增長情況很關心,當系統ASP
空間漲滿了以後將會引起系統DOWN機等安全問題。系統ASP空間與硬碟空間並不完全等同,如果系統只配置了一個ASP分區,那麼系統ASP空間與硬碟空
間是等同的,如果系統配置了多個ASP分區,則系統ASP只是ASP 1的分區。用WRKSYSSTS命令查看到的% system ASP
used就是表示系統ASP空間的使用率。

與系統ASP空間使用率有關的系統值有兩個:QSTGLOWLMT和QSTGLOWACN。QSTGLOWLMT系統值設定了最小硬碟空間警告線百分比,比如設定為5,即表示系統ASP使用率達到95%,即引起安全動作,安全動作由系統值QSTGLOWACN設定。

能不能在程式中自動擷取系統ASP使用率,這樣當硬碟空間達到危險值時,由程式提前警示呢?或者在程式中自動執行一些安全動作,比如自動清理一些過時的檔案,或停止某些程式運行,以降低系統ASP使用率?

OS/200
系統提供了一個叫QWCRSSTS的API函數,該函數功能就可以提取用WRKSYSSTS命令看到的系統狀態資訊,還可以提取更多的用
WRKSTSSTS命令看不到的一些其他系統資訊。可以在RPG、C、CL等程式裡調用該API以擷取系統資訊。該函數的詳細使用說明可以參看
《System API Reference》這本書。

下面我用一個實際擷取系統ASP使用率的CL程式做例子,來看看如何使用QWCRSSTS。

QWCRSSTS
共有五個入口參數,第一個參數是接受返回系統狀態資訊的輸出參數,存放的是返回系統狀態資訊塊。該系統狀態資訊塊是按照一定結構來存放各種系統狀態資訊
的。第二個參數是輸入參數,指定第一個接受系統狀態資訊塊變數的長度,類型為Binary。第三個參數是指定第一個參數系統狀態資訊塊中的系統資訊存放結
構名,共有三種不同的結構可選,分別是:SSTS0100、SSTS0200、SSTS0300。第四個參數是表示是否重新設定狀態統計,通常我們選
*YES。第五個參數是錯誤碼。

在本樣本CL程式中,指定使用SSTS0200系統狀態資訊結構。該結構中53-57位存放的就是%
system ASP
used。該值除上10000,就是正常百分比。在程式中先是提取QSTGLOWLMT系統值,指定100-QSTGLOWLMT-2為程式警告線,比如
QSTGLOWLMT如果設為5,那麼當系統ASP到93%的時候,程式會向使用者發出一個訊息。同時把ASP狀態傳回值設為1,以供其他程式調用,當調用
程式判斷ASP狀態傳回值為1的時候,就知道系統ASP空間利用率到了警告線,需要執行一些安全動作了。

/*===================================================================*/
/*      */
/*-----------------------------------------------------------------------------------------------------------------*/
/* PROGRAM NAME : MONASP */
/* CREATED BY : BLOG LIOU */
/* CREATED DATE : 2003.11.11 */
/* DESCRIPTION : Monitor ASP Used */
/* MonASPPer: (100-STGLOWLMT)-2 */
/*===================================================================*/
PGM PARM(&ASPFLAG)
DCL VAR(&ASPFLAG) TYPE(*CHAR) LEN(1)
DCL VAR(&FORMAT) TYPE(*CHAR) LEN( +
VALUE('SSTS0200')
DCL VAR(&LENFLD) TYPE(*CHAR) LEN(4) +
VALUE(X'00000044')
DCL VAR(&SYSNAM) TYPE(*CHAR) LEN(
DCL VAR(&SYSUSEC) TYPE(*CHAR) LEN(4)
DCL VAR(&SYSUSE) TYPE(*DEC) LEN(9 2)
DCL VAR(&SYSINFO) TYPE(*CHAR) LEN(6
DCL VAR(&ERRCODE) TYPE(*CHAR) LEN( +
VALUE(X'0000000000000000')
DCL VAR(&RESETSY) TYPE(*CHAR) LEN(10) VALUE(*YES)
DCL VAR(&QMNPER) TYPE(*DEC) LEN(9 2) VALUE(1000000)
DCL VAR(&QALARM) TYPE(*DEC) LEN(9 2) VALUE(20000)
DCL VAR(&STGLOWLMT) TYPE(*DEC) LEN(9 2)
DCL VAR(&SNDMSG) TYPE(*CHAR) LEN(10)

CHGVAR VAR(&ASPFLAG) VALUE('0')
RTVSYSVAL SYSVAL(QSTGLOWLMT) RTNVAR(&STGLOWLMT)
CHGVAR VAR(&STGLOWLMT) VALUE(&STGLOWLMT * 10000)
CHGVAR VAR(&QMNPER) VALUE(&QMNPER - &STGLOWLMT)
CHGVAR VAR(&QMNPER) VALUE(&QMNPER - &QALARM)

CALL PGM(QWCRSSTS) PARM(&SYSINFO &LENFLD &FORMAT +
&RESETSY &ERRCODE)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERREND))
CHGVAR VAR(&SYSUSEC) VALUE(%SST(&SYSINFO 53 4))
CHGVAR VAR(&SYSUSE) VALUE(%BINARY(&SYSUSEC))
CHGVAR VAR(&SYSNAM) VALUE(%SST(&SYSINFO 17 )
IF COND(&SYSUSE > &QMNPER) THEN(DO)
CHGVAR VAR(&SNDMSG) VALUE(&SYSUSE)
SNDPGMMSG MSG(&SYSNAM *BCAT ' - (ASP USED +
PERCENT)*10000 = ' *BCAT &SNDMSG) +
TOMSGQ(SMDOB)
SNDPGMMSG MSG('*****SYSTEM OVER MonASP !!! ') +
TOMSGQ(MYUSER) MSGTYPE(*INFO)
CHGVAR VAR(&ASPFLAG) VALUE('1')
ENDDO
GOTO CMDLBL(END)

ERREND: SNDPGMMSG MSG(' ERROR ON QWCRSSTS CALL') +
TOMSGQ(MYUSER) MSGTYPE(*INFO)
END: ENDPGM

該程式也可以與某些警示程式連起來使用,比如當系統ASP空間達到警告線後,程式調用某些撥號程式,就可以給系統管理員手機發簡訊息等。

如果再設計一個顯示檔案,把QWCRSSTS擷取到的系統狀態資訊,比如系統ASP使用率、CPU使用率、系統出現Message進程數,都顯示出來,我們就實現了一個系統狀態資訊的監視工具。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.