1. Overview
iSkeddy is an enterprise workload automation and scheduling software. It combines many features. With simple to use GUI client, through which scheduling can be set to your jobs run on any schedule, recurring or event. Work on reliably, even during unexpected failure. With the expanding IT organizations, managing number of applications, databases and technologies that are critical to the successful operations of the organization. With iSkeddy, you can develop and rollout end-to-end workflows faster and more reliably than using custom scripts or “closed” scheduling systems.
PS: iSkeddy developed with Cinchoo, an application framework for .NET
2. Features
iSkeddy lets you run your jobs on simple or complex recurring schedules. Below are some of the key features offered by iSkeddy
- Scheduler – iSkeddy scheduler lets you to create tasks that could reliably run them on recurring schedule or at some point in future.
- Automation – It provides a graphical user interface and a single point of control for definition and monitoring of background tasks executions in a distributed network of computers.
- Easy User Interface – iSkeddy dashboard gives nice user interface to manage and monitor tasks right from your desk.
- Extended Logging – Collect verbose logs from the task run and view them from dashboard.
- Auditing for compliance – iSkeddy offers full support for audit and policies. It records and stores the each action initiated by user.
- Simple Workflow/Job setup – Group multiple tasks into logical sequences, link them your way.
- Load Balancing – Tasks workloads are evenly distributed among clusters.
- Resiliency – Automatically fail over to secondary node when primary goes down, eliminate the down time seconds to none.
- Tasks Library – Number of preloaded tasks to get your work started.
- Extensions – Easily extendable to create and use your own custom tasks for your needs.
3. Components
iSkeddy is a client-server system. Very simple to setup and run, zero configuration required. Just download the setup.exe and install it on your system. It will put two components in C:\Program Files (x86)\iSkeddy folder
- iSkeddy client (iSkeddy.exe)
- iSkeddy server (iSkeddyServer.exe)
Simply launch both iSkeddyServer.exe and iSkeddy.exe, you are ready to setup and schedule any type of tasks within few seconds.
3.1 iSkeddy Client
It is simple easy to use interface component, lets you setup, manage and monitor tasks/jobs. At launch, the iSkeddy client automatically try to discover and connect to the available iSkeddy server if the UDP protocol is turned on. If UDP is not turned on, you can choose to connect to iSkeddy server via TCP/IP protocol using ‘Server Settings’ window. You can get to this window by using ‘Connect’ button on the main window.
Image 3.1 iSkeddy Server Settings Window
The above settings are
- ControllerIPAddress – In TCP/IP mode, you will have to specify the iSkeddy controller IP address.
- IsPeer – N/A
- TurnOnUDP – Turn on / off UDP.
- UDPAddress – In case of UDP turned on, specify the UDP address.
- UDPPort – UDP port.
The main window of iSkeddy client looks as below
Image 3.2 iSkeddy Main Window
The main window consists of two panes. On the left side pane, it lists all the tasks grouped together in tree view format. On the right side pane, it shows the selected jobs running statuses in grid view format.
Task is smallest operation that serves as unit of work. In iSkeddy, you can setup a task with specific custom name. A task can set to one or more schedules, by which you can set them to run different schedule/calendar based on your needs. Each task must be tied to workflow definition. Workflow is the series of activities that are necessary to complete a task. iSkeddy comes with standard workflow definition ready to use with your tasks. You can extend iSkeddy to define your own workflow definition and use them with your tasks as well. For each task run, a unique batch id will be generated and associated with it.
Let me describe each of the column displayed in the grid…
- TaskName – A unique name assigned to a task.
- ScheduleName – A task schedule name. Task can have one or more schedules. Each schedule will be associated with a unique name.
- JobName – A job name is the combined name of TaskName and ScheduleName. Ex. ‘1_F1_FILE_WATCH’ task with ‘S1’ schedule, the job name will be derived as ‘1_F1_FILE_WATCH_S1’.
- BatchId – A unique identifier generated and associated with each task run.
- Status – A running status of task’s run. Possible states are
- SUCCESS – After successful run, SUCCESS will be set.
- FAILED – After failed run, FAILED status will be set.
- ACTIVE – A job must be active in order to run or schedule.
- SCHEDULED – A job is put on queue, waiting to be run by scheduler.
- INACTIVE – Inactive tasks will be excluded from scheduler.
- RUNNING – A current running tasks will be set to RUNNING state
- STOPPED – Graceful way to stop the task by user, will be set as STOPPED status.
- ABORTED – Abnormal terminated tasks are set as ABORTED status.
- TIMEDOUT – A task is not completed within the specified period of time, it will terminated by iSkeddy and set to TIMEDOUT status.
- Parameters – Task run time parameters, in key-value pairs.
- Message – Running status message of the task.
- StartTime – Start time of the task run.
- EndTime – End time of the task run.
- Duration – Elapsed time of the task run.
- NextRun – Next scheduled run date time of the task, If the task dependent on other tasks with conditions, it will display the condition.
- Exit – Exit code from the task run.
- Retry – Retry attempt count.
- Machine – Machine name where task will run.
- User – It is the user who requested task action. SYSTEM, if the task is managed by iSkeddy.
On top of the Main Window, you will notice few buttons
- Refresh – It is used to reconnect iSkeddy client to server, in case of any unexpected disconnect happens.
- View Clusters – In the cluster setup, where more that one iSkeddy server nodes are hosted, this will open a window to view all the available active nodes.
Image 3.3 iSkeddy Cluster Nodes Window
- Holiday Calendar – This will launch the holiday calendar window, where you can manage the holiday calendars. Holiday calendars define the set of statutory (civic) holidays that tasks are entitled to take off. You can associate a calendar to a task, the scheduler will remember not to run the task on those holidays. The holiday calendar window looks as below. Will discuss in detail about it later.
Image 3.4 iSkeddy Holiday Calendar Window
3.1.1 Manage Tasks
In this section, I’ll elaborate about creating, managing tasks/jobs using iSkeddy client program. There are two types of nodes can be created
- Group – It is logical grouping of tasks managed under a group.
- Task – It is an actual task unit.
When you right-click on any node on the tree, you will have context menu shown in Image 3.1.1.1
- Add Group – Add a new Group.
- Add Task – Add a new Task.
- Remove – Remove Group / Task.
- Edit – Edit a Group / Task.
- Copy – Copy a Task.
- Paste – Paste a Task.
- Move – Move a Task from one group to another.
- Export – Export a Task/Group.
- Import – Import a Task/Group.
3.1.1.1 Add / Edit Task Group
After you click ‘Add Group’ or ‘Edit’ from the context menu, you will be prompted with the below window to manage the groups.
Image 3.1.1.1.1 Task Group Editor
In the above window, you will have given Task Group Name, which is unique and mandatory value. Besides name, you can provide optional comments for the task group.
3.1.1.2 Add / Edit Task
After you choose ‘Add Task’ or ‘Edit’ from the context menu, you will be prompted with the below window to manage a task
Image 3.1.1.2.1 Task Editor
There are many parameters to configure a task using this window.
- Task Info – Basic task related parameters are set here.
- Schedules – List of schedules associated with the task.
- Schedule Parameters – Task schedule parameters are set here
- TimeZone – Task’s Time Zone information
Task Info
In this section, the basic task parameters are specified. Some of them are
- Task Name – Task name, it is a unique name to identify the task.
- Machine – Machine name or Cluster Name where the task to be run.
- WF Name – Workflow name of the task. Workflow is task execution plan. There are number of ready to use workflows comes with iSkeddy. If you click ‘Choose’ button, it will open the workflow selection windows as below
Image 3.1.1.2.2 Workflow Selection Window
- Parameters – Run parameters of the task. List of parameters needed to run the task. It varies to each type of task. Values can be constant values or expression values.
Image 3.1.1.2.3 Task Parameters Editor
Tip: If a parameter value contains whitespace, it must be surrounded by single quotes (‘) to consider as part of the value.
Tip: The parameter values can be constant values or it can contain expressions (ex: TODAY, TIME etc with formats). Will discuss more about it later.
Schedules
In this section, task schedules will be managed. A task may have one or more schedules with the schedule conditions. The list box shows the list of schedules. In order to create a new schedule, type a name in the textbox and click ‘ADD NEW’. To delete a schedule, select the schedule from the listbox and click ‘DELETE’. In case you wanted to retain the schedule definition but wanted to exclude it from the scheduler, you can do so by unchecking ‘Enabled’ checkbox.
Schedule Parameters
In this section, each task schedule parameters can be specified. There are a huge list of parameters can be configured based on your needs. A task must have atleast one schedule in order to be scheduled. It can have one or more schedules with the different schedule conditions. Here are the details of the each parameter
- StartDate – Scheduled task run start date. Must specify
- EndDate – Scheduled task run end date. If left empty, the task will scheduled forever.
- StartTime – Start time on a schedule day window, the task is scheduled to start.
- EndTime – End time on a schedule day window, the task is scheduled to end.
- ScheduleType – Schedule Type (Possible values are DAILY, WEEKLY, MONTHLY, ONCE)
- T1 – This denotes number of days before or after the task should run when it falls on one of the holiday calendar dates. Only applicable to Weekly / Monthly schedules.
- Daily – Specify how many days once the task should run.
- Weekly – Specify the week days or number of weeks once the task should run.
- Monthly – Specify the days of the month the task should run.
- Repeat – Specify the task to run repeatedly every specified minutes / hours on a schedule day.
- Holiday Calendar – Optional Holiday calendar attached to the task.
- Checked – The task will NOT run on the holiday calendar days specified in the calendar.
- Unchecked – The task will run only on those days specified in the calendar.
- Daylight Savings Options
- Preserve Hours of the Day across DST – This property will fire of the task to always at the same time of day regardless of Daylight Savings Time.
- Skip Day if the hour not exists – If the hour of the day does not exists on a given day, the day will be skipped and task will be advanced to next scheduled day.
- Other / Dependencies – Define dependency rules to fire the task. The button glows green when there is dependency rules are defined for the task. There are number of operators and functions available to use when you define the rules. JobName is in the format of TaskName/ScheduleName. FireAfter option lets to instruct the system to start the job after specified number of minutes.
Image 3.1.1.2.3 Task Dependencies Editor
- Comments – Short description of the schedule for your reference.
3.1.2 Tasks Commands
In this section, I’m going elaborate about sending task commands from iSkeddy dashboard. From iSkeddy client, you can monitor, start, stop, view status, log info of any job from your desktop.
Image 3.1.2.1 iSkeddy client main window
Here are the available job commands
- Start – Start a task manually
- Resume – In case, job failed abnormally, you can resume it by using this command. This is useful when the job has resumable capability.
- Stop – Stop the job gracefully.
- Abort – Abort the job.
- Activate – Activate a job. In order for a job to be scheduled or start, it must be activated first.
- Inactivate – Inacivate a job. This will put the job on hold from scheduling as well as from starting.
- Activate All – Activate group of related jobs. Related jobs are jobs dependent of each other.
- Inactivate All – Inactivate group of related jobs.
- Open Log File – Open the log file of job.
Here are the details of each column of the grid on the main window
- Job Name – The job name (Task Name / Schedule Name).
- Workflow Name – The workflow name.
- Batch Id – Unique batch id for each run.
- Status – Job status of each run.
- Parameters – Running parameters of the job.
- Message – Last output message of the job run.
- Start Time – Start time of the job.
- End Time – End time of the job.
- Duration – Total duration of the job run.
- Next Run – Next scheduled run date time if independent task. For dependent task, it will display the dependency expression.
- Exit – Exit code of the job run.
- Retry – Total number of retry happened for job.
- Machine – Machine where the job ran.
- User – User initiated the task action command. SYSTEM if the system schedule and run it.
- Modified Date – Last modified date time.
3.2 iSkeddy Server
It is a server component of iSkeddy system. It built with scheduler (controller), automation functionalities. You can setup and configure iSkeddy server in multiple fashions like single instance node, multiple cluster nodes etc. In an environment, you must configure one scheduler and optional multiple automation cluster nodes.
In a simple model, just launch iSkeddy server. This will run both Scheduler (controller) and Automation functionalities in one instance.
The server can be setup to use either TCP/IP or UDP protocols. Based on your needs and protocol availabilities you can setup iSkeddy server with either TCP/IP or UDP protocal. UDP is preferred, it gives the flexibility of auto fail over to secondary node when primary goes down.
iSkeddy server uses Sqlite as internal data store. It can be replaced with using other databases (SqlServer, Oracle etc) by writing adapters.
Only one instance of iSkeddy server per machine allowed. iSkeddy server can be run as Console application or setup as Windows service.
Console Mode
Launching iSkeddyServer.exe, it will run as console mode. At launch, it pops up the below setup window.
Image 3.2.1 Server Settings Window
In here, you can configure the protocols and endpoints of iSkeddy server
- TurnOnUDP – If checked, UDP protocol is used. Otherwise TCP/IP is used for connection.
- ControllerIPAddress – If it is automation node, specify the IP address of the controller (scheduler). Only applicable if TCP/IP is chosen protocol. If UDP is choosen, each automation node automatically discovers the Controller (scheduler) node.
- IsPeer – In cluster environment, any automation nodes should be setup with this option checked. It will launch the node as automation node.
- UDPAddress – UDP Address. Applicable only if UDP protocol is selected.
- UDPPort – UDP port.
Here are the list of command line iSkeddy server options available to use
Listing 3.2.1 iSkeddy server command line parameters
C:iSkeddy>iSkeddyServer.exe /?? iSkeddyServer [Version 2.0.0.1] Copyright c Cinchoo Inc 2016 Enterprise workload automation, scheduling server ISKEDDYSERVER [/d] [/c:] [/p] [/peer] [/u] [/setup] [/s] /d Debug mode /c Cluster Name /p Private Node /peer Run as peer server /u Turn on users and policies /setup Setup / Refresh database. /s Silent, do not prompt connection dialog-box at startup.
From above,
- /d – Debug mode is used to instruct the server to switch to debug mode. It is useful to run and step through the task source code.
- /c – Cluster Name
- /p – Private Node, instruct the controller (scheduler) do not participate in workload automation, It means the node is dedicated to scheduling only, No tasks will be scheduled to run on this node.
- /peer – Run the instance as automation node. It means the node is participated in workload automation.
- /u – Reserved.
- /setup – Setup mode, run once after installing iSkeddy on a machine.
- /s – Silent, do not show the connection dialog when running in console mode.
Besides the above set of command line arguments, iSkeddy server exposes another set of command line arguments for debug a specific workflow
Listing 3.2.2 iSkeddy server run workflow command line parameters
C:\iSkeddy>iSkeddyServer.exe /? iSkeddyServer [Version 2.0.0.1] Copyright c Cinchoo Inc 2016 Enterprise workload automation, scheduling server The syntax of this command is: ISKEDDYSERVER [RUN_WF]
Where RUN_WF switch instruct the iSkeddy server to run a specific task in debug mode.
Sample command is
iSkeddyServer.exe "RUN_WF" "/t:4_FI_TEST_EXIT_CODE" "/s:S1" "/b:-922087807" "/w:C:\Personal\Cinchoo Source\2013-11-05\ChoWorkflowServer\ChoWorkflowServer\bin\Debug\WorkflowDefs\SHELL\RUN_PROGRAM.etl" "/u:RAJ" "/p:PROGRAM_NAME=C:\Users\raj\test.bat;DOMAIN=;USER_NAME=;PASSWORD=;CMD_ARGS=;SILENT=True;TIMEOUT=-1;WAIT_FOR_EXIT=True;WORKING_DIRECTORY=C:\Users\raj;USE_SHELL_EXECUTE=False" "/to:30000" "/sr:0" "/mr:0" "/d"
iSkeddy server outputs these details in the log file for you to grab them.
Windows Service Mode
You can set iSkeddy server as windows service, lets you run the server in the background, start automatically at the system startup etc by installing as Windows Service. Here is how you can install and start the iSkeddyServer as service
Listing 3.2.3 Install iSkeddy server as service
C:\iSkeddy>iSkeddyServer.exe /@I iSkeddyServer [Version 2.0.0.1] Copyright c Cinchoo Inc 2016 Enterprise workload automation, scheduling server [SC] CreateService SUCCESS [SC] ChangeServiceConfig SUCCESS
To start the service, either you can issue the below command in the command line or you can go to services console, start the service from there.
Listing 3.2.4 Start iSkeddy server service
C:\iSkeddy>iSkeddyServer.exe /@S iSkeddyServer [Version 2.0.0.1] Copyright c Cinchoo Inc 2016 Enterprise workload automation, scheduling server
For more service related commands, please run the below command
Listing 3.2.5 iSkeddy server service control parameters
C:iSkeddy>iSkeddyServer.exe /@? iSkeddyServer [Version 2.0.0.1] Copyright c Cinchoo Inc 2016 Enterprise workload automation, scheduling server ISKEDDYSERVER [/@SN:] [/@DN:] [/@IN:] [/@SD:] [/@I] [/@U] [/@S] [/@T] [/@P] [/@C] [/@E:] [/@SP:] /@SN Service Name. /@DN Display Name. /@IN Instance Name. /@SD Service Description. /@I Install Service. /@U Uninstall Service. /@S Start Service. /@T Stop Service. /@P Pause Service. /@C Continue Service. /@E Execute Command. /@SP Command Line Parameters.
Tip:
If you want to run iSkeddyServer in different account/credentials, you can do so by opening ChoServiceInstallerSettings.xml configuration file under Config folder and specify the account details.
Image 3.2.2 iSkeddy server log folder screenshot
iSkeddyServer logs are created under C:\Program Files (x86)\iSkeddy\iSkeddyServer\Logs. Every group of tasks run associated with new batch id, if there are dependent on each other. Or if it is independent task, a unique batch id assigned to it for each run.
For each such run, a separate log folder created in the name of batch id. All jobs log files are created under there. For example, a batch id 695455002, below image shows 2 related jobs logs are created under there.
Image 3.2.3 iSkeddy server log sub-folder screenshot
It simplifies and well organizes the log files, so that you can easily track them and investigate any issues associated with any jobs.
4. Workflows
Each task is created with a specified workflows. iSkeddy comes with number of workflows out of the box. Workflow is the definition, execution and automation of processes. It can be running a program, sending a email, transfer a file to ftp etc.
In here I’m going to talk about some of the most commonly used workflows and how to use them when defining task.
4.1 RUN_PROGRAM
There are some common tasks which needs to be executed at scheduled intervals. If you want Windows to work properly and always strive for a faster system performance, you will have to run backups, use disk cleanup,disk defragmentation or some custom maintenance scripts.
Running these tasks can be really painful at times, because you have to do it manually over and over again. It’s far better if you can automate them using iSkeddy.
Using RUN_PROGRAM workflow you set to run any program on a specified schedule. Here are the available parameters
Image 4.1.1 RUN_PROGRAM parameters
You can get to the above window by going to ‘Task Editor’ window -> ‘Edit’ next to Parameters option.
The available parameters are
- Domain – Identifies the domain to use when starting the process.
- Password – The user password to use when starting the process. Password will be encrypted.
- UserName – The user name to be used when starting the process.
- ProgramName – Absolute path of the program.
- CommandArgs – Optional command arguments.
- Silent – True, to ignore the error reported on the stderr. Otherwise false. (Default: True).
- Timeout – Wait time for this task to complete (Default: -1).
- UseShellExecute – Indicating whether to use the operating system shell to start the process.
- WaitForExit – Wait for application to exit (Default: True).
- WorkingDirectory – When the UseShellExecute property is false, gets or sets the working directory for the process to be started. When UseShellExecute is true, gets or sets the directory that contains the process to be started.
4.2 FILE_WATCH
This task monitors the specified file for changes.
Image 4.2.1 FILE_WATCH parameters
Here are the list of parameters supported by this workflow
- File Path – Path of the file to watch.
- Delay – Start the file watch after specified time interval (Default: 0)
- Timeout – Indicate the time waits for the file watch complete (Default: -1).
- Watch If File Exists – Watch even if file exists (Default: false).
Other built-in workflows will be detailed out shortly. In the mean time, please go to http://www.iskeddy.com to download and try it for free.