I found many token based variable search examples online but not on own created variable in customized Javascript. E.g: http://dev.splunk.com/view/webframework-developapps/SP-CAAAEWY
May I know how to define mixture of self defined and token based variable in Javascript search query e.g variable "filename" and "alertid" in the example follow?
// partial javascript code:
var alertid= tokens.get("alertid_token"); //tokens received
var filename = "1512234117_372926.png"; //own created variable
// Search Manager - Make a search using tokens obtained
var search = new SearchManager({
"id": "search_img",
"earliest_time": "-5m@m",
"latest_time": "now",
"search":"| imgsearch alertid filename", // are these variable format correct?
"cancelOnUnload": true,
"autostart": false,
"auto_cancel": 90,
"preview": false,
"cache": false
});
@niketnilay, thank you for your reply.
I tested your suggestion, however it is not working.
The two "console.log(alertid);" and "console.log(filename);" before search execution output are correct, but "Search started" or "search:done" status is not shown.
Please find the my complete JS code follows:
require([
"splunkjs/mvc",
"splunkjs/mvc/searchmanager",
"splunkjs/mvc/simplexml/ready!"
], function(mvc) {
var SearchManager = require("splunkjs/mvc/searchmanager");
// Get the Events table
var myEventsTable = mvc.Components.get('myevents');
// Respond to a click event
myEventsTable.on("click", function(e) {
// Get the default model
var tokens = mvc.Components.get("default");
var alertid= tokens.get("src_type_tok");
var ctime = new Date().getTime();
// create file and path var
var filename = ctime + "_" + alertid + ".png";
console.log(alertid);
console.log(filename);
var search = new SearchManager({
"id": "search_img",
"earliest_time": "-5m@m",
"latest_time": "now",
"search": "| imgsearch $alertid$ $filename$", // this one not working
//"search": "| imgsearch 3215687 153857376_3215687.png", // this is working fine
"cancelOnUnload": true,
"autostart": false,
"auto_cancel": 90,
"preview": false,
"cache": false,
"tokenDependencies": {
},
"runWhenTimeIsUndefined": false
}, {tokens: true, tokenNamespace: "submitted"});
console.log("after search function");
search.on('search:failed', function() {
console.log("Search failed");
}.bind(this));
search.on("search:start", function() {
console.log("Search started");
}.bind(this));
search.on("search:done", function() {
console.log("Search completed");
}.bind(this));
// Start the search
search.startSearch();
});
});
@niketnilay, thank you for your reply.
I tested your suggestion, however it is not working.
The two "console.log(alertid);" and "console.log(filename);" before search execution output are correct, but "Search started" or "search:done" status is not shown.
Please find the my complete JS code follows:
require([
"splunkjs/mvc",
"splunkjs/mvc/searchmanager",
"splunkjs/mvc/simplexml/ready!"
], function(mvc) {
var SearchManager = require("splunkjs/mvc/searchmanager");
// Get the Events table
var myEventsTable = mvc.Components.get('myevents');
// Respond to a click event
myEventsTable.on("click", function(e) {
// Get the default model
var tokens = mvc.Components.get("default");
var alertid= tokens.get("src_type_tok");
var ctime = new Date().getTime();
// create file and path var
var filename = ctime + "_" + alertid + ".png";
console.log(alertid);
console.log(filename);
var search = new SearchManager({
"id": "search_img",
"earliest_time": "-5m@m",
"latest_time": "now",
"search": "| imgsearch $alertid$ $filename$", // this one not working
//"search": "| imgsearch 3215687 153857376_3215687.png", // this is working fine
"cancelOnUnload": true,
"autostart": false,
"auto_cancel": 90,
"preview": false,
"cache": false,
"tokenDependencies": {
},
"runWhenTimeIsUndefined": false
}, {tokens: true, tokenNamespace: "submitted"});
console.log("after search function");
search.on('search:failed', function() {
console.log("Search failed");
}.bind(this));
search.on("search:start", function() {
console.log("Search started");
}.bind(this));
search.on("search:done", function() {
console.log("Search completed");
}.bind(this));
// Start the search
search.startSearch();
});
});
@clement, what you are trying to do can be done in Simple XML itself. Any specific reason for JavaScript?
@niketnilay, indeed you have just highlighted a good pointer for me to find a workaround, thank you.
I refer to the following workaround, it work fine for my requirement:
https://answers.splunk.com/answers/239159/multiple-base-searches-in-a-dasboard-with-post-pro.html
Thanks again for sharing your information 🙂
@clement, seems like you are using post processing to overcome the issue you were facing. While init section to initialize token is a different approach. But I am glad you found something working for you.
@clement, I believe imgsearch
is your custom SPL command. The tokens in search string should be placed withing dollar signs i.e.
| imgsearch $filename$ $alert_id$
Following is what your search might look like with the changes.
var search = new SearchManager({
"id": "search_img",
"earliest_time": "-5m@m",
"latest_time": "now",
"search": "| imgsearch $filename$ $alert_id$",
"cancelOnUnload": true,
"autostart": false,
"auto_cancel": 90,
"preview": false,
"cache": false,
"tokenDependencies": {
},
"runWhenTimeIsUndefined": false
}, {tokens: true, tokenNamespace: "submitted"});
PS: From Splunk Enterprise 6.5
onward, if you are not using HTML Dashboards
you should have <init>
section in Simple XML dashboard
which should allow you to initialize your own static tokens like filename
. Which implies you do not require Simple XML JavaScript Extension for such scenarios. (PS: init section does not work in HTML Dashboard or after conversion to HTML Dashboard.)
<init>
<set token="filename">1512234117_372926.png</set>
</init>