-
-
Save christeredvartsen/3046036 to your computer and use it in GitHub Desktop.
Munin ElasticSearch plugins
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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?jvm=true"); | |
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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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?jvm=true"); | |
my $t_data = get_json_from_url("http://$host:9200/_cluster/nodes/stats?jvm=true"); | |
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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 | |
PID=`ps -u elasticsearch -opid,comm | grep java | awk '{ print $1 }'` | |
VALUE=`lsof -u elasticsearch | wc -l` | |
echo "used.value $VALUE" | |
echo "max.value `cat /proc/sys/fs/file-max`" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment