Is there an Oracle rdbms monitoring API?
All of the internal database information is obtained from the system data dictionary.  Static metadata can be found in the data dictionary views (e.g. DBA_DB_LINKS for database links) or their underlying tables (obj$ etc.).  Runtime stats can be obtained through the dynamic system ('v$') views (e.g. V$DBLINK).  You may need to look at the documentation for the views to find out how to get the metrics you want.  A bit of google-fu may also turn up code snippets showing how to use the views.

Anything external to the database will have to be monitored through its own logging or diagnostic facilities.  Again, I can't really answer specifics without knowing what processes you actually need to monitor.

Enterprise Manager has a plug-in API which you can use to add external data feeds.  This page has links to the documentation describing how to do this.