Exemple #1
0
def show_major_edges(ns):
    conf = open_logdag_config(ns)
    args = arguments.name2args(ns.argname, conf)

    from . import edge_search
    ldag = showdag.LogDAG(args)
    ldag.load()
    g = showdag.apply_filter(ldag, ns.filters, th=ns.threshold)

    if ns.detail:
        context = "detail"
    elif ns.instruction:
        context = "instruction"
    else:
        context = "edge"

    from ..__main__ import _parse_condition
    search_condition = _parse_condition(ns.conditions)

    print(
        edge_search.show_sorted_edges(ldag,
                                      search_condition=search_condition,
                                      feature=ns.feature,
                                      score=ns.score,
                                      reverse=True,
                                      view_context=context,
                                      load_cache=(not ns.nocache),
                                      graph=g))
Exemple #2
0
def search_similar_dag(ns):
    conf = open_logdag_config(ns)
    args = arguments.name2args(ns.argname, conf)

    from . import edge_search
    ldag = showdag.LogDAG(args)
    ldag.load()

    buf = edge_search.search_similar_dag(ldag,
                                         feature=ns.feature,
                                         weight=ns.score_weight,
                                         dag_topn=10,
                                         cause_topn=10)
    print(buf)
Exemple #3
0
def show_match(ns):
    conf = open_logdag_config(ns)
    from . import trouble
    tm = trouble.init_trouble_manager(conf)

    from logdag import showdag
    from . import match_edge
    tr = tm[ns.tid]
    d_args = match_edge.match_edges(conf, tr, rule=ns.rule, cond=ns.cond)
    cnt = sum([len(l_edge) for l_edge in d_args.values()])
    print("{0[date]} ({0[group]}): {1}".format(tr.data, cnt))
    for name, l_edge in d_args.items():
        r = showdag.LogDAG(arguments.name2args(name, conf))
        r.load()
        for edge in l_edge:
            edgestr = r.edge_str(edge, graph=r.graph.to_undirected())
            print(name, edgestr)
Exemple #4
0
def separate_args(conf, tr):
    """Some troubles can appear among multiple days.
    This function separates DAG arguments and corresponding logs.
    """
    from logdag import arguments
    am = arguments.ArgumentManager(conf)
    am.load()
    from amulog import log_db
    ld = log_db.LogData(arguments.open_amulog_config(conf))

    d_args = defaultdict(list)
    for lid in tr.data["message"]:
        lm = ld.get_line(lid)
        for args in am.args_from_time(lm.dt):
            name = arguments.args2name(args)
            d_args[name].append(lm)
    return [(arguments.name2args(name, conf), l_lm)
            for name, l_lm in d_args.items()]
Exemple #5
0
def show_edges_temporal_sort(ns):
    conf = open_logdag_config(ns)
    args = arguments.name2args(ns.argname, conf)

    from . import edge_search
    ldag = showdag.LogDAG(args)
    ldag.load()
    g = showdag.apply_filter(ldag, ns.filters, th=ns.threshold)

    if ns.detail:
        context = "detail"
    elif ns.instruction:
        context = "instruction"
    else:
        context = "edge"

    from logdag import dtutil
    if ns.timestr_end is None:
        dt = dtutil.shortstr2dt(ns.timestr)
        time_condition = {"time": dt}
    else:
        dts = dtutil.shortstr2dt(ns.timestr)
        dte = dtutil.shortstr2dt(ns.timestr_end)
        time_condition = {"time_range": (dts, dte)}

    from ..__main__ import _parse_condition
    search_condition = _parse_condition(ns.conditions)

    print(
        edge_search.edge_temporal_sort(ldag,
                                       time_condition,
                                       search_condition=search_condition,
                                       reverse=ns.reverse,
                                       view_context=context,
                                       load_cache=(not ns.nocache),
                                       graph=g))
Exemple #6
0
 def _dag_from_name(conf, name):
     args = arguments.name2args(name, conf)
     r = showdag.LogDAG(args)
     r.load()
     return r