Forum Discussion
Logan_Ramirez_5
Nimbostratus
Apr 01, 2010iControl web app to generate data for Cacti graphing
Ok, so I found this link the other day talking about how to use 'wget' instead of SNMP for Cacti graphing.
http://penguinman-techtalk.blogspot.com/2009/03/cacti-graphing-remote-service-without.html
and I just happened to be working on a couple of other apps with iControl...anyway, I ended up writing an app that takes in variables through Request.QueryString in the URL and it posts the meaningful Cacti data - in this case, 'current connections.'
In other words, i send in this:
http://server/myIControlApp.aspx?virtualdata_sa1=virtual_server_name
and I post back:
virtual_server_address:current connections
or, as an example:
web_https:44
which is the current conns on that virtual server.
OR, the specific reason I wrote it, I pass in a poolname and get the active connections on each member:
http://certificate/ltmquery/default.aspx?pooldata_sa1=pool_name
and get back stuff like
member1:12 member2:25 member3:12
then, anyone who understands Cacti a little and reads the article above can graph it.
it's written in VB but I imagine some folks out there could convert it to other languages...
so if you're interested, I suppose let me know.
or, moderators, maybe you can guide me to what I should do next - code share I suppose!
anyway, it's great, though, because now I can graph detail that I couldn't get with SNMP and cross-reference graphing points (such as the active connections for all pool members in virtual servers in both of our data centers - a more 'complete' picture of our enterprise web use).
- Hamish
Cirrocumulus
Hi. - Logan_Ramirez_5
Nimbostratus
My SNMP point wasn't about these specific examples (like virtual servers and pools) but about 'the almost endless possibilities of using iControl and this output method.' We use several of the SNMP templates in existence for virtual servers, total connections, etc, as well, but this method can output anything obtainable from iControl. - Hamish
Cirrocumulus
Hi.LtmPoolMemberEntry ::= SEQUENCE { ltmPoolMemberPoolName LongDisplayString, ltmPoolMemberAddrType InetAddressType, ltmPoolMemberAddr InetAddress, ltmPoolMemberPort INTEGER, ltmPoolMemberConnLimit Integer32, ltmPoolMemberRatio Integer32, ltmPoolMemberWeight INTEGER, ltmPoolMemberPriority INTEGER, ltmPoolMemberDynamicRatio INTEGER, ltmPoolMemberMonitorState INTEGER, ltmPoolMemberMonitorStatus INTEGER, ltmPoolMemberNewSessionEnable INTEGER, ltmPoolMemberSessionStatus INTEGER, ltmPoolMemberMonitorRule LongDisplayString, ltmPoolMemberAvailabilityState INTEGER, ltmPoolMemberEnabledState INTEGER, ltmPoolMemberDisabledParentType Integer32, ltmPoolMemberStatusReason LongDisplayString }
- L4L7_53191
Nimbostratus
This is a good discussion. Very generally speaking, iControl isn't an ideal tool for heavy monitoring tasks and SNMP should win the day. However, there are always exceptions and each environment is different so your approach may be just the ticket and may not introduce any problems at all. Also, I've seen poorly configured SNMP setups kill systems as well, so care must be taken no matter what. - Derek_21893
Nimbostratus
Interesting discussion. So Matt, just how much "heavier" is iControl, and in which examples? If you use get_all methods instead of trolling through one by one, it seems pretty lightweight to me. I've been collecting about 10,000 data points every 5 minutes using iControl and I haven't run into anything that suggests either the LTM cpus are being adversely impacted or that it's adversely impacting the collection system resources. In fact, given this massive amount of data I'm collecting, the collection run typically completes in less than 3 seconds, which actually is pretty amazing. - Logan_Ramirez_5
Nimbostratus
indeed! has someone 'measured' this? that is, in fact, my feeling on this, generally speaking - that SNMP is 'the most light weight' solution available, but iControl (if written well) can still be light weight. - Hamish
Cirrocumulus
Hmm... I don't have numbers, but lets compare the two protocols... On the one hand we have SNMP... The query is a simple OID 'string' of numbers... e.g. .1.3.6.... And is a few Bytes long... The query will be carried in a single UDP packet... The response is going to be in 1 or more UDP packets 'streamed' from agent (F5) to manager... And is of the form OID & data... There's no wasted data or packets. At the agent it's should be as simple as grabbing data from a table, and sending the OID and the data... Quick & easy. You can implement this in a few kB or less (Yes you can make it more complex, but you don't need to). Tables (In v2+) are pulled with one query (v1 requires query/resp/query/resp). - Logan_Ramirez_5
Nimbostratus
yea, this is good, enjoyable, low-level stuff. - L4L7_53191
Nimbostratus
Ok, this is very NON scientific, so chalk it up in the category of passing interest to this discussion. - Hamish
Cirrocumulus
I'd like to see Agent/Server/BigIP side resource usage for equivalent tasks... I'm not certain it would be very easy though...
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects