Friday, February 27, 2015

SharePoint: User Profile Synchronization Service stuck on starting

Problem

You check the Manage Profile Service page of your User Profile Service Application and note that the Profile Synchronization Status seems to be stuck on starting.  You remove the connection that was used by the Profile Synchronization service that is now trying to start, but this doesn't change the status.  You even try removing the User Profile Service application, but find that the User Profile Synchronization Service remains stuck on Starting.

Solution
  1. Using the SharePoint Setup User Administrator account, log into the SharePoint server on which the User Profile Service application is running.
  2. Open an elevated SharePoint Management Shell.
  3. Execute Get-SPServiceInstance:
    This returns a listing of service instances on all SharePoint servers.  You can clean up the output by using: Get-SPServiceInstance | Where-Object {$_.Server -Like "*yourserver*"} | Select-Object TypeName, ID, status | Sort-Object TypeName
  4. Search through the listing returned by this command for User Profile Synchronization Service, and then note the  Id for this service (not the UserProfileApplicationGuid).
  5. Execute Stop-SPServiceInstance -Identity <theID>
  6. In Central Administration, navigate to Manage Services on Server. The service status should now be Stopping.
  7. Open the server Services applet.
  8. Restart the SharePoint Timer Service.
  9. Check Manage Services on Server again: after a few seconds, the status should change to Stopped.
    While this stops the service, it does not stop the associated user profile import timer job, User Profile Service_ProfileSynchronizationJob, from still being run and generating a critical application error event 6398 every time.  To stop this job, you can either remove the User Profile Service application or disable the job itself.  To remove the UPA, use Central Administration's Manage Service Applications page.  To disable the timer job, continue to the next step.
  10. Execute Get-SPTimerJob | Where-Object {$_.Schedule -Like "*1 minute*"} | Sort-Object Name | Select-Object name, ID, Status.
  11. Look for User Profile Service_ProfileSynchronizationJob, and then copy its ID.
  12. Execute Get-SPTimerJob -Identity <jobID> | Disable-SPTimerJob.
References
Notes
  • Stopping the service does not necessarily affect the import timer job.
  • Update 03/02/16: I attempted to uninstall the User Profile Service Application from Central Administration by deleting the service application.  This failed, and I then experienced the UPA being stuck on stopping.  SharePoint Services on Server indicated that UPA was Stopping.  Same in SharePoint Service Applications.  Executing Stop-SPServiceInstance on the UPA service, the following error was presented:
    Stop-SPServiceInstance : An object of the type Microsoft.SharePoint.Administration.SPServiceInstanceJobDefinition named
    "job-service-instance-5253819b-2e5b-49fe-b854-5970b970e97b" already exists under the parent
    Microsoft.SharePoint.Administration.SPTimerService named "SPTimerV4".  Rename your object or delete the existing object.
    At line:1 char:1
    ...
    I was able to resolve this by launching an elevated command shell and executing this stsadm command:
    stsadm -o provisionservice  -action stop -servicetype "Microsoft.Office.Server.Administration.ProfileSynchronizationService, Microsoft.Office.Server.UserProfiles, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" -servicename FIMSynchronizationService
    as per this posting.  When I then executed Get-SPTimerJob... it showed that the UPA service having a status of Disabled.  When I checked the Sharepoint Services on Server status of UPA, it showed a status of Stopping.  I then again attempted to delete the service application from Central Administration Service Applications, this time it completed successfully.
  • Synchronization Service Manager: tool useful for troubleshooting the SharePoint User Profile Service Application.  You'll find it at this folder location:
    \Program Files\Microsoft Office Servers\15.0\Synchronization Service\UIShell
    Look for miisclient.exe.  It enables you to view the real-time status of UPA processes, among many other things.  I don't use it to manage FIM; just to view status information.  For example, I have used to troubleshoot a UPA that failed to start.  As I tried different troubleshooting steps, I monitored Synchronization Service Manager, watching in real-time to see how far UPA started, before stopping.  It also provides helpful other information, such as confirmation of the Domain Controller that it is connecting to.  If you configured UPA using Auto Detect for DC, you can now determine exactly which DC it is connecting to.  You can also get confirmation of the service account that is running UPA (eg, the farm service account), and the number.

