Dashboards & Visualizations

How do I know which token in a dashboard is not set?

David
Splunk Employee
Splunk Employee

I have a complicated dashboard, with javascript, many panels, and all kinds of things. Some of my panels sometimes show "Search is waiting for input..." but I don't know how to figure out which token is not set.

Is there something I can do in the javascript inspector that would help me figure out which token isn't being set?

0 Karma
1 Solution

David
Splunk Employee
Splunk Employee

Absolutely. First open up the Javascript Console: https://webmasters.stackexchange.com/a/77337

Then paste in the following:

var missing_tokens = []

for(var attribute in splunkjs.mvc.Components.attributes){
    if(splunkjs.mvc.Components.attributes.hasOwnProperty(attribute) && typeof splunkjs.mvc.Components.getInstance(attribute).lastError != "undefined" && splunkjs.mvc.Components.getInstance(attribute).lastError == "Search is waiting for input..."){
        console.log("I have a manager..", attribute, splunkjs.mvc.Components.getInstance(attribute).lastError)
        var search=splunkjs.mvc.Components.attributes[attribute].attributes.search.replace(/\$\$\S+\$\$/g, "")
        var myRegex = /\$(\S*)\$/g,
            matches,
            tokens = [];
        while (matches = myRegex.exec(search)) {
           if(typeof splunkjs.mvc.Components.getInstance("submitted").get(matches[1]) == "undefined"){
                if(!(matches[1] in missing_tokens)){
                    missing_tokens[matches[1]] = 0
                }
                missing_tokens[matches[1]]++
           }
        }
    }
}
for(var token in missing_tokens){
    console.log("We found ", missing_tokens[token], " searches that are missing ", token, "-- add it via splunkjs.mvc.Components.getInstance(\"submitted\").set(\"" + token + "\", \"\")")
}

The result will tell you how many searches are dependent on each token, and what you can manually do to set a token (for troubleshooting, or otherwise) also via the Javascript Console.

View solution in original post

David
Splunk Employee
Splunk Employee

Absolutely. First open up the Javascript Console: https://webmasters.stackexchange.com/a/77337

Then paste in the following:

var missing_tokens = []

for(var attribute in splunkjs.mvc.Components.attributes){
    if(splunkjs.mvc.Components.attributes.hasOwnProperty(attribute) && typeof splunkjs.mvc.Components.getInstance(attribute).lastError != "undefined" && splunkjs.mvc.Components.getInstance(attribute).lastError == "Search is waiting for input..."){
        console.log("I have a manager..", attribute, splunkjs.mvc.Components.getInstance(attribute).lastError)
        var search=splunkjs.mvc.Components.attributes[attribute].attributes.search.replace(/\$\$\S+\$\$/g, "")
        var myRegex = /\$(\S*)\$/g,
            matches,
            tokens = [];
        while (matches = myRegex.exec(search)) {
           if(typeof splunkjs.mvc.Components.getInstance("submitted").get(matches[1]) == "undefined"){
                if(!(matches[1] in missing_tokens)){
                    missing_tokens[matches[1]] = 0
                }
                missing_tokens[matches[1]]++
           }
        }
    }
}
for(var token in missing_tokens){
    console.log("We found ", missing_tokens[token], " searches that are missing ", token, "-- add it via splunkjs.mvc.Components.getInstance(\"submitted\").set(\"" + token + "\", \"\")")
}

The result will tell you how many searches are dependent on each token, and what you can manually do to set a token (for troubleshooting, or otherwise) also via the Javascript Console.

View solution in original post

chadmedeiros
Path Finder

Great detailed answer. I tend to simply throw relevant tokens into the title or subtitle bar of each panel while developing. Any tokens that aren't set should be obvious.

0 Karma
Register for .conf21 Now! Go Vegas or Go Virtual!

How will you .conf21? You decide! Go in-person in Las Vegas, 10/18-10/21, or go online with .conf21 Virtual, 10/19-10/20.