The new TFS Administration Console will show you very basic information about warehouse & cube processing. However, it doesn’t show you anything about the queued & executing jobs. These are both gaps that I hope we address in the shipping product in the future. In the meantime for any real warehouse or job status information you have to hit the web services. Since the web services don’t allow you to invoke them using a web browser from a remote computer, you’re forced to logon locally to the server and run them from there.
The smarter option is to download yourself a copy of WebServiceStudio, which allows you to invoke web methods with complex parameters from your remote workstation. No more logging onto servers!
Here are the WSDL EndPoint’s that you’ll need. Copy them in, change the server name, select ‘Get’, select a method from the tree, select ‘Invoke’, (ignore the exception dialog if you get one the first time), select ‘Invoke’ again and there you have it.
- Warehouse Control Service - http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx
- Job Service - http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx
Now, the problem with either reading the XML from the web browser (argh! my eyes!), or using WebServiceStudio is that there’s lots of nested information which makes it difficult to find out what’s going on. Fortunately with a fairly simple report and the XML Data Source that SQL Reporting Services provides, we can make it much, much nicer.
Introducing the first two TFS2010 Administration Reports
As I run the Pioneer dogfood TFS server day-to-day, I notice opportunities for tools to help make TFS administrator’s lives easier. Here’s the first two reports to give you a better insight as to what is happening on your server and allow you to investigate problems without having to mess around with web services.
Download & Setup
- Open a browser an browse to your SQL Reporting Services root site. For example: http://tfsserver/Reports/
- Create a new folder and name it ‘Status’
- Create two new shared data sources with the following properties:
- Name: TfsWarehouseControllerDS
- Connection string: http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx (remember to replace with your own server name)
- Name: TfsJobServiceDS
- Connection string: http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx (remember to replace with your own server name)
- [X] Hide in list view
- [X] Enable this data source
- Data Source Type: XML
- Connect using: Credentials stored securely in the report server
- [X] Use as Windows credentials when connecting to the data source
- (If you choose “Windows integrated security”, then only TFS administrators will be able to access the report. This may or may not be what you want. Your choice)
- Apply the changes
- Download the ZIP attachment from the bottom of this post
- Extract the contents to a temporary folder on your workstation
- Select ‘Upload File’ from the reporting services manager
- Browse to the temporary folder where you extracted the reports, select ‘OK’.
- Repeat for the other report
- Try it out!
- Get somebody else to try it out and make sure permissions are set correctly.
Warehouse Status Report
The first part of the report shows you the overall status, similar to the ‘Reporting’ tab in the Team Foundation Administration Console. This is a quick an easy way to find out if an Incremental or Full processing is in progress. It will also show you any errors (like warehouse schema conflicts) in the ‘Last Run’ column.
The second part of this report is useful after an upgrade or when the warehouse needs to be rebuilt manually. It shows you each of the data adapter sync jobs for each collection and their current status. During normal operation, these will run very quickly as data changes in the operational stores, so you’ll probably always see them as “Idle”. It will also show you any errors from previous job executions in the ‘Last Run’ column.
Job Status Report
The first part of this report shows you the job definitions for the instance and the interval they’re set to run on. This is useful for checking to see if a job has somehow been disabled or changed.
The second part of this report shows you the job history. Let me explain each of the fields:
- Job ID – Every job in the system has a unique id.
- Job Agent ID – Every AT/Job Agent has a unique id. This field is useful if you have multiple application tiers and you want to know which one the job executed on so that you can investigate the event log or performance counters.
- Result – This is an integer that represents the result of the job. 0 = Succeeded, 1 = PartiallySucceeded, 2 = Failed, 3 = Stopped, 4 = Killed, 5 = Blocked, 6 = ExtensionNotFound, 7 = Inactive, 8 = Disabled
- Queued Reason – This is an integer that represents the way a job was scheduled. 0 = No reason to execute the job, 1 = Job has a schedule, 2 = Queued manually, 4 = Queued manually while already in progress, 8 = Queued due to previous result (Blocked, Inactive)
- Start Time – The local time that the job started executing on a job agent
- End Time – The local time that the job finished executing on a job agent
- Duration – The number of minutes that the job was executing for
- Result Message – Jobs are able to log a status message when they finish executing. Most jobs don’t, since they execute very often and there’s no need to log anything if the job succeeded.
There’s a few little visual styles that I added to allow you to glance the report and find problems:
- Hover over a job result message to see the full text
- Job results that failed have their error printed in red
- Jobs that took longer than 30 minutes have their duration in red
- Jobs that took longer than 10 minutes have their duration in orange
There is a lot of noise when dealing with jobs, so I added some parameters to help you filter out the noise.
- Unscheduled jobs - are jobs that have a definition, but no schedule set. Examples: “Create Team Project Collection”, “Delete Team Project Collection”, “Service Team Project Collection”, “Provision Attach Team Project collection” and “Team Foundation Server On Demand Identity Synchronization”.
- Successful jobs - are jobs that have a job result of ‘0’
If you find these useful, leave me a comment or drop me an email. I’d love suggestions for them or for any new TFS2010 Administrator reports.