stevez | 11 May 19:45

how to size core v3.2.1 on centos etc- specifically amount of memory needed?

Zenoss Community

Re: how to size core v3.2.1 on centos etc- specifically amount of memory needed?

created by stevez in zenoss-users - View the full discussion

That behavior is normal. When your memory is showing almost all used, see what the cached value on the swap line is reading. My server has 24GB of memory. When I start zenoss/mysql up it hops right to 10-11GB used. Over a week or so it will climb to about 22GB but 10GB is cached in the column. This is a good thing, the more you have crammed into cache the better.

 

That being said, 4GB is generally considered the bare minimum for running the zenoss stack. With only 50 devices and 400 datapoints I think you'll be ok with it though. Remember your OS takes several hundred up to a Gig. MySQL will bit a chunk out of it as well. Add Zenoss and normal Linux caching and you will be to 4GB in no time.

 

Memory is a cache not a resource. If you see 4GB available, 4GB used and 0ish being cached then you know you're starved for memory.

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

Troy Clifton | 11 May 17:42

How To Monitor Cassandra

Zenoss Community

How To Monitor Cassandra

created by Troy Clifton in zenoss-users - View the full discussion

Zenoss Community -

I'm trying to figure out the best way to monitor Cassandra DB (and I don't know much about it).  It appears there is java stuff as well as standard DB metrics to be gathered.  I can't find a zenpack for Cassandra, but have to believe there is some methodical way to monitor this type of environment. 

 

Has anyone had any luck in this area and can provide some tips for this "Cassandra newbie" from a monitoring perspective?

Thanks,

Troy

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

texjata | 11 May 16:33

Zenprocess false positives and quirkiness

Zenoss Community

Zenprocess false positives and quirkiness

created by texjata in zenoss-users - View the full discussion

On our 3.2.1 zenoss RedHat package install (on Scientific Linux 5.8) the zenprocess is throwing a lot of false positives, sometimes +20 per minute.  Zenprocess is currently disabled as a result.

 

Occasionally all monitored processes for a server begin alerting and then clearing after a minute.  Forcing a remodel clears this up.

Multiple times daily, many servers will begin alerting for all monitored processes being down, which servers alert not being consistent.  This is resolved by restarting zenprocess but often starts again within an hour or less.  I've turned on debug logging for zenprocess but it throws no actual errors.  It does appear to be alerting for process guid's (they look like guid's) as I get emails like:

Unable to read processes on device <HOSTNAME REDACTED :p ); error: usr_local_bin_python 9be7ff841d97fce0fed903685794a63d

 

but I can connect to the server and plainly see that the process is and has been running.  Additionally, the guid is different from what the process monitor on the server says it should be.  These errors go away temporarily after restarting zenprocess and stop completely when zenprocess is stopped.  I've also set "Ignore Parameters" but the issue persists. Its essentially unusable as it first failed overnight and sent 7000 emails.  Zenprocess is currently stopped except for testing/investigation of this issue.

 

History:

We ran zenoss 2.4 stack install for 2 years (I think 2).  Recently I created a virtual instance, migrated to it, upgraded to 3.0.3 then upgraded to 3.2.1.  This zenprocess issue is unfortunate as people here were seriously considering dropping zenoss but are very impressed with the new version, its layout and speed improvements.

 

What can I do to resolve this?  What information can I collect and post which would be useful?  Does this warrant a bug report or is this perhaps an issue with my particular upgrade/instance?

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

me2 | 11 May 15:59

how to size core v3.2.1 on centos etc- specifically amount of memory needed?

Zenoss Community

how to size core v3.2.1 on centos etc- specifically amount of memory needed?

created by me2 in zenoss-users - View the full discussion

Morning,

 

I am monitoring 51 devices each with 8 data points,

Approx. 6 of these 8 data points are creating graphs...8x51=458

I am running 2 of Ryan Matte's zenpacks which are great.

 

My issue is every 2 weeks my localhost max's out 100% on memory and wackiness starts specifically shown with strange snmp polling results.  A reboot brings it back down to as low as it ever goes 48% memory in use.

It will constantly climb, never gives any memory back until it max's out.

 

This is on a centos vm,

attached is a top, run just now when localhost is using  58% of memory

