0

Splunkから情報を取得して、遊んでみようとしています。ログインは成功しましたが、何もできません。保存した検索とジョブを無駄にしようとしました。これが、ログインして保存された検索を取得するために使用するコードです。

var splunkjs = require('splunk-sdk');
    var service = new splunkjs.Service({username: "****", password: "*****", host: "dllprdspl01.dl.prd.p.******.com", port: 8089, scheme: "https", version: 5});
    service.login(function(err, success) {
        if (err) {
            throw err;
        }
        console.log("Login was successful: " + success);
        var mySavedSearches = service.savedSearches();
        mySavedSearches.fetch(function(err, mySavedSearches) {
          console.log("There are " + mySavedSearches.list().length + " saved searches");
          var savedSearchColl = mySavedSearches.list();
          for(var i = 0; i < savedSearchColl.length; i++) {
            var search = savedSearchColl[i];
            console.log(i + ": " + savedSearchColl[i].name);
            console.log("    Query: " + savedSearchColl[i].properties().search + "\n");
          }
        });
    });

ログイン時に正常に戻りましたが、保存した検索を一覧表示しようとすると、次のエラーが発生します。

TypeError: Cannot call method 'list' of undefined

ログイン後、サービスをコンソールに出力しましたが、問題があると思われるものは何も表示されません。

次のコードで接続してセッションキーを取得できました。

var splunkjs = require('splunk-sdk');
var xml2js = require('xml2js');

var context = new splunkjs.Context({username: "****", password: "****", host: "****.com", port: 8089, scheme: "https", version: 5});
var sessionKey;
var key = context.login(function(err, success){
  if(err){
    throw err;
  }
  // console.log("Login was successful " + success);
  var keyXml = key.req.res.body;
  var parser = new xml2js.Parser();
  parser.parseString(keyXml, function(err, result){
    sessionKey = result.response.sessionKey[0];
  });
  context.sessionKey = sessionKey;
  console.log(context);
  context.get('services/saved/searches/hamm_test_mn7', function(err, response){
    console.get(response);
  })
});

セッションキーを取得できる場合は、Splunkにログインする必要があります。保存した検索を完了するには、そこからどのように進めますか。

4

2 に答える 2

3

Splunkで働くNeerajの助けを借りて、Splunkに接続し、保存した検索を取得することができました。Splunkサーバーにxml2jsonをインストールする必要があることに気づきませんでした。これが起こる必要があるすべてを説明するためのドキュメントページです。次に、バージョン番号を上記のように5ではなく4.3に変更する必要がありました。その後、すべてが接続され、保存した検索を希望どおりに取得できました。元のコードでは、接続しているように見えましたが、実際には空のサービスオブジェクトが返されていました。これが私が接続していることを確認するために使用したコードです。セッションキーが表示されると、Splunkがあなたに話しかけていることがわかります。

var splunkjs = require('splunk-sdk');
var service = new splunkjs.Service({username: "admin",password: "changeme",host: "localhost",port:8089,scheme: "https",version: 4.3});
service.login(function (err, success) {
    if (err) console.log("Error logging in", err);
    else console.log(service.sessionKey);
});
于 2013-01-02T19:21:35.910 に答える
1

ログインできるのは驚くべきことですが、保存された検索で窒息します。フェッチ中にエラーがスローされるかどうかを確認するのはどうですか。次のコードを試して、コンソールに何かが表示されたらお知らせください。

var splunkjs = require('splunk-sdk');
var service = new splunkjs.Service({username: "****", password: "*****", host: "dllprdspl01.dl.prd.p.******.com", port: 8089, scheme: "https", version: 5});
service.login(function(err, success) {
  if (err) {
      throw err;
  }
  console.log("Login was successful: " + success);
  var mySavedSearches = service.savedSearches();
  mySavedSearches.fetch(function(err, mySavedSearches) {
    if (err) {
      console.log("Error in fetching savedSearches:", err);
      throw err;
    }
    console.log("There are " + mySavedSearches.list().length + " saved searches");
    var savedSearchColl = mySavedSearches.list();
    for(var i = 0; i < savedSearchColl.length; i++) {
      var search = savedSearchColl[i];
      console.log(i + ": " + savedSearchColl[i].name);
      console.log("    Query: " + savedSearchColl[i].properties().search + "\n");
    }
  });
});
于 2012-12-07T18:07:46.870 に答える