Created
March 22, 2012 16:32
-
-
Save rafl/2159398 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<< <[email protected]> >> | |
=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<< <[email protected]> >> | |
=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<< <[email protected]> >> | |
=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<< <[email protected]> >> | |
=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<< <[email protected]> >> | |
=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); |
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<< <[email protected]> >> | |
=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); |
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 | |
# 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" |
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 -*- | |
# AUTHOR: Moritz Onken <[email protected]> | |
. $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" |
Perhaps it's too late but you must specify which one you want to run:
ex: munin-run elasticsearch_translog_size
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
hello i have this probleme
[email protected] 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:
thank you in advance