Thursday, February 26, 2015

SharePoint 2010: How to install onto Windows Server 2012

Introduction

This posting captures notes regarding building a small, two-server SharePoint Server 2010 enterprise farm on Windows Server 2012.  The particular version used here is SharePoint Server 2010 SP2.2 (SW_DVD5_SharePoint_Server_2010w_SP2.2_64Bit_English_MLF_X19-65035).  This version is available from your VLC or MSDN.

Procedure
  1. Verify Hardware Requirements
    1. SharePoint Server 2010
    2. SQL Server 2012
  2. Provision Installation Accounts
    1. Initial Deployment Accounts
    2. Add these accounts to local Administrators group on all farm servers.
      This automatically grants Log on as a batch job local user right to the farm service account.
    3. Grant Log on as a service local user right to the Farm service account.
  3. Install SQL Server 2012.
    1. Configure using spSql service account.
    2. Grant SharePoint Setup User Administrator account the SQL Server SysAdmin role.
  4. Create Temporary DNS Pointer
    1. Edit the server HOSTS file here: %systemroot%\system32\drivers\etc\.
    2. Add an entry for the server IP address and the prospective new DNS entry.
  5. Add Roles
    1. IIS 6 Management Compatibility: Web Server/Management Tools/
  6. Add Features
    1. Desktop Experience: Feature/User Interfaces and Infrastructure/Desktop Experience
  7. Install Prerequisites
    1. Run PrerequisiteInstaller.exe.
  8. Install SharePoint 2010
    1. Run Setup.exe on SP2.2 disk.
    2. Do NOT run configuration wizard.
    3. Install February 2014 CU.
  9. Setup 32-bit database alias for default port
    1. Start > Run > cliconfg.exe.
    2. General tab > Enable TCP/IP.
    3. Alias tab > Add.
    4. Enter name etc; enter port 1433; uncheck Dynamically determine port.
    5. Click OK.
  10. Setup 64-bit database alias for default port
    1. Start > Run > C:\Windows\SysWOW64\cliconfg.exe.
    2. General tab > Enable TCP/IP.
    3. Alias tab > Add.
    4. Enter name etc; enter port 1433; uncheck Dynamically determine port.
    5. Click OK.
  11. Disable Loop back check
    1. Open elevated PowerShell.
    2. Execute this script: New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck"  -value "1" -PropertyType dword
  12. Create Farm Administration and Configuration Databases
    1. Open an elevated SharePoint Management Shell
    2. Execute these commands
      New-SPConfigurationDatabase –DatabaseName <dbname>  –DatabaseServer <aliasname> –AdministrationContentDatabaseName <admindbname>
    3. At the prompt, enter authentication details for the farm service account.
    4. Enter the pass phrase: I recommend just using the farm service account password.
      If you see the error,  This SharePoint Farm currently has pending upgrades, execute this command:

      Psconfig –cmd upgrade –inplace b2b –wait –force
      If you see this error, Cannot connect to database master at SQL Server, you likely need firewall configuration - follow the steps in this article.
  13. Configure the SharePoint 2010 server
    1. Run the SharePoint Products Configuration Wizard.  
    2. Once it completes, do NOT choose the option to configure services.
  14. Create a new web application 
    1. Use NTLM authentication.
  15. Create a new site collection
References
  • The primary purpose of this farm is for migration of a SharePoint 2007 instance to SharePoint 2013.  The instance created here is all that's needed in order to successfully migrate a SharePoint 2007 content database to SharePoint 2010.
  • Using SW_DVD5_SharePoint_Server_2010w_SP2.2_64Bit_English_MLF_X19-65035 is the simplest way to install SharePoint 2010 on Windows Server 2012.
  • If you run Prerequisite Installer, and it fails with a message about being unable to download something, check the browser security settings.  In particular, check the Download setting for the Internet zone.  Make sure that file download is Enabled.