Did I just size it wrong for memory?  Which is an easy fix...

Initial allocation was 4 gigs

I also installed iptables to shaoe traffic, we created a lot of graph reports.

I would like to triple the size but need to identify my issue before doing so,

 

thanks,

Jay

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

dpetzel | 11 May 15:12

unexpected results with script to create template objects

Zenoss Community

Re: unexpected results with script to create template objects

created by dpetzel in zenoss-users - View the full discussion

We do something very similar in that we create templates from scripts. Here is method we use, and I can't say I've seen the behaviour you mentioned:

 

            log.info("Creating RRDTemplate %s", self.app_name)

            dc = dmd.Devices.Server

            temple = RRDTemplate(self.app_name)

            dc.rrdTemplates._setObject(temple.id, temple)

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

Vincent van Os | 11 May 14:35

unexpected results with script to create template objects

Zenoss Community

unexpected results with script to create template objects

created by Vincent van Os in zenoss-users - View the full discussion

Hi there,

 

Im am trying to build a script for adding templates, datasources to this template, datapoints to the datasource and graphs to the datapoint( I know im lazy, yet i take comfort in the idea i'm 'automating' instead of actually doing repetitive work). The little code i got works but only this far that it wel register the object in the database, visible with the zope database manage interface. but not in the zenoss web interface. if i rename the template object via the zope management interface it suddenly shows up in the zenoss webinterface. can someone help me out to fix this so that my script works right away? Tnx in advance!

 

script:

 

#!/opt/zenoss/python/bin/python2.6 import os import sys import re from optparse import OptionParser import Globals import Acquisition from Products.ZenUtils.ZenScriptBase import ZenScriptBase from transaction import commit templateRoot = '/Server/Linux' templateLocation = '/rrdTemplates/' if __name__ == '__main__':         usage = 'rtfm'         parser = OptionParser(usage)         parser.add_option("-t", "--template", dest="newTemplate", help="template")         parser.add_option("-d", "--datasource", dest="newDs", help="datasource")         parser.add_option("-c", "--command", dest="newDsCommand", help="command")         parser.add_option("-p", "--points", dest="newDp", help="datapoints")         (options, args) = parser.parse_args()         dmd = ZenScriptBase(connect=True,noopts=True).dmd         if options.newTemplate:                 newTemplate = options.newTemplate                 newDs = options.newDs                 newDsCommand = options.newDsCommand                 newDp = [options.newDp, ]                 newTemplateLocation = templateRoot + templateLocation + newTemplate         else:                 print "Pass --help for help"                 sys.exit(1)         obj = dmd.Devices.getOrganizer(templateRoot)         obj.manage_addRRDTemplate(newTemplate)         commit()         device = dmd.Devices.getOrganizer(newTemplateLocation)         print(device)         DS = device.manage_addRRDDataSource(newDs, 'BasicDataSource.COMMAND')         print(DS)         DS.enabled = False         DS.usessh = True         DS.component = newDs         DS.eventClass = '/Cmd/Fail'         DS.eventKey = newDs         DS.severity = 'Critical'         DS.cycletime = '120'         DS.parser = 'Nagios'         DS.commandTemplate = newDsCommand         commit()         for x in newDp:                 print(x)                 DP = DS.manage_addRRDDataPoint(x)                 graph = DP.manage_addGraphDefinition(x)                 print(graph)                 gp = newDs + '_' + x                 gps = [x, ]                 graph.manage_addDataPointGraphPoints(gps)         commit()         print("last commit done?")         commit()

 

script is called as follows:

 

script.py -t template -d datasource -c command -p datapoint Usage: rtfm Options:   -h, --help            show this help message and exit   -t NEWTEMPLATE, --template=NEWTEMPLATE                         template   -d NEWDS, --datasource=NEWDS                         datasource   -c NEWDSCOMMAND, --command=NEWDSCOMMAND                         command   -p NEWDP, --points=NEWDP                         datapoints

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

thomas | 11 May 10:36

Clear events not correct

Zenoss Community

Clear events not correct

created by thomas in zenoss-users - View the full discussion

I have a rather strange problem on a zenoss core 3.2.1.

 

I have some events being sent via email, and this works fine, but once in a while, the clear event is sent without much information, ie. %(clearSummary)s and (%clearFirstTime)s fields in the message are empty!

 

I have looked a bit more into it, and in event history there is infact no CLEAR event sent, and there is nothing in the eventlog for the original event, other than deletedTime has been set to the time where the mail is sent.

 

I noticed that in the database that the "clearid" field is empty of events where this has happened, on other events that has been autocleared, this field is filled with evid of the clear event.

 

This is very annoying as the customer doesn't get all information in the events sent to him.

 

I have a couple of event transforms (rewrite of event summary), can this be related to these transforms?

 

I have yet to find a way of reproducing this problem so it is rather difficult to debug further.

 

Is there a known bug or am I doing it wrong? :-)

 

