App-ElasticSearch-Utilities
view release on metacpan or search on metacpan
scripts/es-nodes.pl view on Meta::CPAN
#!perl
# PODNAME: es-nodes.pl
# ABSTRACT: Listing the nodes in a cluster with some details
use strict;
use warnings;
use App::ElasticSearch::Utilities qw(es_request);
use CLI::Helpers qw(:output);
use Getopt::Long qw(:config no_ignore_case no_ignore_case_always);
use Pod::Usage;
#------------------------------------------------------------------------#
# Argument Parsing
my %OPT;
GetOptions(\%OPT,
'attributes|attr=s',
'help|h',
'manual|m',
);
#------------------------------------------------------------------------#
# Documentation
pod2usage(1) if $OPT{help};
pod2usage(-exitval => 0, -verbose => 2) if $OPT{manual};
my $cres = es_request('_cluster/health');
my $CLUSTER = defined $cres ? $cres->{cluster_name} : 'UNKNOWN';
output({clear=>1,color=>'magenta'}, "Cluster [$CLUSTER] contains $cres->{number_of_nodes} nodes.", '-='x20);
# Get a list of nodes
my $nres = es_request('_cluster/state/master_node,nodes', {});
if(!defined $nres) {
output({stderr=>1,color=>'red'}, 'Fetching node status failed.');
exit 1;
}
debug_var($nres);
foreach my $uuid (sort { $nres->{nodes}{$a}->{name} cmp $nres->{nodes}{$b}->{name} } keys %{ $nres->{nodes} }) {
my $node = $nres->{nodes}{$uuid};
my $color = defined $nres->{master_node} && $uuid eq $nres->{master_node} ? 'green' : 'cyan';
output({color=>$color}, $node->{name});
output({indent=>1,kv=>1,color=>$color}, address => $node->{transport_address});
verbose({indent=>1,kv=>1,color=>$color}, uuid => $uuid);
if( exists $OPT{attributes} ) {
output({indent=>1}, "attributes:");
foreach my $attr ( split /,/, $OPT{attributes} ) {
next unless exists $node->{attributes}{$attr};
output({indent=>2,kv=>1}, $attr => $node->{attributes}{$attr});
}
}
}
__END__
=pod
=head1 NAME
es-nodes.pl - Listing the nodes in a cluster with some details
=head1 VERSION
version 8.8
=head1 SYNOPSIS
es-nodes.pl [options]
Options:
--help print help
--manual print full manual
--attibutes Comma separated list of attributes to display, default is NONE
From App::ElasticSearch::Utilities:
--local Use localhost as the elasticsearch host
--host ElasticSearch host to connect to
--port HTTP port for your cluster
--proto Defaults to 'http', can also be 'https'
--http-username HTTP Basic Auth username
--password-exec Script to run to get the users password
--insecure Don't verify TLS certificates
--cacert Specify the TLS CA file
--capath Specify the directory with TLS CAs
--cert Specify the path to the client certificate
--key Specify the path to the client private key file
--noop Any operations other than GET are disabled, can be negated with --no-noop
--timeout Timeout to ElasticSearch, default 10
--keep-proxy Do not remove any proxy settings from %ENV
--index Index to run commands against
--base For daily indexes, reference only those starting with "logstash"
(same as --pattern logstash-* or logstash-DATE)
( run in 1.392 second using v1.01-cache-2.11-cpan-39bf76dae61 )