[Looking for Charlie's main web site?]

Free tools for SAN monitoring, VM Monitoring and more...and their educational site

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Folks know that I like to share news of tools (see my CF411 site), but I want to point out here a couple of free ones in particular that may address problems people are having in new/modern configurations: one is a tool for monitoring a SAN, and the other is for monitoring VMs.

It also gives me a chance to offer some props for the site of the company behind the tools, SolarWinds, which again many may find valuable in educating not only about the tools but the topics that the tools help with.

The free SAN and VM monitoring tools

The two tools (and one more for bonus) are:
  • SolarWinds Free SAN Monitor - keep a close eye on the performance & capacity of your storage arrays and become a storage superhero!
    Note also:
  • VM Monitor - continuously monitor a VMware® ESX Server and its virtual machines with at-a-glance virtualization health statistic
    Note also:
  • WMI Monitor - monitor your Windows® apps and servers in real time, using built-in, community-sourced, and customizable application templates!
    Note also:

I haven't yet used them myself, so this isn't so much a recommendation of the tools but rather a recommendation that you consider them if you are interested in what they have to offer.

The company offers still more free tools, as well commercial ones of course.

A company that gets how to educate you about their products

You may have noticed above that I offered as well links to videos about each product. SolarWinds has really done a great job offering educational resources, especially videos, and organizing them into categories such as tech talks, webcasts, and more.

Indeed, if you may be new to network management (which can be a broad and/or deep subject, appealing variously to generalist IT geeks and hard-core network admins), they offer lots of compelling introductory resources, including their geek guides and even certification training . Of course they also have a helpful blog and twitter feed.

Just as I previously praised the Mura folks as a "company who got it right" in terms of setting up a compelling, informative web site for IT folks, I really have to say the same for the SolarWinds folks. Congrats, and thanks.

I'll be speaking at cf.Objective() on "Stack Tracing CFML Requests to Solve Problems"

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Though I got the news a couple of weeks ago that my submission to cf.Objective() 2010 had been accepted, I only tweeted my delight about it and didn't blog it. Here's the description:

"CF911: Stack Tracing CFML Requests to Solve Problems"

Regardless of what CFML server monitoring tool(s) you have, or even if none, did you know that you can use a feature called "stack traces" to be able to pinpoint the exact line of code that a CFML request is running at any time? Did you know how to use that information to troubleshoot performance/stability problems? Do you know how to obtain that information either manually or automatically (such as during a crash while you're not watching)? Do you know how to obtain that information in any of the CFML Server Monitors (FusionReactor, SeeFusion, the CF8/9 Enterprise Server Monitor), or with free command line tools? And how to do this for any CFML engine (CF, Railo, BlueDragon, etc.)? Do you know how to interpret the information once you get it?

In this session, veteran CF troubleshooter Charlie Arehart will help remove the mystery from using stack traces. It really is amazingly simple with the right tools, and it can be incredibly useful to solve otherwise thorny problems, once you understand how to interpret the information.

Of course, I'm thrilled to be heading back to Minneapolis. I spoke there previously in 2008 and 2007 but couldn't attend in 2009. It'll be great to see all the fine folks who run and attend this unique conference.

BTW, I just saw also that CFUnited announced another round of topics accepted today and I see a topic whose title if very similar, "How to Read a Stack Trace", by the inimitable Daryl Banttari. It's hard to tell from his brief description how similar these will be, but Daryl is awesome so I'm sure I'll learn much from his. (I was literally just about to offer mine as another CFUnited submission but now won't of course. :-) Hopefully another of my submissions will be accepted, so I can keep my streak of having spoken at every CFUnited since they started.)

Anyway, the good news is that whichever conference you go to, this important (and often misunderstood) topic will be covered! :-)

Spying on ORM database interactions: Hibernate, Transfer, etc. on any CFML engine

Note: This blog post is from 2009. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
As people use CF9's ORM feature (or other ORMs like Transfer and Reactor, or indeed Hibernate, on any version of CF6+ or indeed any other CFML engine), they may be left wondering what sort of SQL interactions happen "under the covers" between the ORM framework and the database engine (whether in a given request, or perhaps at startup of CF).

