Troubleshooting
Common errors, diagnostic commands, log locations, support.
Troubleshooting Documentation
Common errors
API
Error: whisperquery: Query rejected: write operation detected
- Cause: The Cypher query contains a write keyword (
CREATE,DELETE,SET,MERGE, etc.) - Fix: The Knowledge Graph is read-only. Remove any write operations from your query.
Error: whisperquery: Query validation failed: query must include LIMIT clause
- Cause: Missing
LIMITin the Cypher query - Fix: Add
LIMIT Nto the end of your query to control result set size.
Error: Whisper API error 400: Invalid Cypher syntax
- Cause: Malformed Cypher query
- Fix: Check your query syntax.
Cache issues
Symptom: Enrichment returns stale data
- Fix: Flush the cache:
| whisperflush collection=cache - The default cache TTL is 1 hour. Adjust if needed.
Symptom: whisperflush returns permission error
- Cause: The
whisperflushcommand requiresadminorsc_adminrole - Fix: Run the command as a user with appropriate privileges.
Configuration issues
Symptom: App shows "not fully configured" after saving account
- Cause: The
is_configuredflag inlocal/app.confwas not set totrueafter saving the account. This is handled automatically by the UCC setup hook when you save an account through the Configuration page. - Fix:
- Navigate to Configuration > Account and save the account again. The setup hook will retry setting the flag.
- If the issue persists, manually set
is_configured=truevia the REST API:
curl -k -u admin:<password> \ https://localhost:8089/servicesNS/nobody/TA-whisper-security/configs/conf-app/install \ -d is_configured=true- Refresh the browser.
Symptom: Test Connectivity shows "Connected -- Plan: Anonymous" with a warning about unrecognized API key
- Cause: The API key you entered is invalid, expired, or incorrectly copied. The API accepted the connection but did not recognize the key, falling back to the Anonymous plan with a 2-hop depth limit.
- Fix: Verify your API key at console.whisper.security. Copy the key again and ensure there are no extra spaces or line breaks.
ES integration issues
Symptom: Correlation searches are not generating results
- Fix:
- Verify searches are enabled: ES > Configure > Content > Content Management
- Check that enrichment data exists:
| inputlookup whisper_ip_intel - Verify the threat intel input is running and collecting data
- Check search logs for errors:
index=_internal source=*scheduler* savedsearch_name="Whisper*"
Symptom: Risk events are not appearing in the Risk Index
- Fix:
- Verify the risk index exists and is configured in ES
- Check that
action.riskis enabled on the correlation search - Review the adaptive response action logs
Dashboard issues
Symptom: Dashboards show "No results found"
- Fix:
- Verify that the underlying data is being collected (check for
whisper:attack_surfaceevents) - Check the time range picker — default may be too narrow
- Ensure the compliance query inputs are running
- Verify that the underlying data is being collected (check for
Finding TA logs
The Whisper Security Add-on logs are written by the UCC framework to Splunk's internal index under the sourcetype ta_whisper_security. This is the UCC default naming convention and differs from the whisper:* sourcetype pattern used for indexed data.
Search for TA logs:
index=_internal sourcetype="ta_whisper_security"
Filter by log level:
index=_internal sourcetype="ta_whisper_security" log_level=ERROR
View recent TA activity:
index=_internal sourcetype="ta_whisper_security"
| table _time log_level component message
| sort -_time
| head 50
These logs include modular input execution, API calls, configuration changes, and error details. The Health & Operations dashboard also includes a TA Logs panel that displays recent log entries from this sourcetype.
Note: Do not confuse
sourcetype="ta_whisper_security"(TA operational logs inindex=_internal) withsourcetype="whisper:health"or otherwhisper:*sourcetypes (indexed data inindex=whisper).
Diagnostic commands
Check API connectivity:
| whisperquery query="RETURN 1 AS test LIMIT 1"
Check cache status:
| inputlookup whisper_enrichment_cache
| stats count, min(cached_at) AS oldest, max(cached_at) AS newest
Check threat intel collections:
| inputlookup whisper_ip_intel | stats count
| append [| inputlookup whisper_domain_intel | stats count]
Check modular input status:
index=_internal source=*whisper* sourcetype=splunkd
| stats latest(_time) AS last_run, count by source
Check the adaptive response alert action log:
The whisper_enrich alert action writes to $SPLUNK_HOME/var/log/splunk/ta_whisper_security.log (the shared log file for all TA components).
tail -f $SPLUNK_HOME/var/log/splunk/ta_whisper_security.log
Verify Knowledge Graph schema:
| whisperschema mode=labels
Asset cache management (development)
After modifying JavaScript, CSS, or HTML files in the add-on, both client-side and server-side caches must be cleared for changes to take effect.
Client cache bump
Navigate to the following URL in your browser to bump the client cache version:
http://<splunk_host>:<port>/en-US/_bump
Click "Bump version" to invalidate all cached static assets. This forces browsers to re-fetch updated files.
Server cache refresh
Refresh the server-side asset cache by navigating to:
http://<splunk_host>:<port>/en-US/debug/refresh
This reloads all app assets from disk without requiring a Splunk restart.
Development-only cache settings
For active development, you can disable asset caching entirely by adding these settings to local/web.conf:
[settings]
cacheEntriesLimit = 0
cacheBytesLimit = 0
Warning: Never disable caching in production environments. These settings significantly degrade Splunk Web performance and are intended only for local development.
Recommended workflow
After any UI file change during development:
- Save the modified file(s)
- Navigate to
/_bumpand click "Bump version" - Navigate to
/debug/refresh - Hard-refresh the browser (
Cmd+Shift+Ron macOS,Ctrl+Shift+Ron Windows/Linux)
File precedence and customization
Splunk merges configuration files from multiple locations using a defined precedence order. This matters when you're customizing the Whisper Security Add-on.
Precedence order (lowest to highest)
system/default/-- Splunk platform defaultsapp/default/-- Add-on shipped defaults (TA-whisper-security)system/local/-- System-wide admin overridesapp/local/-- Per-app admin overridesuser/default/-- User-specific defaults (rare)user/local/-- User-specific overrides
Settings in higher-precedence locations override those in lower locations. The add-on ships all configuration in default/ -- admin customizations should go in the app's local/ directory.
Settings safe to override in local/
These configuration files can be safely customized by admins:
| File | What you can customize |
|---|---|
macros.conf | Adjust threshold values, time ranges, and index targets in macros |
savedsearches.conf | Enable/disable correlation searches, adjust schedules and alert thresholds |
authorize.conf | Modify whisper_user role capabilities and inheritance |
inputs.conf | Change modular input intervals, enable/disable specific inputs |
Example: Enable a correlation search:
# local/savedsearches.conf
[Whisper - DNS Infrastructure Change Correlation]
disabled = 0
Example: Override the default index macro:
# local/macros.conf
[whisper_index]
definition = index=my_custom_whisper_index
Settings NOT safe to override
Do not modify these files in local/ -- doing so may break add-on functionality:
| File | Reason |
|---|---|
commands.conf | Breaks search command registration and Python script bindings |
transforms.conf | Breaks KV Store lookup definitions and field extractions |
collections.conf | Breaks KV Store collection schemas; may cause data loss |
props.conf | Breaks field extractions and CIM field aliasing |
app.conf | May break version detection, triggers, and UI settings |
Resetting customizations
To revert all customizations for a specific configuration file:
- Navigate to
$SPLUNK_HOME/etc/apps/TA-whisper-security/local/ - Delete the specific
.conffile (e.g.,savedsearches.conf) - Restart Splunk to apply the reset
To reset all customizations:
rm -rf $SPLUNK_HOME/etc/apps/TA-whisper-security/local/
$SPLUNK_HOME/bin/splunk restart
Note: This removes all local overrides. Back up the local/ directory first if you want to preserve any settings.
Known issues
| Issue | Workaround | Status |
|---|---|---|
whisper_cname_chain macro requires Professional API plan | Reduce depth or upgrade plan | By design |
whisper_spf_chain macro requires Free API plan or higher | Get a free API key | By design |
| GeoIP fields absent for anycast IPs (e.g., 1.1.1.1) | No workaround -- anycast IPs have multiple locations | By design |
| WHOIS data sparse for some domains | Not all registrars expose WHOIS data via graph | By design |
| Dashboards show "No results found" initially | Run modular inputs first to populate data | Expected |
| Docker: modular inputs not executing after creation | Restart the Splunk container after creating inputs | Fixed in v0.19.1 |
Collecting logs for support
When reporting an issue, collect the following logs to help diagnose the problem.
Step 1: Export TA logs
index=_internal source=*ta_whisper_security.log earliest=-24h
| table _time log_level component message
| sort -_time
Step 2: Export health check history
index=whisper sourcetype=whisper:health earliest=-7d
| table _time status error_message response_time_ms node_count edge_count
Step 3: Check modular input status
index=_internal source=*splunkd.log ExecProcessor whisper earliest=-24h
| table _time log_level message
Step 4: Generate a diagnostic bundle
$SPLUNK_HOME/bin/splunk diag --collect app:TA-whisper-security
This collects app configuration, logs, and KV Store metadata (but not credentials or customer data).
Step 5: Open a support ticket
Open a support ticket at console.whisper.security/support and attach the diagnostic bundle and log exports.
Getting help
- Support: console.whisper.security/support
- Whisper Security: whisper.security