Tuesday, February 24, 2015

SharePoint: Cannot connect to database master at SQL Server

Problem
You are trying to configure a new SharePoint instance and run the PowerShell command to build the configuration database, New-SPConfigurationDatabase.  The database is installed as a default instance using all defaults.  When you run this command in an elevated SharePoint Management Shell, an error is returned:
New-SPConfigurationDatabase : Cannot connect to database master at SQL server at <yourdb>. The database might not exist, or the current user does not have permission to connect to it.
Creating an inbound Windows Firewall rule on port 1433 does not resolve this issue.
  
Troubleshooting

  1. Verified that the account this command is running under (the SharePoint Setup User Administrator account) has been granted the securityadmin and dbcreator fixed server roles on the backend SQL Server instance.  
  2. Granted it the sysadmin role, repeated command, but same error.  
  3. Ran the command using the actual database server name, but same error.
  4. Checked Windows Firewall on the backend: did not identify anything that appeared to be blocking default port 1433 for inbound connections, but also did not find anything explicitly allowing access on this port.  
  5. Configured an inbound rule to allow any access on port 1433.  The repeated command, but same error.
  6. Created empty Data Link, configured using database alias, and then tested connection: failed.
  7. Tried again using actual database server name and then IP address: both tests failed.
  8. Discussed this issue with a systems administrator, as to whether firewall rules are controlled via GPO and whether creating a rule using the standard process will in fact implement the rule. He informed me that, no, rules created using the standard process are not in fact implemented.  
  9. He showed how to discover what rules are implemented (Windows Firewall > Windows Firewall with Advanced Security on Local Computer > Monitoring > Firewall). Reviewing this list, found that the the rule created previously was not listed.
  10. The systems administrator showed how to update the local GPO using gpedit.msc.
  11. Created new inbound rule on port 1433 using gpedit.  
  12. Checked the list noted above, but did not find new rule.
  13. Discussed with systems administrator who showed how to update local computer with modifications to its GPO: use gpupdate /force in an elevated command shell.
  14. Executed this command.  Was prompted that "Certain Computer policies are enabled that can only run during startup.  OK to restart?"  Chose No.
  15. Checked list: new inbound rule not found.
  16. Restarted server.
  17. Checked list: new inbound rule now listed.
  18. Created empty Data Link, configured using database alias, and then tested connection: success!
  19. Reran command to create new configuration database: success!

Solution

  1. Create inbound rule on the farm backend that allows inbound connections on the port used for database connections.  Create this rule in the local computer GPO using gpo editor gpedit.msc.
  2. Force the backend GPO to update computer settings.
  3. Restart the backend.
References
  • Some knowledge of Windows Server management was helpful here in being able to ask the systems administrator the right questions so as to obtain useful information.
  • This issue applies to all SharePoint versions.
  • Thanks to Thomas Vochten for an excellent tip on how to quickly explore database connection issues.

Wednesday, February 18, 2015

SharePoint 2013: This Distributed Cache host may cause cache reliability problems

Problem

You added a new web front end server to the farm.  Subsequently, you see the following report in the farm's All Reports listing:

TitleThis Distributed Cache host may cause cache reliability problems.
Severity2 - Warning
CategoryConfiguration
ExplanationThis Distributed Cache service on this Distributed Cache host has been stopped but not unregistered from the farm. In order to avoid reliability issues, it is recommended that a Distributed Cache host with a stopped Distributed Cache service be unregistered from the farm
RemedyUnregistered cache hosts using PowerShell. For more information about this rule, see
http://go.microsoft.com/fwlink/?LinkID=3136960".
Failing Servers[new WFE]
Failing ServicesSPTimerService (SPTimerV4)
Rule SettingsView
 
