2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/sphinx/sphindex_

85 lines
2.5 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim: set fileencoding=utf-8
#
# Munin plugin to show number of documents in Sphinx index
#
# Copyright Igor Borodikhin
#
# License : GPLv3
#
# parsed environment variables:
# server: hostname or ip-address of Sphinx server
# port: port number of Sphinx server
#
# This plugin shows graphs of numbers of documents in Sphinxsearch indexes.
#
# ## Requirements
# This plugin requires pythons sphinxsearch module which can be installed via easy_install.
#
# ## Installation
2018-03-27 04:14:26 +02:00
# Copy file to directory /usr/share/munin/pligins/ and create symbolic links for each index you
# wish to monitor.
# For example, if you've got indexes called index1 and index2 create these symlinks:
#
# ln -s /usr/share/munin/plugins/sphindex_ /etc/munin/plugins/sphindex_index1
# ln -s /usr/share/munin/plugins/sphindex_ /etc/munin/plugins/sphindex_index2
#
2018-03-27 04:14:26 +02:00
# If you run munin-node at different box than Sphinxsearch you can specify hostname and port
# options in munin-node.conf:
#
# [sphindex_*]
# env.server 10.216.0.141
# env.port 9312
#
2018-03-27 04:14:26 +02:00
# #%# capabilities=autoconf
# #%# family=contrib
2018-03-27 04:14:26 +02:00
import os
import sys
import sphinxsearch
prog_name = sys.argv[0]
index_name = prog_name[prog_name.find("_")+1:]
if len(sys.argv) == 2 and sys.argv[1] == "autoconf":
2018-03-27 04:14:26 +02:00
print("yes")
elif len(sys.argv) == 2 and sys.argv[1] == "config":
warning = "0:"
critical = "0:"
2018-03-27 04:14:26 +02:00
if "warning" in os.environ and os.environ["warning"]:
warning = os.environ["warning"]
2018-03-27 04:14:26 +02:00
if "critical" in os.environ and os.environ["critical"]:
critical = os.environ["critical"]
2018-03-27 04:14:26 +02:00
print("graph_title Sphinx index %s stats" % index_name)
print("graph_vlabel docs count")
print("graph_category search")
print("documents_count.warning %s" % warning)
print("documents_count.critical %s" % critical)
print("documents_count.label Documents count in index")
print("graph_args --base 1000 -l 0")
else:
2018-03-27 04:14:26 +02:00
if "server" in os.environ and os.environ["server"]:
server = os.environ["server"]
else:
2018-03-27 04:14:26 +02:00
server = "localhost"
2018-03-27 04:14:26 +02:00
if "port" in os.environ and os.environ["port"]:
try:
port = int(os.environ["port"])
except ValueError:
port = 9312
else:
port = 9312
client = sphinxsearch.SphinxClient()
client.SetServer(server, port)
client.SetLimits(0, 1, 0, 0)
2018-03-27 04:14:26 +02:00
result = client.Query("", index_name)
doc_count = result["total_found"]
2018-03-27 04:14:26 +02:00
print("documents_count.value %d" % doc_count)