Most people in tech know that you can use Google Analytics to monitor website performance. App developers and website hackers are probably aware that you can monitor your users' use of your apps for your own custom events. However, very few people know that you can use Google Analytics to monitor your own Windows and Linux (and anything else) servers' disk space, performance, and any other metric you want!
One of the best sites I've found for monitoring uptime of my services is Up Time Robot. They do a great job monitoring access to my websites and critical services like SMTP for email and SSH or whatever you like. I can even make sure a certain phrase (like "user login") is appearing on a certain web page! But that only works for internet-facing services.
Many of my cloud service providers (like Rackspace and Amazon, and Digital Ocean) have monitoring services for my servers they are running, but that doesn't help for my client's servers behind the firewall.
After just a little fiddling around, I've come up with an easy way of monitoring key metrics on all of my servers using "Universal" Google Analytics...
I have a database for a client that uses TEXT fields in a postgresql database to save RTF letters with special formatting like bold or italics. The system has used a series of postgresql versions like 7.4, 8.1, and so on.
We don't update very often because postgresql is very fast and very stable. In fact, we usually only upgrade when forced to move to a new version of Ubuntu LTS or something like that where it is easier to go with the current version than it is to try to keep the old one up to date.
Anyway, we upgraded from 8.1 to 9.1 a few weeks ago (using typical pg_dump and pg_restore steps) and all of my OQ (Operational Qualification) testing indicated the data all made it over just fine, the system was working, rows were updating, and everything was working just peachy.
After a few weeks, the LETTERS table need to be updated with new letters and that is when the trouble started...
If you need to run Dropbox as a service, you need to convince Windows Server to run it as a service. That's easy enough using the old "srvany.exe" toolkit program that let's you run "any" program as a service.
Basically, you will install dropbox, grab srvany.exe, create a service entry, add a registry setting, start the service, then you're up and running.
Here are the details...
The raspberry pi is an awesome little device with an awesome community. Because of what you can do with it and its very low cost, I think it is the current "playground" for future programmers, devops, and other technical professionals. The kids playing with raspberry pi's today are the tech leaders of tomorrow. What I would have done, if I could have built a linux server for $40 when I was a kid! Or even a server FARM! I'm thinking a data center under my twin bed would have been so much more awesome than that yeast experiment gone bad...
I ordered some for my kids as part of their homeschool curriculum and brought the RPi's home. I left them in the shipping box in the kitchen. When I came home that night, both kids had the RPi's running and spent the afternoon learning how to program!
While designed for kids and education, they also make great project boxes and embedded systems. Thousands of software packages available with a simple "apt-get install" command which lets you build a tiny little server capable of anything a big server can do, limited only by 512MB of memory and an overclocked 950mhz processor.
I've deployed a couple RPis as network monitors and remote support boxes and continue to experiment with them.
There is tons of information available about the RPi and getting started with it, so I'm not writing another tutorial. I wanted to document what I had to figure out that was scattered around and took me a while to figure out. Also, some of my best practices.
Here are a couple of recipes for building an RPi useful in these environments...
I have a fairly sophisticated setup for my Sonicwall TZ200. I have 3 internet connections: 1) A traditional T1 @ 1.544mbps, 2) AT&T DSL at 6mbps, and 3) Comcast at 24mbps.
I've played with various load balancing schemes, but what has worked best, until recently, is a simple failover system where all my outbound traffic goes out and comes in via Comcast, my email traffic uses the T1, and the AT&T connection acts as a backup connection.
When I tried some percentage based stuff, it worked, but when some users reported the connections being slow, it was always hard to tell who (which connection) was responsible.
Anyway, things were going swimmingly until just a few weeks ago when users began complaining about connections being really slow.
We had been making some changes recently because the TZ200 had been freezing up and Sonicwall had me redo the entire configuration by hand because of that. That issue turned out to be because we were using the DHCP server in the Sonicwall and that didn't cooperate with our Sonicpoint setup. The Sonicpoint would freeze up and stop shipping traffic for no reason. As soon as we moved the DHCP server to a Windows Server and shut that down, our Sonicpoint problem went away.
(I digress again...)
Anyway, after that, things had gone very well until, suddenly a few weeks ago, the performance on the wired network was just horrible! We are supposed to be getting 24mbps down from the Comcast connection, but we were lucky to get 10% of that. Our ping times were horrible at 500 to 1000 msec instead of the usual 20 or 30 msec.
Well, as sometimes happens, it took a lot of serious investigation to finally figure out what was wrong...
I use terminal server a lot with my clients. I was trying to set up RDP sessions to run a certain program and quit (rather than just opening up an RDP session and running the program from there). I do this so that I can run a program and get out. For instance, I have some web-based server management interfaces that are only available from inside the network (like for the phone systems) and if I just want to go in and fix something, I don't want to have to run a VPN session and I don't want to get a full desktop to start a browser, so I just fire off the browser as a program in an RDP session and I'm in and out!
However, I was running into 2 annoyances:
1) I would set up an RDP session to run one program, but the session would hang when the program exited. The session would stay hung so that when I came back and re-connected, I got the same hung desktop session back!
2) No matter what I changed in the RDP settings or on the server, every time I opened an RDP sessions file, my window would have scroll bars with my desktop bigger than the window that RDP opened!
Both were pretty annoying and had different solutions.
I had a situation where I had to recover a failing Zimbra email server running Network version 6.x. The hardware was failing, so I recovered the system to a new virtual server. There were a lot of things to deal with in moving to a new system, but I had everything back and running in about 12 hours (there was almost a terabyte of messages to move to the new system).
Everything looked good, but when I went back to do a reality check on the system a week later, I found out that the automatic backups weren't running.
It took a little research, but I figured out how to get backups to run again...
As most people now know, java being installed (and seldom updated) on nearly every system running Windows has created major security problems, what with all of the security holes being "day one" exploited.
The proper solution (as is the case with most security problems) is to remove something when it isn't specifically needed!
When I looked at my own system, I had disabled java from being activated by the browser (disabling the add-ins for chrome, IE, Firefox, etc.) so I was relatively safe from website/ad based attacks, but I also found that I was running three different installations of java including two for 32-bit and one for 64-bit.
I figured the easy thing to do was remove all of them, then add back the freshest version of one I needed for my Eclipse IDE to work.
Uninstall went fairly well, but I had problems when I tried to install the 64-bit version of java. Every time I installed it, I would get:
Error 1335: The cabinet file Data1.cab required for this installation is corrupt and cannot be used.
I tried lots of different things from the googles, but it took a combination of things to get it to finally install...
When we were having problems testing the Comcast modem for problems, we also had some issues with testing. Whenever we tested the load balanced connection, we were never sure what connection things would go out on.
If you want to force the Sonicwall to route a particular device's traffic to a particular interface (ignoring load balancing's randomness or Sonicwall's route optimizations), then you need to create a routing rule. The rule overrides everything (until you delete the rule)...
I don't use Active Directory and Policies enough to remember which is the proper place when I want to adjust the draconian password complexity settings on a Windows 2008 Server.
Did this help you? You can help me!
Did you find this information helpful? You can help me back by linking to this page, purchasing from my sponsors, or posting a comment!
+One me on Google:
Follow me on twitter: http://twitter.com/mojocode