2016-10-06 5 views
0

J'ai deux champs dans mes données splunk appelées "impact_time" et "incident_name". Maintenant, je veux agréger ces noms d'incidents sur la base de "l'impact_time" et de la durée que je donne. Par exemple, Si je donne span comme 1d, il devrait agréger les incidents sous chaque date.Champs de données manquants dans la sortie splunk

2016-06-28 a,b,c,d 
2016-06-29 g,r,w,d 
2016-06-30 f,e,r,t 

Si je donne la durée de 1 heure, il devrait regrouper sur la base des heures de la impact_time

2016-06-28 03:00:00 a,b,c,d 
2016-06-29 04:00:00 g,r,w,d 
2016-06-30 05:00:00 f,e,r,t 

Je reçois cela avec la requête suivante: -

index=sn impact=1 OR impact=2 | eval time = round(strptime(impact_start,"%Y-%m-%d %H:%M:%S"), 0)| where time >= ' + timeStart + ' AND time<=' + timeEnd + '| bucket time span=' + hm + ' | stats values(number) as incident_name by time 

Mais il y a un problème. Quand je garde le temps d'agrégation comme "heure", si dans le cas où une heure n'a pas de données, il ne montre rien pour ce "impact_time". Comme dans, l'impact_time correspondant est complètement absent de la table de données. Est-il possible d'afficher un champ "incident_number" vide pour un "impact_time" dans le cas où "impact_time" ne contient aucune donnée à afficher? Par exemple: -

2016-06-28 03:00:00 a,b,c,d 
2016-06-29 04:00:00 g,r,w,d 
2016-06-30 05:00:00 f,e,r,t 
2016-06-30 08:00:00 f,e,r,t 

Ici l'heure 06:00:00, 07:00:00 n'a pas de données. Donc, ces champs sont complètement absents de la sortie de données au lieu de montrer ceci: -

2016-06-28 03:00:00 a,b,c,d 
2016-06-29 04:00:00 g,r,w,d 
2016-06-30 05:00:00 f,e,r,t 
2016-06-30 06:00:00 (null or empty) 
2016-06-30 07:00:00 (null or empty) 
2016-06-30 08:00:00 f,e,r,t 

Merci d'avance.

Répondre

0

Au lieu d'utiliser l'approche bucket time span=, vous pouvez plutôt utiliser l'approche timechart:

Je repro'd votre scénario en exécutant quelque chose de similaire sur mes données:

[...] 
| bucket _time span=1h 
| stats values(hostIdentifier) as hosts 

Cela a donné:

------------------------------------------- 
| _time   | hosts    | 
------------------------------------------- 
| 2016-10-10 22:00 | host1, host2, host3 | 
------------------------------------------- 
| 2016-10-10 23:00 | hosta, hostb, hostc | 
------------------------------------------- 
| 2016-10-11 00:00 | hostf, hoste, hostd | 
------------------------------------------- <---This is the gap! 
| 2016-10-11 02:00 | host4, host5, host6 | 
------------------------------------------- 

J'ai ensuite changé ma requête pour utiliser:

[...] 
| timechart span=1h values(hostIdentifier) as hosts 
| fillnull "hosts" value="No Host Data" 

Ceci a produit:

------------------------------------------- 
| _time   | hosts    | 
------------------------------------------- 
| 2016-10-10 22:00 | host1, host2, host3 | 
------------------------------------------- 
| 2016-10-10 23:00 | hosta, hostb, hostc | 
------------------------------------------- 
| 2016-10-11 00:00 | hostf, hoste, hostd | 
------------------------------------------- 
| 2016-10-11 01:00 | No Host Data  | <---This _was_ the gap! 
------------------------------------------- 
| 2016-10-11 02:00 | host4, host5, host6 | 
------------------------------------------- 

Si vous laissez la strophe fillnull, ce sera juste une valeur vide dans cette cellule.

Je pense que cette solution devrait fonctionner pour votre ensemble de données. La seule chose est que Splunk utilise le champ _time intégré pour le timecharting. Vous devrez peut-être remplacer la valeur _time à votre champ personnalisé à la:

[...] 
eval _time=time 

ou tout simplement utiliser la variable _time au lieu de time dans tous vos calculs de temps.

Espérons que ça aide!

+0

ou vous pouvez renommer le champ _time dans votre sortie en 'heure', ou tout autre nom: votre texte de recherche | renommer _time AS time. Doc link: https://docs.splunk.com/Documentation/Splunk/6.5.0/SearchReference/Rename –