|
ATTENTION: THESE SCRIPTS HAVE NOT BEEN TESTED IN A PRODUCTION ENVIRONMENT!!!
IF YOU FEEL YOU ARE HAVING ISSUES WITH YOUR KILN INSTALLATION, PLEASE CONTACT
FOG CREEK SUPPORT AT CUSTOMER-SERVICE@FOGCREEK.COM.
This repository contains a series of Powershell scripts that can be used
to check up on Kiln, log environment data, restart the backend if necessary,
and even send email for alerts.
Powershell Note: If you have issues with the scripts aren't running, you
may need to update your execution policy. See the Set-ExecutionPolicy
command if you run into that.
The following files are included:
- checkBackend.ps1 Contains the Powershell functions to check Kiln
- test-checkBackend.ps1 Use this file to test functions
- run-checkBackend.example.ps1 This is an example script that uses the
functions in checkBackend.ps1.
- tools.ps1 Helpers for parsing the log file
Here's a more detailed explanation for some of the files
# checkBackend.ps1
This is the main file that contains the methods used by the other scripts.
Nothing is actually executed when you simply run the file using
`. .\checkBackend.ps1`, but instead, the functions are loaded into memory.
# test-checkBackend.ps1
You can use this file to make sure your variables are set up correctly. You'll
need to update the first line to correctly point to the checkBackend.ps1.
Test-KilnVersion requires no parameters, so there's nothing we need to do here.
However, Test-KilnDiff, which gets a diff from the Kiln Storage Service,
requires actual repository information, so we're likely going to want to go to
the database to get this data.
$sRepoGUID, $sChangeset1, and $sChangeset2
What we're looking for is a relatively small diff (a few lines) in a repository
that we don't expect to be deleted. This will help us ensure that our
Test-KilnDiff method runs reliably without consuming too many resources.
You can use the Kiln UI to find a changeset with a diff that appears relatively
small. Once you find a changeset, view it in the Kiln UI, and note the partial
changesetID in the URL, e.g. .../History/f181ad063566. Once you've noted the
changesetID, run the following query in the Kiln database, updating the Where
clause accordingly:
Select Repo.sName, Repo.UUid, Changeset.sID, Changeset.sParentID1
From Changeset
Inner Join ChangesetPush
On Changeset.ixChangeset = ChangesetPush.ixChangeset
Inner Join Repo On ChangesetPush.ixRepo = Repo.ixRepo
Where Left(sID,12) = 'f181ad063566'
This is going to give you the UUid, sID, and sParentID1, which you'll map to
$sRepoGUID, $sChangeset1, and $sChangeset2, accordingly.
Testing values in test-checkBackend.ps1:
You can go ahead and update $logFile as well. It's not used in the test, but
if you copy variables over to run-checkBackend.example.ps1, they might as well
be the same.
$kilnRepositories is used to find miniredis.db, so update it accordingly.
Once all the values have been updated, navigate to the directory from the
powershell command line and run:
. .\test-checkBackend.ps1
You should see:
True
True
The size of miniredis.db is: 123
123
The first True indicates that it was able to ping the backend for version.
The second True indicates that it was successfully able to run the Diff. If
you get a false back for both, then either the backend is completely down or
something is wrong with our script.
If you get a False back for the second value, it's likely an issue with the
repo and changeset variables that you have.
If you don't see a size for miniredis.db, check your $kilnRepositories
variable.
Once you get a satisfactory output with two Trues and a size for miniredis.db,
move to the next step.
# run-checkBackend.example.ps1
This script is an example of what functionality is available in
checkBackend.ps1. You may not need each bit of functionality in your
environment, so remove sections of code as appropriate.
I explain the variables for $sRepoGUID, $sChangeset1, and $sChangeset2 in the
above section for test-checkBackend.ps1, so read the relevant info if you
haven't already.
This file is going to use the same variables as test-checkBackend.ps1, so go
ahead and copy over the variable lines to run-checkBackend.example.ps1.
The script begins with logging memory usage for Kiln processes and instead of
simply testing the services, this will actively log and will indeed restart
the storage service in Check-KilnBackend if either of the Test- methods fail.
That's why it's important to make sure your variables work in
test-checkBackend.ps1 before running this script.
If you want, you can configure it to send you an email if a certain condition
is met, such as if a check of Kiln fails or if miniredis.db is too large.
Once you've tested your variables in test- and have copied them over to run-,
you can test this script by navigating to the directory in powershell and
running:
. .\run-checkBackend.ps1
Once that executes, you should see that your log file has updated. If it worked
successfully, you may want to have the script run every 15 minutes as a
scheduled Windows task. See http://kiln.stackexchange.com/questions/4795/ for
help on setting up a powershell script to run as a scheduled windows task.
|
Loading...