Skip to content
Create a gist now

Instantly share code, notes, and snippets.

Munin ElasticSearch plugins
#!/usr/bin/env perl
# Parameters supported:
#
# config
# autoconf
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf
use strict;
use warnings;
use LWP;
use JSON qw/decode_json/;
=head1 NAME
elasticsearch_jvm - A munin plugin that collects stats from the JVM of your elasticsearch instances
=head1 APPLICABLE SYSTEMS
ElasticSearch
=head1 CONFIGURATION
None
=head1 BUGS
None known so far. If you find any, let me know.
=head1 AUTHOR
Tomas Doran (t0m) - c<< <bobtfish@bobtfish.net> >>
=cut
my $host = 'localhost';
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
sub get_json_from_url {
my $uri = shift;
my $res = $ua->get($uri, 'Content-Type' => 'application/json' );
Carp::confess($res->code . " for " . $uri) unless $res->is_success;
my $data = do { local $@; eval { decode_json($res->content) } };
die("Could not decode JSON from: " . $res->content) unless $data;
return $data;
}
my $data = get_json_from_url("http://$host:9200/_cluster/nodes");
my $t_data = get_json_from_url("http://$host:9200/_cluster/nodes/stats");
my %out;
foreach my $full_node_name (keys %{$data->{nodes}}) {
next unless $t_data->{nodes}{$full_node_name};
$out{field_size} = $t_data->{nodes}{$full_node_name}{indices}{cache}{field_size_in_bytes};
$out{filter_size} = $t_data->{nodes}{$full_node_name}{indices}{cache}{filter_size_in_bytes};
}
if ($ARGV[0] and $ARGV[0] eq 'config') {
print "graph_args --base 1024\n";
print "graph_title ElasticSearch cache\n";
print "graph_category elasticsearch\n";
print "graph_vlabel Bytes\n";
foreach my $name (keys %out) {
print "$name.label $name\n"."$name.type GAUGE\n";
}
}
elsif (!$ARGV[0] || $ARGV[0] eq 'autoconf') {
foreach my $name (keys %out) {
print "$name.value " . $out{$name} . "\n";
}
}
exit(0);
#!/usr/bin/env perl
# Parameters supported:
#
# config
# autoconf
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf
use strict;
use warnings;
use LWP;
use JSON qw/decode_json/;
=head1 NAME
elasticsearch_jvm - A munin plugin that collects stats from the JVM of your elasticsearch instances
=head1 APPLICABLE SYSTEMS
ElasticSearch
=head1 CONFIGURATION
None
=head1 BUGS
None known so far. If you find any, let me know.
=head1 AUTHOR
Tomas Doran (t0m) - c<< <bobtfish@bobtfish.net> >>
=cut
my $host = 'localhost';
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
sub get_json_from_url {
my $uri = shift;
my $res = $ua->get($uri, 'Content-Type' => 'application/json' );
Carp::confess($res->code . " for " . $uri) unless $res->is_success;
my $data = do { local $@; eval { decode_json($res->content) } };
die("Could not decode JSON from: " . $res->content) unless $data;
return $data;
}
my $data = get_json_from_url("http://$host:9200/_cluster/health");
if ($ARGV[0] and $ARGV[0] eq 'config') {
print "graph_title ElasticSearch cluster shards\n";
print "graph_category elasticsearch\n";
print "graph_scale no\n";
foreach my $name (grep { /_shards$/ } keys %$data) {
print "$name.label $name\n"."$name.type GAUGE\n";
}
}
elsif (!$ARGV[0] || $ARGV[0] eq 'autoconf') {
foreach my $name (grep { /_shards$/ } keys %$data) {
print "$name.value " . $data->{$name} . "\n";
}
}
exit(0);
#!/usr/bin/env perl
# Parameters supported:
#
# config
# autoconf
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf
use strict;
use warnings;
use LWP;
use JSON qw/decode_json/;
=head1 NAME
elasticsearch_jvm - A munin plugin that collects stats from the JVM of your elasticsearch instances
=head1 APPLICABLE SYSTEMS
ElasticSearch
=head1 CONFIGURATION
None
=head1 BUGS
None known so far. If you find any, let me know.
=head1 AUTHOR
Tomas Doran (t0m) - c<< <bobtfish@bobtfish.net> >>
=cut
my $host = 'localhost';
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
sub get_json_from_url {
my $uri = shift;
my $res = $ua->get($uri, 'Content-Type' => 'application/json' );
Carp::confess($res->code . " for " . $uri) unless $res->is_success;
my $data = do { local $@; eval { decode_json($res->content) } };
die("Could not decode JSON from: " . $res->content) unless $data;
return $data;
}
my $data = get_json_from_url("http://$host:9200/_cluster/nodes");
my $t_data = get_json_from_url("http://$host:9200/_cluster/nodes/stats");
my %out;
foreach my $full_node_name (keys %{$data->{nodes}}) {
next unless $t_data->{nodes}{$full_node_name};
$out{num_docs} = $t_data->{nodes}{$full_node_name}{indices}{docs}{count};
}
if ($ARGV[0] and $ARGV[0] eq 'config') {
print "graph_title ElasticSearch documents\n";
print "graph_category elasticsearch\n";
foreach my $name (keys %out) {
print "$name.label $name\n"."$name.type GAUGE\n";
}
}
elsif (!$ARGV[0] || $ARGV[0] eq 'autoconf') {
foreach my $name (keys %out) {
print "$name.value " . $out{$name} . "\n";
}
}
exit(0);
#!/usr/bin/env perl
# Parameters supported:
#
# config
# autoconf
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf
use strict;
use warnings;
use LWP;
use JSON qw/decode_json/;
=head1 NAME
elasticsearch_jvm - A munin plugin that collects stats from the JVM of your elasticsearch instances
=head1 APPLICABLE SYSTEMS
ElasticSearch
=head1 CONFIGURATION
None
=head1 BUGS
None known so far. If you find any, let me know.
=head1 AUTHOR
Tomas Doran (t0m) - c<< <bobtfish@bobtfish.net> >>
=cut
my $host = 'localhost';
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
sub get_json_from_url {
my $uri = shift;
my $res = $ua->get($uri, 'Content-Type' => 'application/json' );
Carp::confess($res->code . " for " . $uri) unless $res->is_success;
my $data = do { local $@; eval { decode_json($res->content) } };
die("Could not decode JSON from: " . $res->content) unless $data;
return $data;
}
my $data = get_json_from_url("http://$host:9200/_cluster/nodes");
my $t_data = get_json_from_url("http://$host:9200/_cluster/nodes/stats");
my %out;
foreach my $full_node_name (keys %{$data->{nodes}}) {
next unless $t_data->{nodes}{$full_node_name};
$out{index_size} = $t_data->{nodes}{$full_node_name}{indices}{store}{size_in_bytes};
}
if ($ARGV[0] and $ARGV[0] eq 'config') {
print "graph_args --base 1024\n";
print "graph_title ElasticSearch indexes\n";
print "graph_category elasticsearch\n";
print "graph_vlabel Bytes\n";
foreach my $name (keys %out) {
print "$name.label $name\n"."$name.type GAUGE\n";
}
}
elsif (!$ARGV[0] || $ARGV[0] eq 'autoconf') {
foreach my $name (keys %out) {
print "$name.value " . $out{$name} . "\n";
}
}
exit(0);
#!/usr/bin/env perl
# Parameters supported:
#
# config
# autoconf
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf
use strict;
use warnings;
use LWP;
use JSON qw/decode_json/;
=head1 NAME
elasticsearch_jvm - A munin plugin that collects stats from the JVM of your elasticsearch instances
=head1 APPLICABLE SYSTEMS
ElasticSearch
=head1 CONFIGURATION
None
=head1 BUGS
None known so far. If you find any, let me know.
=head1 AUTHOR
Tomas Doran (t0m) - c<< <bobtfish@bobtfish.net> >>
=cut
my $host = 'localhost';
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
sub get_json_from_url {
my $uri = shift;
my $res = $ua->get($uri, 'Content-Type' => 'application/json' );
Carp::confess($res->code . " for " . $uri) unless $res->is_success;
my $data = do { local $@; eval { decode_json($res->content) } };
die("Could not decode JSON from: " . $res->content) unless $data;
return $data;
}
my $data = get_json_from_url("http://$host:9200/_cluster/nodes");
my %out;
foreach my $full_node_name (keys %{$data->{nodes}}) {
foreach my $name (grep { /_in_bytes$/ } keys %{ $data->{nodes}{$full_node_name}{jvm}{mem} }) {
my ($dname) = $name =~ m/(.+)_in_bytes$/;
$out{$dname} = $data->{nodes}{$full_node_name}{jvm}{mem}{$name};
}
}
if ($ARGV[0] and $ARGV[0] eq 'config') {
print "graph_args --base 1024\n";
print "graph_title ElasticSearch JVM memory\n";
print "graph_category elasticsearch\n";
print "graph_vlabel Bytes\n";
foreach my $name (keys %out) {
print "$name.label $name\n"."$name.type GAUGE\n";
}
}
elsif (!$ARGV[0] || $ARGV[0] eq 'autoconf') {
foreach my $name (keys %out) {
print "$name.value " . $out{$name} . "\n";
}
}
exit(0);
#!/usr/bin/env perl
# Parameters supported:
#
# config
# autoconf
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf
use strict;
use warnings;
use LWP;
use JSON qw/decode_json/;
=head1 NAME
elasticsearch_jvm - A munin plugin that collects stats from the JVM of your elasticsearch instances
=head1 APPLICABLE SYSTEMS
ElasticSearch
=head1 CONFIGURATION
None
=head1 BUGS
None known so far. If you find any, let me know.
=head1 AUTHOR
Tomas Doran (t0m) - c<< <bobtfish@bobtfish.net> >>
=cut
my $host = 'localhost';
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
sub get_json_from_url {
my $uri = shift;
my $res = $ua->get($uri, 'Content-Type' => 'application/json' );
Carp::confess($res->code . " for " . $uri) unless $res->is_success;
my $data = do { local $@; eval { decode_json($res->content) } };
die("Could not decode JSON from: " . $res->content) unless $data;
return $data;
}
my $data = get_json_from_url("http://$host:9200/_cluster/nodes");
my $t_data = get_json_from_url("http://$host:9200/_cluster/nodes/stats");
my %out;
foreach my $full_node_name (keys %{$data->{nodes}}) {
next unless $t_data->{nodes}{$full_node_name};
foreach my $name (keys %{ $t_data->{nodes}{$full_node_name}{jvm}{threads} }) {
$out{$name} = $t_data->{nodes}{$full_node_name}{jvm}{threads}{$name};
}
}
if ($ARGV[0] and $ARGV[0] eq 'config') {
print "graph_title ElasticSearch JVM threads\n";
print "graph_category elasticsearch\n";
print "graph_scale no\n";
foreach my $name (keys %out) {
print "$name.label $name\n"."$name.type GAUGE\n";
}
}
elsif (!$ARGV[0] || $ARGV[0] eq 'autoconf') {
foreach my $name (keys %out) {
print "$name.value " . $out{$name} . "\n";
}
}
exit(0);
#!/bin/sh
# -*- sh -*-
. $MUNIN_LIBDIR/plugins/plugin.sh
if [ "$1" = "config" ]; then
echo 'graph_title ElasticSearch open files'
echo 'graph_args --base 1000 -l 0'
echo 'graph_vlabel number of open files'
echo 'graph_category system'
echo 'used.label open files'
echo 'used.type GAUGE'
echo 'used.info The number of currently open files.'
echo 'max.label max open files'
echo 'max.type GAUGE'
exit 0
fi
# while true; do su -c 'ls /proc/$(pidof whatever)/fd' elasticsearch |wc -l |nc -l -q0 localhost 9998; done
PID=`ps -u elasticsearch -opid,comm | grep java | awk '{ print $1 }'`
VALUE=`ls /proc/$PID/fd/ | wc | awk '{ print $1 }'`
echo "used.value $VALUE"
echo "max.value 65000"
#!/bin/sh
# -*- sh -*-
# AUTHOR: Moritz Onken <onken@netcubed.de>
. $MUNIN_LIBDIR/plugins/plugin.sh
if [ "$1" = "config" ]; then
echo 'graph_title ElasticSearch translog size'
echo 'graph_args --base 1024 -l 0'
echo 'graph_vlabel size of translogs'
echo 'graph_category system'
echo 'size.label size of translog files'
echo 'size.type GAUGE'
echo 'number.label number of translog files'
echo 'number.type GAUGE'
exit 0
fi
NUMBER=`ls /srv/elasticsearch/metacpan_v1/nodes/0/indices/*/*/translog/* | wc -l`
SIZE=`du -s /srv/elasticsearch/metacpan_v1/nodes/0/indices/*/*/translog/* | awk '{sum+=$1};END{print sum}'`
echo "number.value $NUMBER"
echo "size.value $SIZE"
@Ismail-Elyaakouby

hello i have this probleme

user@server.com plugins # munin-run elasticsearch_
Can't exec "/etc/munin/plugins/elasticsearch_": No such file or directory at /usr/share/perl5/Munin/Node/Service.pm line 263.

FATAL: Failed to exec.

->content of line 263:

my @command = grep defined, _service_command($self->{servicedir}, $service, $arg);
print STDERR "# About to run '", join (' ', @command), "'\n"
    if $config->{DEBUG};

exec @command;

thank you in advance

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.