Solution
  1. Ensure ShellAdmin Access
    1. Login to the WFE using the SharePoint Setup User Administrator account (eg, spAdmin).
    2. On the WFE, launch an elevated SharePoint Management Shell.
    3. Execute the following command:
      Get-SPShellAdmin
      This checks the farm configuration database for those users who can modify it.
    4. Verify that the SharePoint Setup User Administrator account has been added.  If it isn't, make it so.
  2. Get Service Instance ID
    1. Login to the WFE using the SharePoint Setup User Administrator account (eg, spAdmin).
    2. On the WFE, launch an elevated SharePoint Management Shell.
    3. Execute the following command:
      Get-SPServiceInstance | Where-Object {$_.Server -Like "*<yourWFE>*"} | Select-Object TypeName, ID, Status | Sort-Object TypeName
      This generates a listing of SharePoint-related service instances on the machine, including their IDs and statuses, sorted.
    4. Look for Distributed Cache in this listing.
    5. Copy its ID.
  3. Delete Service Instance
    1. In the same management shell, execute the following command:
      (Get-SPServiceInstance <yourWFE-ID>).delete()
      If you now re-execute the command in step 2.3, above, you will no longer see it listed.  However, if you should now re-analyze the rule, it still remains. And if you check the server services control panel, you will see that the AppFabric Caching Service status remains Running.  
  4. Remove Service Instance
    1. In the same management shell, execute the following command:
      Remove-SPDistributedCacheServiceInstance
  5. Re-analyze Rule Violation Problem
    1. In Central Administration, navigate to the Review problems and solutions page.
    2. Click on the item, This Distributed Cache host may cause cache reliability problems.
    3. Click the Re-analyze button.
References
  1. Initial deployment administrative and service accounts in SharePoint 2013
  2. This Distributed Cache host may cause cache reliability problems (SharePoint 2013)
  3. Managing Windows Server AppFabric Caching Features
  4. SharePoint 2013: how to remove a cache host from an unrecoverable farm server
  5. SharePoint Setup User Administrator
  6. Get-SPShellAdmin
  7. Get-SPServiceInstance
  8. Remove-SPDistributedCacheServiceInstance
  9. SharePoint 2013 Distributed Cache: Boon or Bane
Notes
  • I tried the process in the Microsoft TechNet article cited above (2); however, this failed to resolve the problem.
  • You could of course stop the AppFabric Caching Service service using the server Services panel, but this is not recommended. I've tried this myself without success.  I then used the PowerShell command, above, and this worked.

Wednesday, February 11, 2015

SharePoint 2013: How to build a graph that shows the distribution of tickets by number of days to resolution

Introduction

This posting consolidates notes with regard to developing a graph that presents the number of closed service tickets distributed (or binned) by the number of days it took to resolve them.  The result is a curve something like that shown below.
The basis for creating this graph is the Excel FREQUENCY function.  It performs a very simple procedure: give it a dataset and set of values, and it will then count the number of times (or frequency) each value occurs in the dataset.  That's it.

For this posting, the service ticket listing includes the Created date, which is entered by the system, and a Resolution Date, which is entered by a workflow triggered when the ticket's Status choice field is set to Resolved.  the difference between these two dates, Created and Resolution Date, gives the time it took to resolve the ticket in days (the default unit).  From experience, a few tickets are re-opened after having been resolved and more work is performed on them and thus the Resolution Date is not accurate for every case.  However, re-opened tickets are the exception and not the rule; and for the vast majority of tickets, the ticket Resolution Date accurately records the actual date of resolution of the ticket.  Given that the analysis covers thousands of tickets, having a few tickets with less than fully accurate resolution dates is not significant.

The following procedure walks you through the steps for creating this graph from your data.

