Ad Widget

Collapse

Создание прототипа данных

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • typhsa
    Junior Member
    • Mar 2016
    • 1

    #1

    Создание прототипа данных

    Как на основании ниже описанного создать прототип элементов данных, при котором создавались элементы данных с именем {#TSNAME} и значением {#TSUSED}?
    Детали:

    Настройка пользовательского параметра:
    Code:
    UserParameter=oracle.namets[*],C:\Python27\python.exe c:\systools\tbname2.py
    Скрипт получения данных, избыточный но нужное выцепляет
    Code:
    # -*- coding: utf-8 -*-
    import cx_Oracle
    import string
    first = None
    con = cx_Oracle.connect('<user>/<password>@<host>/<SID>')
    cur = con.cursor()
    cur.execute("""SELECT ts.tablespace_name, size_info.megs_alloc, size_info.megs_used, size_info.max 
    FROM
    (SELECT a.tablespace_name,
    ROUND(a.bytes_alloc / 1024 / 1024) megs_alloc,
    ROUND(NVL(b.bytes_free, 0) / 1024 / 1024) megs_free,
    ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / 1024 / 1024) megs_used,
    ROUND((NVL(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_Free,
    100 - ROUND((NVL(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_used,
    ROUND(maxbytes /1048576) MAX
    FROM
    (SELECT f.tablespace_name,
    SUM(f.bytes) bytes_alloc,
    SUM(DECODE(f.autoextensible, 'YES',f.maxbytes,'NO', f.bytes)) maxbytes
    FROM dba_data_files f
    GROUP BY tablespace_name
    ) a,
    (SELECT f.tablespace_name,
    SUM(f.bytes) bytes_free
    FROM dba_free_space f
    GROUP BY tablespace_name
    ) b
    WHERE a.tablespace_name = b.tablespace_name (+)
    UNION ALL
    SELECT h.tablespace_name,
    ROUND(SUM(h.bytes_free + h.bytes_used) / 1048576) megs_alloc,
    ROUND(SUM((h.bytes_free + h.bytes_used) - NVL(p.bytes_used, 0)) / 1048576) megs_free,
    ROUND(SUM(NVL(p.bytes_used, 0))/ 1048576) megs_used,
    ROUND((SUM((h.bytes_free + h.bytes_used) - NVL(p.bytes_used, 0)) / SUM(h.bytes_used + h.bytes_free)) * 100) Pct_Free,
    100 - ROUND((SUM((h.bytes_free + h.bytes_used) - NVL(p.bytes_used, 0)) / SUM(h.bytes_used + h.bytes_free)) * 100) pct_used,
    ROUND(SUM(f.maxbytes) / 1048576) MAX
    FROM sys.v_$TEMP_SPACE_HEADER h,
    sys.v_$Temp_extent_pool p,
    dba_temp_files f
    WHERE p.file_id(+) = h.file_id
    AND p.tablespace_name(+) = h.tablespace_name
    AND f.file_id = h.file_id
    AND f.tablespace_name = h.tablespace_name
    GROUP BY h.tablespace_name
    ) size_info,
    sys.dba_tablespaces ts
    WHERE ts.tablespace_name = size_info.tablespace_name""")
    print "{\n"
    print "\t\"data\":[\n\n"
    is_first = 1
    for result in cur:
    if is_first == 0:
    print ("\t,")
    is_first = 0
    print ("\n")
    print "\t{\n"
    print ("\t\t\"{#TSNAME}\":\t\"%s\",\t" % (result[0]))
    print ("\t\t\"{#TSUSED}\":\t%d\t" % (result[2]))
    print ("\t}")
    print "\n\t]\n"
    print "}\n"
    
    cur.close()
    con.close()
    Правило обнаружения:
    Имя: oracle.namets
    Тип: Zabbix агент
    Ключ: oracle.namets

    json валиндные, имя получает, размер получает, но использовать это не полуается.
Working...