Information stored in an InfoHub is associated with information Publishers, each of which is specified with a Publisher descriptor. Publisher descriptors follow the InfoHub descriptor and any of its associated Environment Descriptors. While the meaning of "Publisher" is a function of a configuration and its conventions in your organization, it is appropriate for one Publisher to manage the information gathering and dissemination for one environment. This provides the PreExpr, PostExpr, and InfoExpr expressions of FileLine and PipeLine processes with an isolated environment where, if appropriate, they can communicate and cooperate with each other.
InfoHub JOBs a process for each Publisher. This process in turn JOBs processes for each FileLine or PipeLine descriptor associated with the Publisher. The Publisher process may optionally create a temporary directory before launching any processes. Within that temporary directory, it creates a global directory that maps to an unjournaled database in that temporary directory. It logs the name of the temporary directory to the InfoHub database.
The Publisher JOBs the FileLine or PipeLine processes with the following JOB Processparameters:
DEFAULT=<tempPWD>: points to the temporary directory.
ERROR=<routine_name.infohub> and OUTPUT=<routine_name.infohub>: Point to files in the temporary directory. The InfoHub JOB framework uses VIEW "JOBPID":1 to ensure that the stderr and stdout of one child processes do not overwrite those of another.
GBLDIR=</path/to/tempPWD/Publisher.gld>: points to the global directory in the temporary directory.
The syntax of a Publisher Descriptor is:
Publisher:{InfoDictID|InfoDictName}:[PublisherName]:[PublisherID]:[APIDir]:[TempPWD]:[TempDBAlloc]:[TempDBExtend]
InfoDictID or InfoDictName: The InfoDict ID or Name for the InfoDict holding the Publisher definition.
Publisher Name: The Name of the Publisher.
Publisher ID: A unique 31 bit positive integer.
The descriptor must specify one, or both, of the PublisherName and PublisherID; otherwise, the configuration processing produces an IHIDORNAMEREQ error. When the descriptor specifies both the Name and ID and there is no corresponding InfoDict entry, configuration processing implicitly creates an InfoDict entry.
If the descriptor contains only PublisherName, the configuration gets PublisherID from the specified InfoDict domain. If the specified domain has no definition for the Name, InfoHub uses the last PublisherID in the database associated with PublisherName. If none exists (that is, this is a new PublisherName), the InfoHub generates a new unique random 31-bit positive integer to use (that is, PublisherID is unique for each InfoHubID), and stores the PublisherID in the database in association with the PublisherName.
If PublisherID is specified, the configuration process verifies before configuration completion that the specified InfoDict domain maps a PublisherName; if the configuration detects there is no Name for a PublisherID, it produces an IHPUBLISHERREQ error; if it detects an attempt to map multiple PublisherIDs to one Name, it produces an IHDUPPUBLISHER error. Note: the Reference Implementation SNMP sub-agent provided with the InfoHub uses PublisherID as an index in the OID for each Publisher.
APIdir: A directory that holds routines with functions to process information for storage (see *Expr references below).
If APIDir for the Publisher, is not null, the Publisher sets $gtmroutines to the value of APIDir. If APIDirs is null, the Publisher process does not modify $gtmroutines. The FileLine or PipeLine inherit $gtmroutines.
TempPWD: When starting, the InfoHub creates the TempPWD directory that the information gathering XLine processes can use for cooperation and temporary storage. This temporary private area does not persist from one invocation of InfoHub to another. The InfoHub deletes these private areas on startup.
TempDBAllocate: The initial allocation of the database in TempPWD with a predetermined block size of 4KiB. If not specified, it defaults to the GT.M default for new databases. A zero value of TmpDBAlocate specifies no need to create a database. An attempt to configure an non-integer or out-of range allocation produces a IHBADALLOC error.
TempDBExtend: The Extension Count of the database created in TempPWD. If not specified, it defaults to the GT.M default for new databases. A zero value of TmpDBExtend prevents the temporary database from extending. An attempt to configure an non-integer or out-of range extension produces a IHBADEXT error.
InfoHub Internals | |
---|---|
The entryref used to start the FileLine and PipeLine processes includes a parameter for the Publisher process to pass its own global directory, which the FileLine and PipeLine processes use to record gathered information in the InfoHub and to communicate with the Publisher. After launching FileLine and PipeLine processes, the Publisher schedules itself using HANG commands, periodically waking up to verify that its FileLine and PipeLine processes are active. During the HANG, it requires an interrupt to awaken it. Configuration processing stores Publisher specification in the following nodes: ^InfoHubConf(InfoHubID,"Publishers",PublisherID,BeginningSequenceNumber)=EndingSequenceNumber]:InfoDictID:[APIDir]:[TmpPWD]:[TmpDBAlloc]:[TmpDBExtend] |
Example:
Publisher:SystemDict:System:::publishers/ihsyslog:1000:1000
This example configures a Publisher called System. This example is a part of the SimpleMonitor.conf configuration file in the ULFM Reference Implementation.