Well, there are several ways you can watch them, as this entry will discuss, and some may be better suited to the job than others. It can be very interesting to discover what's going on, especially if you're having any suspected performance problems which you think may be related to ORM processing (or just if you wonder what all it does for you).

[....Continue Reading....]

CF911: Easier thread dumps and stack traces in CF: how and why

Note: This blog post is from 2009. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
You may have heard the value of taking thread dumps or stack traces when trying to understand and resolve problems with CF. They can be valuable to see what's really running on your server at the time it may seem hung or slow to respond. The problem is that they can be challenging to obtain, so here's how to get them even more easily.

(If you're not familiar with the value of thread dumps or stack traces, read on. The resources I point to get help you to appreciate their usefulness.)

[....Continue Reading....]

Tracking number of CF sessions per application easily, and why you should care

Note: This blog post is from 2009. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Ever wanted to count how many sessions are active on your server, in total and per application, whether on CF 7 or 8? And regardless of whether you're using CF's regular sessions or the "new" J2EE sessions feature introduced in CF 6? Would you be surprised to find you could have a shocking number of active sessions?

[....Continue Reading....]

CF911: CF 8 Server Monitor reports "ColdFusion Server is unavailable" (solution)

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Here's another entry in my CF911 series. If you try to open the CF8 server monitor and get the error "ColdFusion Server is unavailable", the problem may be in your web server configuration. In this entry, I help you confirm if you're getting the problem I refer to here, and of course I show the solution (3 actually), with a caveat.

[....Continue Reading....]

A 12-page Intro/Review of FusionReactor 3

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
If you missed my 12-page introduction and review of FusionReactor 3 in the last issue of the FusionAuthority Quarterly Update, Volume II Issue IV which came out earlier this summer, well, the good folks at the magazine, Michael and Judith, have kindly chosen to post the article online:

FusionReactor: ColdFusion Server Healthcare (and What's New in Version 3) (PDF)

Thanks, folks! I hope it might serve as a useful intro for those who've not seen the tool (whether in its older or newer version), which can be used to monitor CF 6, 7, and 8. That CF8 support is important not only for those running CF8 Standard, which doesn't have the CF8 Server Monitor, and also even for those who can run the CF8 Server Monitor, as there are some useful benefits of using it even on CF8 Enterprise). Note that FR also works with Railo and OpenBlueDragon, as well as BlueDragon/J2EE and indeed any J2EE application (including LiveCycle Data Services) and any J2EE engine (JBoss, Tomcat, WebSphere, etc.)

The article can also serve as a review of features that those already using the tool may have missed, or you can focus on what's new in FR 3 (quite a bit).

Check out the article, and the tool, including the available live demo in addition to the 10 day trial. I'll note that the live demo is running at a lower level of authority (one of the new features of FR 3), so you don't see and can't do all with it that you might as a full admin user.

I'll arrange to do a demo of the tool on an upcoming CF Meetup session, whether on its own or along with other monitoring tools for CF which I've discussed before.

45 Page User Guide for the CF 8 Server Monitor

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
If you're exploring the ColdFusion 8 Server Monitor, or perhaps have been using it and wonder if you may be getting all you can out of it, I want to point out an available 45-page user guide for it.

Ok, that's a bit of a tease. I'm referring to my 4-part series of articles on the Monitor available in the Adobe Dev Center. While I did them several months ago, I still often see people ask questions that are answered there, so I wanted to take a moment to remind folks of its existence. I realize that everyone may not keep up on the articles posted in the DevCenter (but I'll note that I offered an entry recently on how to keep up on new postings there and elsewhere.)

My CF8 Server Monitor article series was divided into 4 parts, which I've listed below. I also show here each articles's sections. (Note that the "table of contents" offered on the left of the online articles doesn't always list each section heading: it's more for breaking up the articles into managable sized online pages, which is too bad if one uses them as a gauge of the article's sections.) I've also broken down the sections into subsections.

  • Part 1: Using the Server Monitor in development
    • Unlocking the "black box"
    • Starting and using the Monitor
    • What it means to "Start Monitoring" (or not)
    • Useful monitoring for development
      • Tracking shared scope memory utilization
      • Track slowest tags or function calls
      • Tracking largest variables in a request
      • Tracking JVM Memory Usage
      • Tracking cached queries
      • Tracking large, slow, and frequent queries
  • Part 2: Using the Server Monitor in production
    • Challenges in managing a production ColdFusion 8 server
    • More zero-overhead reports
      • Template Cache status tracking
      • Session tracking revisited: active sessions over time
      • Tracking ColdFusion errors
    • Reports enabled with monitoring, profiling, or memory tracking
      • Avg Response Time and Requests Per Second
      • Active Requests
      • Queued/running requests over time
      • Finding heavy hitters
      • Active Queries
    • Aborting unresponsive or troublesome requests
  • Part 3: Automated monitoring and request management with Alerts and Snapshots
    • Automated monitoring and request management with Alerts
      • Toward 24x7 operations
      • Configuring Alerts
      • Available actions (overview)
      • Types of alerts
      • Viewing Alerts data
      • Available alert actions (details)
    • Substantial diagnostic details with Snapshots
      • The Snapshots page
      • Viewing snapshots
      • Stack traces within the Snapshot
      • Accessing past snapshot data
  • Part 4: Multiserver Monitor, Admin API monitoring, and more
    • An enterprise dashboard with the Multiserver Monitor
      • Opening the Multiserver Monitor
      • Adding new monitors
      • Observing the status of a monitored server
    • Some possible challenges using the Multiserver monitor
      • Securing the monitoring of your server
      • Be careful with browser caching and the cross-domain file
      • Multiserver Monitor configuration is stored per the domain used to open it
    • Programmatic Monitoring with the Admin API
    • Tweaking the Monitor in the Settings section
      • The General settings tab
      • The Filter Settings tab
      • The Profiling Filter tab
      • The Aliasing tab
      • The Refresh, Reset All Statistics buttons
    • Miscellaneous aspects of the Monitor
      • Flash Remoting must be enabled
      • Start settings remain enabled
      • Monitoring even when the server is becoming unresponsive

I hope you'll see from the above that there could be much more to the CF monitor than you may have realized. Each of the subsections often has lots of useful tips, tricks, and traps that I've observed over a year of use in both development and production.

And though I make the point in the articles, I'll repeat that some of the features come with zero overhead. I've blogged about that before. Don't let people tell you never to use it because it will harm your server's performance. As I say in each of the above, it's only the "Start memory tracking" button (one of 3 at the top) that could be trouble (and maybe "start profiling", but to a much less worrisome extend). But you don't even need to use the 3rd (and least obtrusive button) "start monitoring" to get a lot of great value from it. I stress more about this in parts 1 and 2 of the series.

What about FusionReactor and SeeFusion?

Of course, my support for the CF Server Monitor doesn't diminish my enthusiasm for alternatives like FusionReactor and SeeFusion, nor do I see one replacing the other as I've written about before. Each does something the other may not do, and I see value in each of them (and even have recommended running more than one at a time to solve certain problems).

See my corresponding blog categories on these, at the right, to find more entries on FR and SF, as well as the CF8 Server Monitor.

I just want to help people make the most of whatever monitor they use.

Available for Consulting Help as well

I'll throw in, as well, that if you need help using any of these tools, or doing any CF server troubleshooting, I'm available for consulting help, whether online or on-site, for as little time as is needed to help solve the problem. See my consulting page for more information. I've helped many organizations, large and small, resolve nagging problems, using either (or none) of these monitoring tools.

Feel free to contact me any time to pose a problem related to performance, stability, or similar errors or problems, and I'll let you know if it's something I can help with.

Averse to reading 45 pages online? you don't need to

For those who don't fancy the prospect of reading 45 pages of content online, note that I'm referring to the page count as it would be if you printed the available "printable version" (offered on all DevCenter articles). You can use that feature yourself to obtain a single long HTML page for each article, and then if you want you could print that out. (And if you use features in your printer to print multiple pages to a side and 2-sided, as I discuss here, you can fit it all in just a few pieces of paper!) (Update: tipicalcharlie domain is no more, but page recovered using Archive.org.)

I'll add that for those who prefer watching over reading, I've also given presentations about the monitor at several conferences and user groups (some available as online recordings), which you can find at my presentations page.

What is the FusionReactor datasource monitoring feature? Why would I use it? Powerful stuff!

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
As I wrote my previous entry on FR over the weekend, I got to thinking that some readers (whether new to FusionReactor, or using it but unaware of the datasource monitoring setting I mentioned) might benefit from a little more information about the FusionReactor's datasource monitoring feature.

What is the datasource monitoring feature? Why would I use it? Powerful stuff!

The datasource monitoring feature, referred to in the docs as the "JDBC wrapper", is a low-overhead way to configure FusionReactor so that it captures information about each query (against a given datasource), for every request, in detail and in aggregate. It captures and reports:

  • the SQL statement (including CFQUERYPARAM values)
  • the execution time (time spent in the database, and time spent getting it from the database to CF)
  • the number of rows returned
  • the CFML template and line of code where it was executed
  • and more

This query information is tracked per request and also in aggregate across all requests (in the graphs in the Enterprise Dashboard and System Metrics pages, the Longest JDBC page, and other places.)

It's really powerful information to have when you're trying to understand why and how your page, application, or server it performing.

You can see more about using the information in these feature focus pages at the FR site: What are System Metrics? and Resource Graphs, among others.

As I said in the last entry, you can learn more about setting up the FR JDBC wrapper feature (including the simple steps on how to implement it--which have been updated in the FusionReactor 3 docs) in the Tutorial (pdf) and User Guide (pdf).

What's the overhead of this datasource monitoring? What's it doing?

That's a natural and reasonable question. The folks at Intergral (makers of FusionReactor) say that it's very low overhead, and they've done considerable testing (millions of requests before each release) to confirm it.

Maybe it would help to understand how it works. It's quite simple, really. When you configure a datasource to be wrapped (per the instructions pointed to above), you're basically just implementing an alternative JDBC driver (FusionReactor's) to literally "wrap" the driver that was being used originally by your datasource.

Your code continues to use the same Datasource Name, but the change of the datasource causes CF to pass the SQL first to the FusionReactor JDBC wrapper, which takes note of the starting time, the SQL statement, etc., and then passes it the query on to the real (original) database driver. That then passes it to the DB, and gets the result, and before it's passed back to CF, it goes back through the FusionReactor wrapper, which notes the execution time, recordcount, etc.

So you see, the wrapper is really quite lightweight. It's just an observer, watching what's going to and from the database. The info is then written to FusionReactor's JDBC log (if enabled) and stored in FusionReactor's small memory space for presentation in the various interfaces that show JDBC status information. Again there's more about this in the documentation.

Some other tips on the JDBC Wrapper

To see information on what queries were executed (if the datasource was wrapped), see the bottom of the request details page (for either a running request or the request history page). Further, note the available JDBC tab in that request details page. That will show each SQL statement and the details (time, count, etc.). The bottom of that page will also show counts and averages for all the queries in that request.

You'll see at the bottom of that page that you can also configure the JDBC settings page to restrict how many queries are shown in the JDBC request details, and you can limit it to only those exceeding a certain amount of time, as well as whether to show them in chronological order or executiontime order.

I'll note as well that if you do implement the JDBC wrapper feature, you'll probably want to enable JDBC logging, which is disabled by default. This writes all the detail above to a log file, for each SQL statement, which can be great for either post-mortem analysis (after a crash) or for trend analysis (perhaps across several restarts). You can choose to limit the logging to queries slower than a set number of milliseconds (separate from the control above about what queries to show in the request detail page.)See the JDBC>JDBC Settings option in the left nav bar of the FR interface.

The wrapper configuration for each DSN itself also offers still more features that many miss, so check out the docs. The Tutorial concludes with an example of using the rowlimiter feature to put the brakes on a rogue page, while the user guide details this and all the available features of the wrapper.

Learning more about FusionReactor

For more on FusionReactor in general, see their web site or my past blog entries on it.

(And yes, before anyone else would point it out in a comment, both the CF 8 Server Monitor and SeeFusion also provide this sort of JDBC query information. In the CF 8 Monitor, it's built-in (no need to configure the DSNs at all). And in SeeFusion, there's no need to manually configure each DSN, as there's a one-button configuration option. Intergral are said to be working on something similar for a future release of FR, so some of the concepts above apply across the monitors.)

FusionReactor works with ColdFusion Standard and Enterprise in version 6, 7, and 8, as well as Railo, Open BlueDragon, and BlueDragon/J2EE, and indeed any J2EE application server or Servlet engine. (BTW, technically, the term J2EE has been obsoleted by the more version-neutral Java EE or JEE. So many things in CF docs and related tools still refer to it as J2EE simply because most CFers aren't paying that close attention to such details, so there's been little motivation to make the clarification.)

PS: Why is it called the JDBC wrapper feature, instead of the datasource monitor?

That's an interesting question. It might feel a little clumsy calling it the JDBC wrapper. I wonder sometimes if CF users may miss the feature. Hopefully the explanation above about how it works helps. But you may wonder why it's not called the "datasource monitor", which might be friendlier for CFers.

But here's the thing: as I said a moment ago, FusionReactor is not JUST a CF server monitor. It can be used by any J2EE server or servlet engine. And not all J2EE app servers would use a concept of a "datasource".

Consider a Tomcat developer who might write a servlet or JSP that calls a database. They could leverage this JDBC wrapper feature (and all of FusionReactor's features) just as readily, though instead of changing the configuration of a datasource they would modify the JDBC URL in their code or a config file. That said, there are some J2EE servers that do use JNDI datasources.

So the makers of FusionReactor (Intergral) have to walk a bit of a fine line about labeling features in a way that might apply only to CF.

It's amazing, really, that one might not otherwise have any reason to notice that the product is designed to be used by either CF or J2EE shops. Most of us think it's just a CF monitor. It's much more.

And BTW, it's licensed per server, so you can install it on as many engines as you have (that it can monitor) on a single machine. In fact, you can even configure a free Tomcat engine just to be a monitor of other FusionReactor (Enterprise) instances.

This is something that Intergral is now offering (in beta) as a new packaging of the tool as "FusionReactor Enterprise Monitor - FREM". You can get it (or learn more) at their Fusion Labs site. I'll have more on that in a later entry.

Using FusionReactor's datasource monitoring feature? Here's a tip

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
If you're using FusionReactor, and you set up a datasource to be monitored by it (the "JDBC wrapper" feature), did you know that you can configure it so you can see the datasource name for each query in the request details? A lot of people seem to miss it, so I wanted to point it out.

You just need to add the string:

;name=dsnname

to the end of the JDBC URL that you configure (per the instructions). For instance, for the wrapped version of my AdventureWorks SQL Server DB, I use:

jdbc:fusionreactor:wrapper:{dbc:macromedia:sqlserver://localhost:1433;
databaseName=adventureworks;SelectMethod=direct;
sendStrinParametersAsUnicode=false;MaxPooledStatements=1000}<strong>;name=AdventureWorks</strong>

That all goes on one line, of course, but I didn't want it to mess up the display in some browsers.

You can learn more about setting up the FR JDBC wrapper feature (including the simple steps on how to implement it--which have been updated in the FusionReactor 3 docs) in the Tutorial (pdf) and User Guide (pdf).

If you're not familiar with the datasource monitoring feature, I'll share more about it in a follow-up entry.

More Entries

Copyright ©2024 Charlie Arehart
Carehart Logo
BlogCFC was created by Raymond Camden. This blog is running version 5.005.
(Want to validate the html in this page?)

Managed Hosting Services provided by
Managed Dedicated Hosting