Procedure
  1. Preparation
    1. A service ticket list.  This will have the Created date, of course, and it must include a date column that captures the date and time on which the ticket was deemed to have been resolved - call it Resolution Date for the purposes of this posting..
    2. Microsoft Excel (2010 or greater).  This is needed to conveniently and quickly perform the frequency distribution calculations.
  2. Create the data view
    1. Must include the Created and Resolution Date columns.
    2. Filter for tickets that have been Closed.
    3. Filter for start and end dates as desired - base these on the Created dates.
    4. Filter out tickets missing Resolution Date information.
    5. Use column counts to verify all fields are populated.
  3. Export the data
    1. Select the view
    2. Then perform an export (to Excel of course).
    3. Choose to open the spreadsheet.
    4. Delete the last two columns - unnecessary.
    5. Save As CVS.
    6. Re-open CVS version, and then Save As Excel.  This is the version to work with from here on out.
    7. Verify that needed columns are present. 
      The Created and Resolution Date columns will usually include both the date and time that the ticket was created or resolved. This is always the case for the Created column, which is entered by the system.  However, the Resolution Date column is entered by your code or workflow and may not include the time.  This posting assumes that these columns contain both date and time.
  4. Implement Date Difference Column
    1. Title a new column DIFFERENCE.
    2. Into this column, into the first data cell in this column, enter the following function:
      =IF(YEAR(F2)-YEAR(E2)>=1,ROUND(F2-E2,0), IF(MONTH(F2)-MONTH(E2)>=1,ROUND(F2-E2,0),IF(DAY(F2)-DAY(E2)>=1, IF(F2-E2<0.5,1,ROUND(F2-E2,0)), 0)))

      You will need to update the cell names in this. This equation computes the date difference in days - this is the default unit when taking the difference of two dates in Excel.
    3. Drag this cell contents (equation) to the bottom of the list.  This column provides the time it took, in days, to resolve the ticket.
  5. Build Frequency Distribution Data
    1. Add a new worksheet to the current spreadsheet.
    2. On this worksheet, label the first four columns like so:
      1. DATA
      2. CALCULATIONS
      3. BINS
      4. FREQUENCY
    3. Into the DATA column, past the contents of the DIFFERENCE column from the other worksheet.
    4. Use the MAX function to find the maximum in the DATA column.
    5. In the BIN column, starting at "0", enter content so that the column values go from "0" to MAX(DATA) - just use the drag method to quickly populate this column with incrementing values.
    6. In the FREQUENCY column, select all of the cells down to the end of the BIN column.  If the BIN column goes from "0" to "250", you will have selected all of the FREQUENCY cells next to them.  These cells are currently empty.
    7. Leaving these FREQUENCY cells selected, enter the following function into the Function bar (not into an individual cell): =FREQUENCY(
    8. Select all of the content in the DATA column.  This is the data array that the FREQUENCY function will work on. If the data went from A2 to A4402, you would see this in the Function bar: =FREQUENCY(A2:A4402 
    9. Enter a comma ",".  This finishes entering the data array and begins selecting the bins array.
    10. Select all of the content in the BIN column.  This is the bin array that the FREQUENCY function will work on.  
    11. Enter a closing parenthesis. You will then see selection boxes appear for the data array and bin array contents. 
    12. Now press CTRL+SHIFT+ENTER.  This key combination enters a function as an array into the selected cells.  After pressing this key combination, you will see the FREQUENCY column populated with data.
    13. The BIN and FREQUENCY columns represent the X and Y coordinates, respectively, of a curve that can be plotted on the same worksheet.  To instantly graph this curve, select both the BIN and FREQUENCY columns.
    14. Then, on the Insert tab of the Ribbon, click Scatter and then select the Scatter with Smooth Lines option.  
      The graph is instantly presented. Only the first 20 or so values were selected.
References
  • The DIFFERENCE equation used here performs the following tasks:
    1. It first checks the start and end years.  If the end year is greater or equal to the start year, simply compute the difference between the two date values, round it, and return.
    2. If they are the same, check the start and end date months. If the end date month is greater than the start date month,  simply compute the difference between the two date values, round it, and return.
    3. If they are the same, check the start and end date days.  If the end day is greater than the start day, check the difference: if it is less than 0.5 (half a day) then still consider it to be a full day and enter "1".  Otherwise, simply compute the difference between the two date values, round it, and return.
      1. The reason for checking this is that a ticket created late one day, and then resolved early the next, might show a difference of less than half day and then erroneously be calculated to have been completed on the same day.  To avoid this, 

Thursday, February 5, 2015

SharePoint 2013: Service ticket history report

Introduction

I needed to extract the number of IT service tickets created per day and the cumulative growth of the ticket database, and then plot this graphically.  Such a graph would be of interest to organization users and management and also to IT staff, whose daily work efforts are primarily driven by user ticket submission.  Developing this is very simple using just a bit of PowerShell.  This posting shows you how.

Procedure
  1. First, you'll need to gather some key data that will be needed in the PowerShell script:
    1. Identify the path to the site hosting the ticket list.
    2. Identify the name of this list.
    3. Create a list to hold the ticket history metric data.  At a minimum, it will need these fields:
      1. Ticket Create Date
      2. Tickets Created
      3. Cumulative Total
    4. Identify the site that will be hosting the ticket metrics list.
    5. Identify the name of this list you created.
    6. Determine the start and end dates of the history you want to examine.
  2. Next, on a farm server, open an elevated instance of the SharePoint Management Shell, and then execute the following script:
    If ( (Get-PSSnapin -Name "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null ) { Add-PsSnapin Microsoft.SharePoint.PowerShell } # Get source list # StartDate Example: 1/1/2013 $StartDate = Get-Date "[your start date]" # Note that the start date actually retained is: # "1/1/2013 12:00 AM" # EndDate Example: 12/31/2013 $EndDate = Get-Date "[your end date]" # this actually enters the date as "12/31/2013 12:00 AM" # To get something that will work best for this simple code, # add a day, which will then give: "1/1/2014 12:00 AM" $EndDate = $EndDate.AddDay(1) $SourceWebURL = "http://[URL to your ticket site]" $SourceWebListName = "[name of ticket list]" $SourceWeb = Get-SPWeb $SourceWebURL $List = $SourceWeb.Lists[$SourceWebListName] $SourceWeb.Dispose() # Now filter out unwanted dates: $ListItems = $List.Items | Where {($_['Created'] -ge $StartDate) -and ($_['Created'] -lt $EndDate)} # note that the operator "lt" was used. This is all # that was needed, given the format of the EndDate. # Establish a connection to the Metrics list $SourceWebURL = "http://[URL to your metrics site]" $SourceWebListName = "[name of metrics list]" $SourceWeb = Get-SPWeb $SourceWebURL $MetricsList = $SourceWeb.Lists[$SourceWebListName] # Set looping variables $IncDate = $StartDate $CumulativeTotal = 0 # Begin loop While ($IncDate -lt $EndDate) { $NewItem = $MetricsList.Items.Add() $FilteredItems = $ListItems | Where {$_['Created'].ToShortDateString() -eq $IncDate.ToShortDateString()} $NumberCreated = $FilteredItems.Count $NewItem["TicketDate"] = $IncDate.ToShortDateString() $NewItem["NumberCreated"] = $NumberCreated $CumulativeTotal = $CumulativeTotal + $NumberCreated $NewItem["CumulativeTotal"] = $CumulativeTotal $NewItem.Update() Write-Host (" On {0}: {1}({2})" -f $IncDate.ToShortDateString(), $NumberCreated, $CumulativeTotal) $IncDate = $IncDate.AddDays(1) } $SourceWeb.Dispose()
  3. Then add and configure chart web part:
    1. Add a chart web part to a page.
    2. Connect it to the metrics list
    3. Configure primary and secondary axes as desired.
  4. Lastly, an example
    Here's an example chart showing both daily tickets created and also the cumulative total.  Using separate axes is necessary here for otherwise the daily counts would not be visible
    .
References
  • You would think that you could filter the returned set also using the date obtained from ToShortDateString().  However, I found this not to be the case: the list items that were filtered using this approach frequently included list items having valid dates that should have been included in the filtered set, but weren't.  Using the full date avoided this problem and returned the expected set of list items.  Why this was so, was not immediately apparent to me.
  • TIP: when graphing the result listing, the full listing may contain periods you don't want included in the graph.  For example, for a multi-year listing of tickets, you may want to graph just the results for a particular year.  To accomplish this, add another column to the results list, say, Year, and then, when configuring the data connection for the Chart web part, filter on the desired year.  This can even be automated by adding a Calculated column that calculates the value based upon the Created date of the ticket.

Tuesday, February 3, 2015

SharePoint 2013 Review: The Timer Service Recycle Job

Introduction

This posting consolidates notes and references regarding the SharePoint Timer Service Job.  Additional technical details on this job and the Timer service can be found in the references listed below.

Discussion

This job is default configured to run at 6:00 AM daily.  To view its configuration, go: CA > Monitoring > Timer Jobs > Review job definitions > Timer Service Recycle:


The job has two primary phases: a warning phase during which no new jobs are launched and the actual reset phase, during which the Timer Service is stopped and started.  The warning phase lasts for about 10 minutes and the reset phase takes less than a second.  To view the configuration for the warning phase, go: CA > SharePoint Management Shell (Elevated) > (get-spfarm).timerservice.  You'll see it listed as RecycleWarningMinutes.  By default, this is set to 10 minutes.


The affect of this timer job can be seen by reviewing the Search Crawl Reports CPU and Memory Load report.  To view this report, go: CA: General Application Settings > Search > Farm Search Administration > Search Service > Crawl Health Reports > CPU And Memory Load.  This first graph shows the report over about a 24 hour period.

This next graph zooms in on the period during which the recycle job is being executed.


The timer service stop and start is logged to a farm's application server System log as 7036 Information events:
Log Name:      System
Source:        Service Control Manager
Date:          2/3/2015 6:11:02 AM
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      [farm application server]
Description:
The SharePoint Timer Service service entered the stopped state.
Event Xml:
...
followed by
Log Name:      System
Source:        Service Control Manager
Date:          2/3/2015 6:11:03 AM
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      [farm application server]
Description:
The SharePoint Timer Service service entered the running state.
Event Xml:
...
Correspondingly, you'll see this event in the farm application server's Security log indicating that a Timer Service process has been launched:
Log Name:      Security
Source:        Microsoft-Windows-Security-Auditing
Date:          2/3/2015 6:11:03 AM
Event ID:      4688
Task Category: Process Creation
Level:         Information
Keywords:      Audit Success
User:          N/A
Computer:      [farm application server]
Description:
A new process has been created.

Subject:
 Security ID:  SYSTEM
 Account Name:  [farm application server]
 Account Domain:  [domain]
 Logon ID:  0x3E7

Process Information:
 New Process ID:  0x4ce8
 New Process Name: C:\Program Files\Common Files\microsoft 
                                shared\Web Server 
                                Extensions\15\BIN\OWSTIMER.EXE
 Token Elevation Type: TokenElevationTypeDefault (1)
 Creator Process ID: 0x314
...



References
  1. The SharePoint Timer Service
  2. The SharePoint Administration Service and SPAdministrationServiceJobDefinition
  3. The Timer Recycle Job (job-timer-recycle)
  4. Recycling SharePoint’s OWSTIMER (Net Stop / Start SPTimerV4), Daniel Webster, Summit 7 Systems
  5. The timer service failed to recycle (SharePoint 2013), TechNet
  6. Timer job reference (SharePoint 2013)
  7. Get-SPTimerJob
  8. Windows PowerShell Scripting - Format-Table (FT)
  9. PowerShell: get running timer jobs
  10. View timer job status in SharePoint 2013
Notes
  • To generate a list of all timer jobs, use Get-SPTimerJob.
  • To generate a sorted list of these by name and ID, use: Get-SPTimerJob | Sort-Object name, id | ft name, id.
  • To filter this list by a keyword, use: Get-SPTimerJob | where { $_.name -like “*recycle*” } | Sort-Object name, id | ft name, id.
  • To get a specific timer job, use: Get-SPTimerJob -Identity <GUID>.
  • To get a list of the available methods and properties for a timer job, use: Get-SPTimerJob -Identity <GUID> | Get-Member.