Running Zenoss Core 3.2.1 on Ubuntu 10.04.4 LTS compiled from source

 

Regards

Thomas

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

Apoorv Chincholkar | 11 May 07:25

Creating User and Event template

Zenoss Community

Creating User and Event template

created by Apoorv Chincholkar in zenoss-users - View the full discussion

Hello,


1.  Is it possible to create a user template in ZenPack? (I want to export users and their alerting rules to fresh zenoss setup)

 

2.  Is it possible to add alerting rules in a ZenPack?

 

3.  Is it possible to export dashboard settings? So that I can get dashboard configured right away in the fresh zenoss setup?

 

4. Can I configure dashboard, zenpack, events using command prompt?

 

Regards,

Apoorv

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

Roy Petersen | 10 May 22:16

Setup SMS

Zenoss Community

Setup SMS

created by Roy Petersen in zenoss-users - View the full discussion

I'm look to enable sms alerting within Zenoss core.  The problem I'm running into is I don't have a modem so I can't use most of the documentation out there. I need to run SMS alerts via the Internet connection for now.  We will place additional redundancy at a later time so we won't need a modem. 

 

I've tried adding the cell phone number into the pager field as well as the cellphonenumber <at> vtext.com and neither work.  I've even added the cellphonenumber <at> vtext.com and that doesn't work either. 

 

I see that the linx machine needs to be able to talk snpp protocol but not sure exactly how to get that installed/enabled. 

 

I need this to be a very simple configuration so that I don't have to have all these sms proxy servers or other 3rd party apps to get this working if possible. 

 

Is there someone that can provide a step by step guide on how to configure SMS?

 

Thanks,

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

ThinkItOverFirst | 10 May 21:53

Zenoss Self Monitoring

Zenoss Community

Zenoss Self Monitoring

created by ThinkItOverFirst in zenoss-users - View the full discussion

Recently, I've been toying with the idea of adding some self-monitoring to Zenoss.  Previously we've used Enterprise 3.2.1, but have since upgraded to 4.1.1.  In both version, we've come across a particular issue.  We have a large number of reports that we send to users via cron + reportmail.  From time to time, we get messages from users about data missing from reports.  Sure enough, we dig around and find that performance data hasn't been collected for a particular device  -- not to mention, nothing substantial in the event history to suggest a problem. 

 

In an effort to be proactive instead of reactive to these issues, my immediate thought is to run a cron that checks to see if/when the last time an rrd file was touched.  If it hasn't been touch in X amount of time, then fire off a message to someone. I leaned on Zenoss support a bit to see if they had any suggestions, but they simply stated that there was talk of adding such functionality to future releases.  I'm curious if anyone else has implemented anything along these lines in their environment to keep Zenoss honest.

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community

Travis Balinas | 10 May 15:41

Hardware Monitoring: Syncing Drupal with Zenoss

Zenoss Community

Hardware Monitoring: Syncing Drupal with Zenoss

created by Travis Balinas in zenoss-users - View the full discussion

Hi guys. I came across this post yesterday from some Zenoss alerts I have set up. After checking the forums, I didn't see anything like it so I figured a repost was in order. This is courtesy of Toni WestBrook from his personal site. Cheers!

 

Overview

One of the more daunting tasks of managing a larger network is keeping track of all your devices – both physically, and from a network monitoring perspective.  When I arrived on the job 3 years ago, the first major task I laid down for myself was implementing both an asset management system, as well as a network monitoring system, to ensure we always knew what we had, and if it was functioning properly.

