The kafkaCluster() GraphQL query returns information on a Kafka cluster.

For information on Kafka, see the Kafka Configuration documentation page. You may also want to look at the Kafka Configuration reference page. For information on clusters in general, see the Cluster Management documentation page. Also, look at the LogScale Logical Architecture page in the Training section.

Syntax

Below is the syntax for the kafkaCluster() query field:

graphql
kafkaCluster: KafkaClusterDescription!

This query fiend has no input, just return values. You enter the parameters you want returned within curly-brackets. See the example here:

Raw
graphql
query {
  kafkaCluster {clusterID, nodes {
    id, host, port
  }, 
  logDirDescriptions {
    nodeID, path, error
  }}
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "query {
  kafkaCluster {clusterID, nodes {
    id, host, port
  }, 
  logDirDescriptions {
    nodeID, path, error
  }}
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "query {
  kafkaCluster {clusterID, nodes {
    id, host, port
  }, 
  logDirDescriptions {
    nodeID, path, error
  }}
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "query { ^
  kafkaCluster {clusterID, nodes { ^
    id, host, port ^
  },  ^
  logDirDescriptions { ^
    nodeID, path, error ^
  }} ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "query {
  kafkaCluster {clusterID, nodes {
    id, host, port
  }, 
  logDirDescriptions {
    nodeID, path, error
  }}
}"
}'
"$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $INGEST_TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $json = '{"query" : "query {
  kafkaCluster {clusterID, nodes {
    id, host, port
  }, 
  logDirDescriptions {
    nodeID, path, error
  }}
}"
}';
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "query {
  kafkaCluster {clusterID, nodes {
    id, host, port
  }, 
  logDirDescriptions {
    nodeID, path, error
  }}
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "query {
  kafkaCluster {clusterID, nodes {
    id, host, port
  }, 
  logDirDescriptions {
    nodeID, path, error
  }}
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL/graphql',
  path: '/graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();
Example Responses
Success (HTTP Response Code 200 OK)
json
{
  "data": {
    "kafkaCluster": {
      "clusterID": "ExlWrS6RT1CmbCiP2TejTQ",
      "nodes": [
        {
          "id": 0,
          "host": "localhost",
          "port": 9092
        }
      ],
      "logDirDescriptions": [
        {
          "nodeID": 0,
          "path": "/data/kafka-data",
          "error": null
        }
      ]
    }
  }
}

Given Datatypes

For the given datatype, KafkaClusterDescription, there are several parameters and sub-parameters. Below is a list of them, along with a description of each:

Table: KafkaClusterDescription

ParameterTypeRequiredDefaultDescription
Some arguments may be required, as indicated in the Required column. For some fields, this column indicates that a result will always be returned for this column.
Table last updated: Sep 25, 2024
chatterTopicKafkaTopicDescriptionyes Any chatter topic associated with the Kafka cluster. See KafkaTopicDescription.
clusterIDstringyes The unique identifier of the cluster.
controllerKafkaNodeyes The Kafka node that is the controller of the cluster. See KafkaNode.
globalEventsTopicKafkaTopicDescriptionyes The global Kafka events topic. See KafkaTopicDescription.
ingestTopicKafkaTopicDescriptionyes A description of the Kafka ingest topic. See KafkaTopicDescription.
logDirDescriptions[KafkaLogDir]yes Descriptons of the Kafka log directories. See KafkaLogDir.
nodes[KafkaNode]yes The list of Kafka nodes in the cluster. See KafkaNode.