Operational considerations for Zendesk Reader
The following links provide additional guidance and best practices for deploying and managing Zendesk integrations in Striim.
Recovery behavior
Initial load: recovery is not supported. If an initial-load run is interrupted or fails, you must rerun the initial load.
Incremental load: supports standard Striim recovery semantics (A1P/E1P) to resume from the most recent checkpoint.
API rate limiting
Zendesk imposes global and per-user/app request limits. When limits are exceeded, the API returns HTTP 429 responses and the reader may halt until limits reset.
Reduce concurrency (Thread pool count) and/or increase Polling interval to lower request frequency.
Limit the scope of sync by narrowing the Objects list instead of using broad wildcards.
Lower Fetch size (maximum 100) to decrease per-call payload and retry pressure.
Stagger multiple applications reading from the same Zendesk account to avoid bursts.
Zendesk applies a lower rate limit to its incremental export endpoints than to its standard endpoints. Incremental load and Automated mode use the incremental export endpoints for tickets and ticket comments, as does Initial load when Include archived tickets is enabled. When reading tickets with many comments, tune Fetch size for incremental so that each poll completes within the polling interval and events reach the target progressively rather than after the entire batch has been read.
Metrics monitored by the Zendesk Reader
Metric | Description |
|---|---|
Number of deletes | Number of delete operations |
Number of DDLs | Number of data definition language operations |
Number of PKUpdates | Number of primary key update operations |
Number of updates | Number of update operations |
Number of inserts | Number of insert operations |
For more information, see Monitoring.
API statistics
The API Statistics value in the MON output for a Zendesk Reader source shows how many calls the reader has made to each Zendesk endpoint, which helps you correlate reader activity with Zendesk rate limits and diagnose slow polls. Call counts are keyed by endpoint template rather than by fully expanded URL, so calls to the per-ticket comments endpoint for all tickets are aggregated under a single entry and the size of the MON output does not grow with the number of tickets read.
For example, an application that reads tickets and ticket_comments in Automated mode produces output similar to the following.
{"/api/v2/incremental/tickets.json":2,"/api/v2/tickets/{id}/comments.json":687}Limitations
By default, Initial Load for Tickets, Users, and Organizations retrieves only active records. Zendesk automatically archives tickets 120 days after closing, and the standard API used for Initial Load does not return archived records. To include archived tickets and their comments in Initial Load, enable Include archived tickets. To retrieve all records including archived users and organizations, use Automated mode.
Timestamp columns in relational targets: Zendesk Reader emits timestamp values such as
created_atandupdated_atas strings rather than asorg.joda.time.DateTime. When the target is a relational database and the target column uses a timestamp datatype, such asTIMESTAMP,DATETIME, orTIMESTAMP WITH TIME ZONE, the load fails with a datatype conversion error. To work around this, define the target column as a string type, such asVARCHAR, and convert the value to a timestamp in the target after loading.Custom objects are not supported.
Some secondary objects depend on primary objects (for example, comments- or metrics-related objects may require the corresponding primary ticket object). If a dependent primary is not selected, reads may be empty.
Sherlock scans: Sherlock does not support
ticket_commentsor other secondary Zendesk objects that have dependencies on primary objects. When a Sherlock scan includes an unsupported object, the scan completes with "Tables scanned: 0" and no rows are processed. To scan supported objects, remove unsupported objects from the scan configuration.