I decided almost immediately that Drupal was the right candidate for the job of asset management.  There are a number of commercial IT/helpdesk systems out there which work great, but they are usually fairly expensive with recurring licensing costs, and my history with them has always been shaky.  Plus, I find myself not always using all the functionality I paid for.  I knew with my Drupal experience, I could get something comparable up in almost no time – this is not a discredit to IT packages, but moreso the power of the Drupal framework.

Network Monitoring – Cue Zenoss

Now that I had the hardware DB taken care of, I needed a NMS for monitoring.  Originally I was planning on Nagios, but a contractor who works for us (now friend) had introduced me to Zenoss, another open source alternative.  Zenoss is awesome – is absolutely has its quirks, and is not the most intuitive system to learn, but once things are up and running it’s great – and tremendously powerful.  So the choice was made.

Now – I had both pieces, but I absolutely hate entering data twice, and the interoperability guy in me loves integrating systems.  So I decided to write a script that would sync our Drupal database with Zenoss.  Drupal would serve as our master system, and any hardware we entered into it would automatically port over to Zenoss.  Any changes or deletions we made (IP address, location, name, etc) would sync over as well.

The below script performs this synchronization.  Some warnings up front – I’m not a Python guy by any means, I specifically learned it for this script, so I apologize for any slopping coding or obvious Python-y mistakes.  I’ve tried to thoroughly comment it to document how to use it and how it works.  Hopefully it can help some others out as well!

 

 

001.# Description: Sync devices to be monitored from Drupal to Zenoss

 

002.#

003.# Setup Work: Create a (or use an existing) content type that houses your hardware items to be monitored.

004.# They should have CCK fields for the IP address of the device, the name, and the type of

005.# device it is. The device type will determine the Zenoss class the script adds it to, and hence

006.# the kind of monitoring it will receive (e.g. Linux server, switch, ping only, etc)

007.#

008.# Additionally, in Zenoss, create a custom property field that will house the nid of the Drupal

009.# node. This serves as the foreign key and will be used to link the item in Drupal to its entry in Zenoss

010.#

011.# Usage: This script should be run from zendmd, and may be run once or periodically. We run it every 20 minutes from

012.# a cron job.

013.# It will create new entries in Zenoss for items not yet imported, delete ones that no longer exist in

014.# Drupal (it will only delete ones that were originally imported from Drupal), and will update ones that have

015.# been updated (type, IP, location, etc).

016.#

017.# Note: Excuse all the extra commits - we experienced some issues with data not being saved, and I threw some extra in

018.# there - they're almost definitely not necessaryimport MySQLdb

019.

020.# Take a taxonomy term from Drupal identifying the type of monitoring to be done,

021.# and convert it to the appropriate Zenoss class path. Update these to whatever terms

022.# and Zenoss class paths that make sense for your environment. We setup ones for

023.# Linux and Windows servers, switches, waps, UPSes, PDUes, etc, as can be seen.

024.def getClassPath(passType):

025.

026.if passType.lower() == "windows":

027.return "/Server/Windows"

028.elif passType.lower() == "linux":

029.return "/Server/Linux"

030.elif passType.lower() == "switch":

031.return "/Network/Switch"

032.elif passType.lower() == "mwap":

033.return "/Network/WAP/Managed"

034.elif passType.lower() == "uwap":

035.return "/Network/WAP/Unmanaged"

036.elif passType.lower() == "ups":

037.return "/Power/UPS"

038.elif passType.lower() == "pdu":

039.return "/Power/PDU"

040.elif passType.lower() == "camera":

041.return "/Camera"

042.elif passType.lower() == "cphone":

043.return "/Network/Telephone/Crash"

044.elif passType.lower() == "sphone":

045.return "/Network/Telephone/Standard"

046.elif passType.lower() == "printer":

047.return "/Printer"

048.elif passType.lower() == "converter":

049.return "/Network/Converter"

050.elif passType.lower() == "ping":

051.return "/Ping"

052.return "/Ping"

053.

054.# Connect to Drupal's MySQL DB (Replace these values with the appropriate ones for your system)

055.imsConn = MySQLdb.connect(DRUPAL_MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DB)

