diff options
author | Amit Ghadge <amitg.b14@gmail.com> | 2018-06-08 17:33:54 +0530 |
---|---|---|
committer | Bryn M. Reeves <bmr@redhat.com> | 2018-06-18 15:37:10 +0100 |
commit | 294d829ba148781606065388d71905735cf8b82c (patch) | |
tree | 35c41e8aa91f4af968e3cd961ffa19201b6dabf8 | |
parent | b34637a009dc1f2c2693966aeb795b6c64b81703 (diff) | |
download | sos-294d829ba148781606065388d71905735cf8b82c.tar.gz |
[elastic] Add Elasticsearch service plugin
Closes: #1334
Resolves: #1335
Signed-off-by: Amit Ghadge <amitg.b14@gmail.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
-rw-r--r-- | sos/plugins/elastic.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/sos/plugins/elastic.py b/sos/plugins/elastic.py new file mode 100644 index 00000000..d4d93bc4 --- /dev/null +++ b/sos/plugins/elastic.py @@ -0,0 +1,60 @@ +# Copyright (C) 2018 Amit Ghadge <amitg.b14@gmail.com> +# +# This file is part of the sos project: https://github.com/sosreport/sos +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions of +# version 2 of the GNU General Public License. +# +# See the LICENSE file in the source distribution for further information. + +from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin +import re + + +class Elastic(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): + """ + ElasticSearch service + """ + plugin_name = 'elastic' + profiles = ('services', ) + + packages = ('elasticsearch',) + + def get_hostname_port(self, els_config_file): + hostname = "localhost" + port = 9200 + with open(els_config_file) as fread: + for line in fread: + network_host = re.search(r'(^network.host):(.*)', line) + network_port = re.search(r'(^http.port):(.*)', line) + if network_host and len(network_host.groups()) == 2: + hostname = network_host.groups()[-1].strip() + hostname = re.sub(r'"|\'', '', hostname) + continue + if network_port and len(network_port.groups()) == 2: + port = network_port.groups()[-1].strip() + return hostname, port + + def setup(self): + els_config_file = "/etc/elasticsearch/elasticsearch.yml" + self.add_copy_spec(els_config_file) + + self.limit = self.get_option("log_size") + if self.get_option("all_logs"): + self.add_copy_spec("/var/log/elasticsearch/*", + sizelimit=self.limit) + else: + self.add_copy_spec("/var/log/elasticsearch/elasticsearch.log", + sizelimit=self.limit) + + host, port = self.get_hostname_port(els_config_file) + endpoint = host + ":" + port + self.add_cmd_output([ + "curl -X GET '%s/_cluster/settings?pretty'" % endpoint, + "curl -X GET '%s/_cluster/health?pretty'" % endpoint, + "curl -X GET '%s/_cluster/stats?pretty'" % endpoint, + "curl -X GET '%s/_cat/nodes?v'" % endpoint, + ]) + +# vim: set et ts=4 sw=4 : |