Most of the ZenPack development discussions occur on the zenoss- zenpacks list and there's a relatively new Community ZenPack site with a wiki that needs filling out (http://community.zenoss.org). We've been working on improving the Developer Docs, but I take it you haven't found the section "10.4. Creating a New Collector" up to par? We recently refreshed the Dev Guide with more updates, so make sure you have the 2.3.3 version.
Check out the guides for ZenPack development I've been writing on the Community ZenPack site and I'll help out where I can (or look for me on IRC). Thanks, Matt Ray Zenoss Community Manager community.zenoss.com [email protected] On Apr 2, 2009, at 3:48 PM, Raevesor wrote: > Hello there… > > I am writing because I have some questions… and maybe some > contributions. My goal is to create community zenpacks for many > network elements (eventually) right now I’m starting with a > collector plugin for a single device class. I’m very experienced > with Python and network engineering and various NMS over the years… > I can’t find an iota of valid documentation regarding this zenmodel > collector plugin. The Zevelopment Guide stuff appears to be shaky > at best and Google has left me with a series of desires similar in > breadth of scope to an American teenager. > > I need something that shows me how this class is actually supposed > to be built... the AIXfs is a great example, I guess, except it > doesn't tell me that the options are for 'maptype', 'compname', > 'relname', 'modname', 'deviceProperties' or how they fit into the > rest of the ZenOSS world. Data is a goesin goesout thing, right? > So those are variable assignments, aka 'goesin'. Where will they > 'goesout'? What am I actually supposed to be putting there? At > this time, I don't have the time to reverse-engineer the ZenOSS code. > > My organization would like to use ZenOSS but we'll settle with the > simple graphing of Cacti glued together with other less-complete > solutions if we can't even do simple 'index' polls and look at > graphs of virtual interfaces... etc. > > So, knowing that I have NO IDEA what I'm doing in regard to this > plugin, I do have some code for F5 virtuals so far... I will paste > it below. I know it is wrong.... I'm just trying so many things to > try to make this work and at least get ZenModeler to *try* to use > it. In zProperties, this plugin I have written is indeed in the > ColelctorPlugins list... and ZenOSS did create the .pyc file in the > dir after I dropped-in the .py... no .pyo though... and it never > even attempts to use this plugin from what I can tell. For > example, I realize that the below code doesn't even provide the full > oid anywhere... that is most likely a problem... although I'm not > sure since the MIBs are loaded... etc. Need more information. > Maybe I'll wrtie the how-to after getting some answers here. :) > Here's the code: > > > Code: > > __doc__="""F5 Virtual Map > > This modeler determines the Virtuals on the device and updates > appropriately. > It is up to the performance template that must be named 'F5Virtuals' > to collect > the actual performance data (eg stuff and things). > """ > > from CollectorPlugin import SnmpPlugin, GetTableMap > > class F5VirtualMap(SnmpPlugin): > > maptype = "VirtualMap" > compname = "os" > relname = "f5Virtuals" > #modname = "Products.ZenModel.VirtualAddresses" > #deviceProperties = \ > # SnmpPlugin.deviceProperties + ('zVirtualMapIgnoreNames',) > > # > # The columns from the MIB > # > columns = { > '.1': 'virtualname', # > '.12': 'vcurrentconn', # > '.11': 'vconnpersec', # > '.7': 'vbytesin', # > '.9': 'vbytesout', # > } > > #snmpGetTableMaps = ( > # GetTableMap('ltmVirtualServStatEntry', '. > 1.3.6.1.4.1.3375.2.2.10.2.3.1', columns), > #) > snmpGetMap = GetMap(columns) > > > def process(self, device, results, log): > """Gather Virtual Statistics List""" > > log.info('processing %s for device %s', self.name(), > device.id) > getdata, tabledata = results > > # > # Gather the data using SNMP and just exit if there's an SNMP > # issue. > # > vtable = tabledata.get( "ltmVirtualServStatEntry" ) > if not vtable: > log.warn('No SNMP response from %s for the %s > plugin', device.id, self.name() ) > return > > skipvipnames = getattr(device, 'zVirtualMapIgnoreNames', > None) > maps = [] > rm = self.relMap() > for vip in vtable.values(): > if not self.checkColumns(vip, self.columns, log): > continue > if not skipvipnames: > om = self.objectMap(vip) > om.id = self.prepId(om.mount) > > # > # Map our MIB data to what Zenoss expects > # > om.blockSize = 1024**2; # ie MB > > rm.append(om) > maps.append(rm) > > # > # As a final sanity check, see if we found anything. If we > # didn't find anything, that's probably an error so just > return. > # > if len(maps) == 0: > log.warn( "No VirtualAddresses found by %s for %s", > self.name(), device.id) > return > > return maps > > > > > > > > Just need to learn how to build these... I think I could write some > rockin' community zenpacks in no time if I could figure this out. > Or something. I at least need them... would love to publish that > work but I haven't seen how the licensing works when they are trying > to push the commercial zenpacks, etc... so I will do my best not to > step on any toes but point being we do need to be able to develop > these to use this product. Any help would be greatly appreciated. > > --Carl > > > > > -------------------- m2f -------------------- > > Read this topic online here: > http://forums.zenoss.com/viewtopic.php?p=32974#32974 > > -------------------- m2f -------------------- > > > > _______________________________________________ > zenoss-users mailing list > [email protected] > http://lists.zenoss.org/mailman/listinfo/zenoss-users _______________________________________________ zenoss-users mailing list [email protected] http://lists.zenoss.org/mailman/listinfo/zenoss-users
