Title: ITUG Summit 2002
1ASAP Extension API
joe.davis_at_hp.com
ITUG Summit 2002 2731 October San Jose,
California
2A Brief Overview of ASAP
- An Availability Monitoring Infrastructure for HP
NonStop Servers - Engineered specifically for NonStop Server
Architecture - Includes NonStop Server Agents, Process-pairs,
and Relational Stats SLO Databases - Components automatically Restart and Reconfigure,
even when CPUs or devices go up/down
3What ASAP is not
- ASAP is not an Enterprise Management Framework
- HP OpenView
- CA Unicenter
- Tivoli Netview
- ASAP only provides an availability monitoring
infrastructure - However ASAP does provide
- System and subsystem agents
- Published interfaces for custom agents
- Adapter interfaces to Enterprise Management
Frameworks
4What ASAP monitors
- System Objects
- CPUs, Disks, Expand LHs, Nodes, Systems, Tape
Drives,.. - Subsystem Domains
- Busy Processes, Files, Selected Processes, RDF,
Spooler, TMF, ... - Application Domains
- ATMs, Accounts, Customers, Orders, or anything
else...
5What ASAP does with its information
- Generates Alerts
- EMS events
- SNMP traps
- Stores data in a relational database
- Displays data on ASAP Client
- Forwards data to Enterprise Management Frameworks
6ASAP Alerts
02-06-17 114201 \CENTDIV.ZOOK
TANDEM.226.V02 004000 ASAP ALERT Expandip
Ipisl Status Connecting 02-06-17 114201
\CENTDIV.ZOOT TANDEM.226.V02 004000
ASAP ALERT Process Joe Status Down 02-06-17
114202 \CENTDIV.ZOOJ TANDEM.226.V02
004000 ASAP ALERT Disk Rtool1 Status Mirror
Disk Reviving 02-06-17 114902 \CENTDIV.ZOOH2
TANDEM.226.V02 004000 ASAP ALERT Funds
Transfer\Y077 Status Lost Trans 02-06-17
114902 \CENTDIV.ZOOH3 TANDEM.226.V02
004000 ASAP ALERT Atm Chicago\East\Atm2 Status
Cash Low
7ASAP Client
- Browsing paradigm for access to objects
- Graph and Grid views
- Tree View
- Object navigation
- Accesses many objects
- Drives Graph/Grid
- State Information
- Propagated upward
- always visible state
8Availability Vectors
- Illustrates host-based analysis engine
- Availability is determined by
- Pre-defined rules (SLO)
- Analysis of each property of an object
- Aggregation of data
- Status, Performance and SLO information presented
uniformly
9Registering an Application
ASAPXMON
Registration Request
- errorASAP_REGISTER_ (
- domainnamenamelen
- , segoffset
- , errordetail
- , segmentid
- , segmentbase
- , version
- , asapididlen
- , flags
- , timeout
- ) extensible
Shared Memory
10Updating In-Memory Data
ASAPXMON
- errorASAP_UPDATE_(
- segoffset
- , errordetail
- , dataitem
- , value
- , math
- ) extensible
Shared Memory
000001
Enabled
007703
Trams A
021005
Broken
Data can be - Counters - Time Units -
Constants - Numeric - Text
11Shared-Memory Architecture
ASAPXMON
- Non-Blocking Architecture
- No inter-process messages
- No semaphores
- Ultra-High Performance
- Memory updates only
- No App computations/feeds
- Memory Fully Protected
- Checksums
- Boundary tags
Shared Memory
000001
Enabled
007703
Trams A
021005
Broken
12Shared-Memory Architecture
Aggregates
ASAPXSGP
ASAP
ASAPXMON
ASAPXMON
ASAPXMON
ASAPXMON
ASAPXMON
ASAPXMON
Shared Memory Segment
CPU 0
CPU 1
CPU 2
CPU 3
CPU 4
CPU 5
Extensible
Atm\Server\Authenticate\ 12 Domains
13Data-Gathering and Computation
02-06-17 114201 \CENTDIV.ZOOK
TANDEM.226.V02 004000 ASAP ALERT Expandip
Ipisl Status Connecting 02-06-17 114201
\CENTDIV.ZOOT TANDEM.226.V02 004000
ASAP ALERT Process Joe Status Down 02-06-17
114202 \CENTDIV.ZOOJ TANDEM.226.V02
004000 ASAP ALERT Disk Rtool1 Status Mirror
Disk Reviving 02-06-17 114902 \CENTDIV.ZOOH2
TANDEM.226.V02 004000 ASAP ALERT Funds
Transfer\Y077 Status Lost Trans 02-06-17
114902 \CENTDIV.ZOOH3 TANDEM.226.V02
004000 ASAP ALERT Atm Chicago\East\Atm2 Status
Cash Low
Alerts
ASAP/X
Data
Enabled
000001
007703
021005
Trams A
Broken
Records
Formulas
ASAP DB
Objectives
Entity Definitions
Objectives
14Computing Transaction Rate
7703 7219 484 484/60 8.067 If
(8.067 gt 9.000) False -gt State NOT OK
Current Sample
Previous Sample
2 Result
MetricRule Formula
Format
007703
000001
Enabled
Objective Compare
021005
Trams A
Broken
DataItem Type I MetricRule 2/S Format
F5.3 Heading TransRate Objective gt
9.0 Critical
TransRate 8.067 TransRateState
Alert Generate EMS Critical Event
ASAP Sampling Interval 1 minute
15Representing an Application
Deposits Withdrawals Transfers Inquiries
ATM
Chicago Phoenix Seattle Atlanta
Devices Requesters Servers Database
16Application Name Space
Business
Service
Developer
17Determining What to Measure
- Availability/Health Metrics
- Transaction Rates
- Error Rates
- Response Time
- Status Indicators
- Capacity/Historical Metrics
- Wait times
- Busy percentages
- Usage information
18Consider Multiple ASAP Environments
ASAPXMON
ASAPXMON
- errorASAP_UPDATE_(
- segoffset
- , errordetail
- , dataitem
- , value
- , math
- ) extensible
Shared Memory Rate 1 minute Health
Monitor
Shared Memory Rate 1 hour Capacity
Monitor
Health Data
Capacity Data
19Implementation Example
DataItems
- Determine Application Name Space ?
- Service View
- Example Atm\Dallas\East\ParkSt
- Determine What to Measure ?
- Cash in ATM
- Success Percent
- Response Time
- Card Reject Count
Cash remaining (C)
0
Transaction count (I)
1
Error count (I)
2
Processing time (U)
3
Card rejects (I)
4
I - integer S,M,U - time units C - constant
20Define the Application in ASAP EDL
- First copy APP EDL file from ASAP2APP EDL file
- Save and modify new file to create the
Application EDL - ENTITY ATM
- Command "APP\ATM,DETAIL,RAW,TAB,STATE,AGG
REGATE" - Detail "APP,TAB,STATE,DETAIL
- DataItems "0 C, 1 I, 2 I, 3 U, 4 I"
- Enabled YES
- Help ATM Application
- MaxObjectives 200
- Version 1.00000
21Define all Metrics in ASAP EDL
- Add custom metric (EDL Attribute) definitions to
the end of new EDL file, copy Error and
ErrorState attribute pairs. - AT Cash Grid YES Graph NO GraphMax 3000
- Format I6
- Help Cash remaining in ATM"
- StatePair YES StateRule UseStateGraphState
- MetricRule 0"
- TypeData REAL64
- AT S0 Grid NO Graph NO GraphMax 9 Help "State of
Cash " - Do not modify any of the other original Attribute
definitions from the original APP EDL file.
22Example EDL File
- ENTITY ATM
- CI ASAP
- Command "APP\ATM,DETAIL,RAW,TAB,STATE,A
GGREGATE" - Detail "APP,TAB,STATE,DETAIL"
- DataItems "0 C, 1 I, 2 I, 3 U, 4 I"
- Enabled YES ErrorState ErrorState
- Help "My application description"
- KeyForNode NodeName KeyForObj Domain
- KeyForRow "Dateymd Time" MaxObjectives
200 - SGPFile ASAPXSGP SGPManaged YES
SGPSuffix H - Reserved NO Version 1.00000
23Required Header Attributes
- AT NodeName Grid YES Graph NO GraphMax 0
- Help "NSK System Name"
- AT Sysnum Grid NO Graph NO GraphMax 0 Help
"System Number" - AT Domain Grid YES Graph NO GraphMax 0 Help
"Domain Name" - AT Status Grid YES Graph YES GraphMax 0 Help
"Operational Status - StatePair YES StateIsOp YES StateRule
UseStateGraphState - TypeData CHAR15
- AT OpState Grid NO Graph NO GraphMax 9
- Help "Operational State"
- AT Dateymd Grid NO Graph NO GraphMax 0 Help "Date
of Stats" - AT Time Grid YES Graph YES GraphMax 0 Help "Time
of Stats"
24Required Header Attributes
- AT Valid Grid NO Graph NO GraphMax 0 Help
"Validity Flag" - AT ET Grid NO Graph NO GraphMax 0
- Help "Elapsed Time in Minutes"
- AT CT Grid NO Graph NO GraphMax 0 Help "Count of
Attributes"\ - AT Error Grid YES Graph NO GraphMax 0 Format I4
- Help "Collection Error StatePair YES
StateRule UseStateGraphState - TypeData INT64
- AT ErrorState Grid NO Graph NO GraphMax 9 Help
"State of Error"
Custom attributes go after the Error and
ErrorState Attribute Pair
25Custom Attributes
- AT Cash Grid YES Graph NO GraphMax 3000 Format
"I6 - Help "Cash remaining in ATM StatePair YES
- StateRule UseStateGraphState
- MetricRule "0" TypeData REAL64
- AT S0 Grid NO Graph NO GraphMax 9 Help "State of
Cash " - AT Success Grid YES Graph NO GraphMax 10000
Format "F6.2 - Help Success Percent StatePair YES
- StateRule UseStateGraphState MetricRule
"1/(1 2) C100" - TypeData REAL64
- AT S1 Grid NO Graph NO GraphMax 9 Help "State of
Success"
26Custom Attributes
- AT RespTime Grid YES Graph NO GraphMax 10 Format
"F10.7 - Help "Server response time StatePair YES
StateRule - UseStateGraphState MetricRule "3/(1 2)"
TypeData REAL64 - AT S2 Grid NO Graph NO GraphMax 9 Help "State of
RespTime " - AT Rejects Grid YES Graph NO GraphMax 100 Format
"I3" - Help "Card rejects" StatePair YES StateRule
UseStateGraphState - MetricRule "4" TypeData REAL64
- AT S3 Grid NO Graph NO GraphMax 9 Help "State of
Rejects"
27Complete EDL File
- ENTITY ATM
- CI ASAP
- Command "APP\ATM,DETAIL,RAW,TAB,STATE,A
GGREGATE" - Detail "APP,TAB,STATE,DETAIL"
- DataItems "0 C, 1 I, 2 I, 3 U, 4 I"
- Enabled YES ErrorState ErrorState
- Help "My application description"
- KeyForNode NodeName KeyForObj Domain
- KeyForRow "Dateymd Time" MaxObjectives
200 - SGPFile ASAPXSGP SGPManaged YES
SGPSuffix H - Reserved NO Version 1.00000
- AT NodeName Grid YES Graph NO GraphMax 0
- Help "NSK System Name"
- AT Sysnum Grid NO Graph NO GraphMax 0 Help
"System Number" - AT Domain Grid YES Graph NO GraphMax 0 Help
"Domain Name" - AT Status Grid YES Graph YES GraphMax 0
- Help "Operational Status" StatePair YES
StateIsOp YES - StateRule UseStateGraphState TypeData
CHAR15 - AT OpState Grid NO Graph NO GraphMax 9
- AT Error Grid YES Graph NO GraphMax 0 Format I4
- Help "Collection Error" StatePair YES
StateRule UseStateGraphState - TypeData INT64
- AT ErrorState Grid NO Graph NO GraphMax 9 Help
"State of Error" - AT Cash Grid YES Graph NO GraphMax 3000 Format
"I6" - Help "Cash remaining in ATM" StatePair YES
StateRule - UseStateGraphState MetricRule "0" TypeData
REAL64 - AT S0 Grid NO Graph NO GraphMax 9 Help "State of
Cash " - AT Success Grid YES Graph NO GraphMax 10000
Format "F6.2 - Help Success Percent" StatePair YES
StateRule UseStateGraphState - MetricRule "1/(1 2) C100" TypeData
REAL64 - AT S1 Grid NO Graph NO GraphMax 9 Help "State of
TotalRate " - AT RespTime Grid YES Graph NO GraphMax 10 Format
"F10.7 - Help "Server response time" StatePair YES
StateRule UseStateGraphState - MetricRule "3/(1 2)" TypeData REAL64
- AT S2 Grid NO Graph NO GraphMax 9 Help "State of
RespTime " - AT Rejects Grid YES Graph NO GraphMax 100 Format
"I3 - Help "Card rejects" StatePair YES StateRule
UseStateGraphState - MetricRule "4" TypeData REAL64
28What Next?
- Load EDL onto NSK Servers
- Add Include statement to ASAPUSER file
- Load EDL onto ASAP Client workstations
- C\Program Files\Tandem\Asap\Edl
- Install using Client IDE
- Test EDL using ASAPXTST API test program
- Located in ASAPX ISV
- Implement ASAP API in the Application
29Enabling the Client IDE
Click here to bring up the Properties sheet
30Enabling Import/Export EDL
Turn on the IDE to enable File - Import/Export EDL
Double click here to bring up the EDL Properties
sheet
31Client IDE
Then click the compile button
First, click on your EDL file
32ASAPXTST
- ASAPXTST
- 1 register
- please enter domainname() atm\test
- segmentid()
- segmentbase()
- version()
- asapididlen("ZOO"4)
- flags()
- timeout()
- error 0
- errordetail 0
- result domain registered
- 2
The procedure declaration (not shown) is output
here.
33ASAPXTST
- 2 update
- Domains Currently Registered
- Dmn SegOffset AID F Vs Domain
Name - ----------- ----------------------------
-------------- -- --- -----------------------
----------------------------- - 0 1308361202 ZOO 0 ATM\TEST
- select a domain to update() 0
- segoffset(1308361202)
- dataitem() 0
- value() 10
- math()
- error 0
- errordetail 0
- result domain updated
The procedure declaration (not shown) is output
here.
34Java
- public class ASAPX extends java.lang.Object
-
- static
-
- System.loadLibrary("ASAPXJNI")
- // Initializer
- public static final native short
AsapRegister(java.lang.String Domain, -
int SegmentOffset, -
short ErrorDetail) -
35Java
- public static final native short AsapUpdate
(int SegmentOffset, -
short ErrorDetail, -
short DataItem, -
long Value, -
short Math) -
- public static final native short AsapRemove
(int SegmentOffset, -
short ErrorDetail, -
short SegmentID, -
short Flags) -
- // class ASAPX
-
36Java
- public class MainClass extends java.lang.Object
-
- public static void main(java.lang.String
args) -
- java.lang.String MyAppDomainName
"CreditCard\\Chicago" - int SegmentOffset new
int1 - short ErrorDetail new
short1 - short ReturnCode
- ReturnCode ASAPX.AsapRegister(MyAppDomainN
ame, -
SegmentOffset, -
ErrorDetail) - if (ReturnCode ! 0)
-
37Java
-
- System.out.println("Error Could not
register " MyAppDomainName) - System.out.println("Detailed error
number " ErrorDetail0) - System.out.println("Exiting...")
- return
-
- while (true)
-
- ReturnCode ASAPX.AsapUpdate(SegmentOffs
et0, ErrorDetail, (short)0, 1L, (short)0) - if (ReturnCode ! 0)
-
- System.out.println("Error Could not
update ASAPX) - System.out.println(Detailed error
number " ErrorDetail0) - break
-
-
-
38Java
- // Get next request
- // while loop
-
- ReturnCode ASAPX.AsapRemove(SegmentOffset
0, ErrorDetail, (short)0, (short)1) - if (ReturnCode ! 0)
-
- // Error removing our domain
- System.out.println("Error Could not
remove " MyAppDomainName) - System.out.println("Detailed error
number " ErrorDetail0) - System.out.println("Exiting...")
-
-
- // main
-
- // class MainClass
39C
- ifndef __ASAPBASEH
- define __ASAPBASEH
- include "zaspxc.h
- class AsapBase
-
- public
- AsapBase()
- virtual AsapBase()
- short AsapRegister(short flags0)
- short AsapUpdate(short dataItem, long
long val, short math0) - protected
- bool Connected long long
LastTime - char Domain64 long
SegmentOffset -
- endif // __ASAPBASEH
40C
- include ASAPBASE.hinclude ltasapxhgt
- short AsapBaseAsapRegister(short flags)
-
- short Error, ErrorDetail
- long long
- ThisTime JULIANTIMESTAMP() - LastTime,
- RetryTime 5000000
- if(Connected) return 0
- if(ThisTime lt RetryTime) return 0
- LastTime JULIANTIMESTAMP()
- strcopy(Domain,Test\\Domain)
- error ASAP_REGISTER_(Domain, strlen(Domain),
SegmentOffset,ErrorDetail) - if(error 0)
- Connected true
- else lterror handling logicgt
41C
- short AsapBaseAsapUpdate(short dataItem, long
long value, short math) -
- short Error, ErrorDetail
- short Flags 0
- if(!Connected)
-
- error AsapRegister(Flags)
- if (error ! 0) return error
- if (!Connected) return -1
-
- error ASAP_UPDATE_(SegmentOffset,
ErrorDetail, dataItem, value, math) - if (error ! 0)
-
- lterror logic goes heregt
-
-
42pTAL
- int(32) asapoffset 0d, .ext
asapoffset2 - ?nolist, source zaspxtal
- ?nolist, source system.system.asapxdec
- ?library system.system.asapxlib
- proc doasap(ditem,val,math) extensible int
ditem int(64) val int math forward - proc doasap(ditem,val,math) extensible
- int ditem int(64) val int math
- begin
- string .dname011 "NONSTOP\DEMO"
- int err 0, errdtl 0
- if asapoffset 0d then begin
- _at_asapoffset2 xadr(asapoffset)
- if (err asap_register_(dname12,
asapoffset2, errdtl)) ltgt 0 then asapoffset
0d - end
- if asapoffset 0d then return
43pTAL
- if (err asap_update_(asapoffset,errdtl,ditem,
val, optional(param(math),math))) ltgt 0 then
begin - err asap_remove_(asapoffset,errdtl,,1)
- asapoffset 0d
- end
- end -- of proc doasap
44ASAPX Feature Review
- Conversion to ASAP DOTs
- Multiple Entity/EDL support
- Built-in attributes
- Aggregation
- Status/OpState API
- Text constants
- Register timeout
45ASAPX Futures
- DataItems increased and configurable
- In-Memory record retrieval
- DataItem aggregation control
- No History mode
- Java Package
- C Class Library
- HP OpenView integration
46Information Resources
- www.NonStopASAP.com
- Presentations
- Papers, FAQs
- Online demonstration
- Education
- TUT CD 30 Oct. 2001
- Manuals
- TIM Independent Products CD
- Email
- support_at_nonstopasap.com
47(No Transcript)
48(No Transcript)