056.imsCursor = imsConn.cursor()

057.

058.# Execute the query to grab all your items to be monitored. In our case, we have a node type called "hardware" that had CCK fields identifying the IP address,

059.# the type of hardware (a taxonomy term that dictated the Zenoss class of the item - see getClassPath above), a physical location, etc.

060.# You'll want to change the specific table/field names, but the inner join will probably stay, as you'll want to grab both the node and CCK fields that belong to it.

061.imsCursor.execute("""

062.SELECT node.nid, content_type_hardware.field_hardware_dns_value, content_type_hardware.field_hardware_location_value, content_type_hardware.field_hardware_ip_value, content_type_hardware.field_hardware_monitor_type_value, content_type_hardware.field_hardware_switchname_value, content_type_hardware.field_hardware_switchport_value

063.FROM node

064.INNER JOIN content_type_hardware ON node.nid = content_type_hardware.nid

065.""")

066.

067.# Loop through all returned records - Check for additions, changes, and removals

068.while (1):

069.#tempRow is our current hardware item record

070.tempRow = imsCursor.fetchone()

071.if tempRow == None:

072.# No more entries, break out of loop

073.break

074.else:

075.# Search Zenoss records for the nid of the hardware item. A custom field will need to be created in Zenoss to serve

076.# as this foreign key. In our case, we used MHTIMSID - but you can use anything you'd like - just be sure to create the field in Zenoss.

077.found = False

078.for d in dmd.Devices.getSubDevices():

079.if d.cMHTIMSID != "":

080.if int(d.cMHTIMSID) == tempRow[0]:

081.found = True

082.break

083.

084.if found == False:

085.# Hardware item not found, add it if it's monitored

086.if tempRow[4] != None:

087.dmd.DeviceLoader.loadDevice(("%s.yourdomain.com" % tempRow[1]).lower(), getClassPath(tempRow[4]),

088."", "", # tag="", serialNumber="",

089."", "", "", # zSnmpCommunity="", zSnmpPort=161, zSnmpVer=None,

090."", 1000, "%s (%s - %s)" % (tempRow[2], tempRow[5], tempRow[6]), # rackSlot=0, productionState=1000, comments="",

091."", "", # hwManufacturer="", hwProductName="" (neither or both),

092."", "", # osManufacturer="", osProductName="" (neither or both).

093."", "", "", #locationPath="",groupPaths=[],systemPaths=[],

094."localhost", # performanceMonitor="localhost',

095."none")

096.tempDevice = find(("%s.yourdomain.com" % tempRow[1]).lower())

097.tempDevice.setManageIp(tempRow[3])

098.commit()

099.# Save nid to Zenoss record (to serve as foreign key) for syncing

100.tempDevice._setProperty("cMHTIMSID","MHTIMS ID","string")

101.tempDevice.cMHTIMSID = tempRow[0];

102.commit()

103.else:

104.# Hardware item found - delete, update, or do nothing

105.if tempRow[4] == None:

106.# Delete if not set to monitor

107.dmd.Devices.removeDevices(d.id)

108.else:

109.# Update DNS and IP to current values

110.if d.getDeviceName() != ("%s.yourdomain.com" % tempRow[1]).lower():

111.d.renameDevice(("%s.yourdomain.com" % tempRow[1]).lower())

112.if d.getManageIp() != tempRow[3]:

113.d.setManageIp(tempRow[3])

114.commit()

115.

116.# Change class if not set to "Manual" (We setup a taxonomy term called "Manual" that would turn off automatic Zenoss class selection during syncing

117.# and allow us to manually specificy the class of the device.

118.if tempRow[4] != "Manual":

119.d.changeDeviceClass(getClassPath(tempRow[4]))

120.commit()

121.

122.# Update comments (location change)

123.d.comments = "%s (%s - %s)" % (tempRow[2], tempRow[5], tempRow[6])

124.commit()

125.

126.# Save any missed changes

127.commit()

128.

129.# Close connection to database

130.imsCursor.close()

131.imsConn.close()


 

 

Original Post

Reply to this message by replying to this email -or- go to the message on Zenoss Community

Start a new discussion in zenoss-users by email or at Zenoss Community


Gmane