ceph-zabbix icon indicating copy to clipboard operation
ceph-zabbix copied to clipboard

Template / script mismatch

Open bmarkowww opened this issue 8 years ago • 2 comments

Zabbix temaplate contains ceph.osd_in and ceph.osd_up parameters, while ceph-status.sh works with just in and up args:

<name>Ceph OSD in %</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>ceph.osd_in</key>
  "in")
    ceph_osd_in_percent
  ;;

bmarkowww avatar May 31 '16 07:05 bmarkowww

The translation between the Zabbix item key and the script argument is done by the Zabbix agent configuration.

zabbix_agent_ceph_plugin.conf: UserParameter=ceph.osd_in, /opt/ceph-status.sh in UserParameter=ceph.osd_up, /opt/ceph-status.sh up

This should work like this although this may need a refactor to be easily understandable.

thelan avatar May 31 '16 19:05 thelan

I'm using sh script with zabbix-sender. Python based daemon runs it every minute.

   PARAMS = ['health', 'count', 'osd_in', 'osd_up', 'active', 'backfill', 'clean', 'creating',
            'degraded', 'degraded_percent', 'down', 'incomplete', 'inconsistent',
            'peering', 'recovering', 'remapped', 'repair', 'replay', 'scrubbing',
            'splitting', 'stale', 'pgtotal', 'waitBackfill', 'mon', 'rados_total',
            'rados_used', 'rados_free', 'wrbps', 'rdbps', 'ops']

  class Mon(object):
      def send_zabbix_stat(self, params):
          for l_pname, l_pvalue in params.iteritems():
              l_cmd = ["zabbix_sender", "-vv", "-s", HOSTNAME, "-z", ZABBIX_HOST, "-I", IP, "-k", l_pname, "-o", l_pvalue]
              l_proc = subprocess.Popen(l_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
              l_stdout, l_stderr = l_proc.communicate()

      def get_stat(self, param_name):
          l_cmd = [SCRIPT, param_name]
          l_proc = subprocess.Popen(l_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
          l_stdout, l_stderr = l_proc.communicate()
          for l_line in l_stdout.splitlines():
              l_line = l_line.strip();
              return l_line

It's just easier when script params and zabbix keys are the same, so we can use PARAMS array for invoking script and sending data to zabbix simultaneously

bmarkowww avatar Jun 01 '16 19:06 bmarkowww