Search in sources :

Example 26 with ResultList

use of com.yahoo.dba.perf.myperf.common.ResultList in project mysql_perf_analyzer by yahoo.

the class SNMPQueryProcessor method queryStorage.

private ResultList queryStorage(SNMPClient client, QueryParameters qps) throws Exception {
    boolean diff = "1".equalsIgnoreCase(qps.getSqlParams().get("p_2"));
    Map<String, List<SNMPTriple>> snmpData = client.getStorageData(null);
    if (snmpData == null)
        return null;
    ColumnDescriptor desc = new ColumnDescriptor();
    desc.addColumn("NAME", false, 0);
    desc.addColumn("OID", false, 1);
    desc.addColumn("VALUE", false, 2);
    ResultList rList = new ResultList();
    rList.setColumnDescriptor(desc);
    for (Map.Entry<String, List<SNMPTriple>> e : snmpData.entrySet()) {
        String net = e.getKey();
        for (SNMPTriple t : e.getValue()) {
            if (diff) {
                try {
                    BigDecimal bd = new BigDecimal(t.value);
                } catch (Exception ex) {
                    continue;
                }
            }
            ResultRow row = new ResultRow();
            row.addColumn(net + "." + t.name);
            row.addColumn(t.oid);
            row.addColumn(t.value);
            row.setColumnDescriptor(desc);
            rList.addRow(row);
        }
    }
    return rList;
}
Also used : ResultRow(com.yahoo.dba.perf.myperf.common.ResultRow) ResultList(com.yahoo.dba.perf.myperf.common.ResultList) ColumnDescriptor(com.yahoo.dba.perf.myperf.common.ColumnDescriptor) SNMPTriple(com.yahoo.dba.perf.myperf.snmp.SNMPClient.SNMPTriple) List(java.util.List) ResultList(com.yahoo.dba.perf.myperf.common.ResultList) Map(java.util.Map) BigDecimal(java.math.BigDecimal) SQLException(java.sql.SQLException)

Example 27 with ResultList

use of com.yahoo.dba.perf.myperf.common.ResultList in project mysql_perf_analyzer by yahoo.

the class InnoController method buildTransactionList.

private static ResultList buildTransactionList(List<Transaction> txs) {
    ResultList rList = new ResultList();
    ColumnDescriptor desc = new ColumnDescriptor();
    int idx = 1;
    desc.addColumn("ID", false, idx++);
    desc.addColumn("STATE", false, idx++);
    desc.addColumn("TIME", false, idx++);
    desc.addColumn("PROCESS", false, idx++);
    desc.addColumn("THREAD", false, idx++);
    desc.addColumn("USER", false, idx++);
    desc.addColumn("HOST", false, idx++);
    desc.addColumn("QUERY_ID", false, idx++);
    //desc.addColumn("ACTION", false, idx++);
    desc.addColumn("SQL_STATE", false, idx++);
    desc.addColumn("SQL", false, idx++);
    desc.addColumn("LOCKS", false, idx++);
    //TODO lock strcuts
    rList.setColumnDescriptor(desc);
    for (Transaction tx : txs) {
        if ("not started".equalsIgnoreCase(tx.state) && (tx.sql == null || tx.sql.isEmpty()))
            //ignore idle one
            continue;
        ResultRow row = new ResultRow();
        rList.addRow(row);
        row.setColumnDescriptor(desc);
        List<String> cols = new ArrayList<String>(16);
        row.setColumns(cols);
        cols.add(tx.id);
        cols.add(tx.state);
        cols.add(tx.txTime);
        cols.add(tx.processNumber);
        cols.add(tx.threadId);
        cols.add(tx.user);
        cols.add(tx.host);
        cols.add(tx.queryId);
        //cols.add(tx.action);
        cols.add(tx.cmd);
        cols.add(tx.sql);
        if (tx.action != null && !tx.action.isEmpty() && tx.comments != null)
            cols.add(tx.action + "\n" + tx.comments);
        else if (tx.action != null && !tx.action.isEmpty() && tx.comments == null)
            cols.add(tx.action);
        else
            cols.add(tx.comments);
    }
    return rList;
}
Also used : ResultRow(com.yahoo.dba.perf.myperf.common.ResultRow) ResultList(com.yahoo.dba.perf.myperf.common.ResultList) ColumnDescriptor(com.yahoo.dba.perf.myperf.common.ColumnDescriptor) ArrayList(java.util.ArrayList)

Example 28 with ResultList

use of com.yahoo.dba.perf.myperf.common.ResultList in project mysql_perf_analyzer by yahoo.

the class InnoController method handleRequestImpl.

@Override
protected ModelAndView handleRequestImpl(HttpServletRequest req, HttpServletResponse resp) throws Exception {
    int status = Constants.STATUS_OK;
    String message = "OK";
    String group = req.getParameter("group");
    String host = req.getParameter("host");
    QueryParameters qps = new QueryParameters();
    qps.setGroup(group);
    qps.setHost(host);
    qps.setSql("mysql_innodb_engine_status");
    ResultList rList = null;
    LinkedHashMap<String, ResultList> listMap = new LinkedHashMap<String, ResultList>();
    DBInstanceInfo dbinfo = null;
    DBConnectionWrapper connWrapper = null;
    try {
        dbinfo = this.frameworkContext.getDbInfoManager().findDB(group, host).copy();
        connWrapper = WebAppUtil.getDBConnection(req, this.frameworkContext, dbinfo);
        if (connWrapper == null) {
            status = Constants.STATUS_BAD;
            message = "failed to connect to target db (" + dbinfo + ")";
        } else {
            rList = this.frameworkContext.getQueryEngine().executeQueryGeneric(qps, connWrapper, qps.getMaxRows());
            logger.info("Done query " + qps.getSql() + " with " + (rList != null ? rList.getRows().size() : 0) + " records.");
            if (rList != null && rList.getRows().size() > 0) {
                logger.info(rList.getRows().get(0).getColumns().get(rList.getRows().get(0).getColumns().size() - 1));
                listMap = parse(rList.getRows().get(0).getColumns().get(rList.getRows().get(0).getColumns().size() - 1));
            }
            WebAppUtil.closeDBConnection(req, connWrapper, false, this.getFrameworkContext().getMyperfConfig().isReuseMonUserConnction());
        }
    } catch (Throwable th) {
        logger.log(Level.SEVERE, "Exception", th);
        if (th instanceof SQLException) {
            SQLException sqlEx = SQLException.class.cast(th);
            String msg = th.getMessage();
            logger.info(sqlEx.getSQLState() + ", " + sqlEx.getErrorCode() + ", " + msg);
            //check if the connection is still good
            if (!DBUtils.checkConnection(connWrapper.getConnection())) {
                WebAppUtil.closeDBConnection(req, connWrapper, true, false);
            } else
                WebAppUtil.closeDBConnection(req, connWrapper, true, false);
        } else {
            if (connWrapper != null)
                WebAppUtil.closeDBConnection(req, connWrapper, false, this.getFrameworkContext().getMyperfConfig().isReuseMonUserConnction());
        }
        status = Constants.STATUS_BAD;
        message = "Exception: " + th.getMessage();
    } finally {
    }
    ModelAndView mv = new ModelAndView(this.jsonView);
    if (req.getParameter("callback") != null && req.getParameter("callback").trim().length() > 0)
        //YUI datasource binding
        mv.addObject("callback", req.getParameter("callback"));
    mv = new ModelAndView(this.jsonView);
    mv.addObject("json_result", ResultListUtil.toMultiListJSONStringUpper(listMap, qps, status, message));
    return mv;
}
Also used : ResultList(com.yahoo.dba.perf.myperf.common.ResultList) SQLException(java.sql.SQLException) ModelAndView(org.springframework.web.servlet.ModelAndView) QueryParameters(com.yahoo.dba.perf.myperf.common.QueryParameters) DBConnectionWrapper(com.yahoo.dba.perf.myperf.db.DBConnectionWrapper) DBInstanceInfo(com.yahoo.dba.perf.myperf.common.DBInstanceInfo) LinkedHashMap(java.util.LinkedHashMap)

Example 29 with ResultList

use of com.yahoo.dba.perf.myperf.common.ResultList in project mysql_perf_analyzer by yahoo.

the class TableMetaProcessor method queryMultiple.

@Override
public void queryMultiple(MyPerfContext context, DBInstanceInfo dbinfo, String appUser, DBConnectionWrapper connWrapper, QueryParameters qps, Map<String, ResultList> rListMap) throws java.sql.SQLException {
    for (int i = 0; i < TBL_QUERIES.length; i++) {
        QueryParameters qps2 = new QueryParameters();
        qps2.setSql(TBL_QUERIES[i]);
        qps2.getSqlParams().put("p_1", qps.getSqlParams().get("p_1"));
        qps2.getSqlParams().put("p_2", qps.getSqlParams().get("p_2"));
        ResultList rList = null;
        try {
            rList = context.getQueryEngine().executeQueryGeneric(qps2, connWrapper, qps.getMaxRows());
        } catch (Throwable th) {
            logger.log(Level.WARNING, "Error when retrieve meta data", th);
            if (th instanceof SQLException) {
                //check if the connection is still good
                if (!DBUtils.checkConnection(connWrapper.getConnection())) {
                    throw SQLException.class.cast(th);
                }
            }
            Sql sql = context.getSqlManager().getSql(qps2.getSql());
            if (sql != null && sql.isErrorInline()) {
                rList = new ResultList();
                ColumnDescriptor desc = new ColumnDescriptor();
                desc.addColumn("Status", false, 0);
                desc.addColumn("Message", false, 1);
                rList.setColumnDescriptor(desc);
                ResultRow row = new ResultRow();
                row.setColumnDescriptor(desc);
                row.addColumn("Error");
                row.addColumn(th.getMessage());
                rList.addRow(row);
            }
        }
        rListMap.put(TBL_QUERIES[i], rList);
    }
}
Also used : ResultRow(com.yahoo.dba.perf.myperf.common.ResultRow) ResultList(com.yahoo.dba.perf.myperf.common.ResultList) SQLException(java.sql.SQLException) ColumnDescriptor(com.yahoo.dba.perf.myperf.common.ColumnDescriptor) QueryParameters(com.yahoo.dba.perf.myperf.common.QueryParameters) Sql(com.yahoo.dba.perf.myperf.common.Sql)

Example 30 with ResultList

use of com.yahoo.dba.perf.myperf.common.ResultList in project mysql_perf_analyzer by yahoo.

the class MetricsDbBase method retrieveAlerts.

/**
	   * 
	   * @param startTs
	   * @param endTs
	   * @param dbs a map for look up db info by dbis
	   * @param filteredDbs actual dbs to retrieve alerts
	   * @return
	   */
public ResultList retrieveAlerts(String startTs, String endTs, Map<Integer, DBInstanceInfo> dbs, List<Integer> filteredDbs) {
    ResultList rList = null;
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    rList = new ResultList();
    ColumnDescriptor desc = new ColumnDescriptor();
    desc.addColumn("DBGROUP", false, 1);
    desc.addColumn("HOST", false, 2);
    desc.addColumn("TS", false, 3);
    desc.addColumn("END_TS", false, 4);
    desc.addColumn("ALERT_TYPE", false, 5);
    desc.addColumn("ALERT_REASON", false, 6);
    desc.addColumn("BY CPU", true, 7);
    desc.addColumn("BY IO", true, 8);
    desc.addColumn("BY THREAD", true, 9);
    desc.addColumn("BY LOADAVG", true, 10);
    desc.addColumn("BY REPL LAG", true, 11);
    desc.addColumn("BY SLOW QUERY", true, 12);
    desc.addColumn("BY REPL DOWN", true, 13);
    desc.addColumn("BY CONN FAILURE", true, 14);
    desc.addColumn("BY DEADLOCKS", true, 15);
    rList.setColumnDescriptor(desc);
    StringBuilder sb = new StringBuilder();
    sb.append("select * from ALERT where ts between ").append(startTs).append(" and ").append(endTs);
    if (filteredDbs != null && filteredDbs.size() >= 1) {
        sb.append(" and dbid in (");
        boolean isFirst = true;
        for (Integer id : filteredDbs) {
            if (!isFirst)
                sb.append(",");
            sb.append(id);
            isFirst = false;
        }
        sb.append(")");
    }
    sb.append(" order by ts desc");
    String sql = sb.toString();
    logger.log(Level.INFO, "Retrieve alerts: " + sql);
    Map<Integer, AlertSummary> sumMap = null;
    try {
        conn = createConnection(true);
        sumMap = this.retrieve7DaysAlertsSummary(conn, filteredDbs);
        stmt = conn.createStatement();
        rs = stmt.executeQuery(sql);
        //DBID, TS, END_TS, ALERT_TYPE, ALERT_REASON
        while (rs != null && rs.next()) {
            int dbid = rs.getInt("DBID");
            if (!dbs.containsKey(dbid))
                //no db records, ignore
                continue;
            DBInstanceInfo dbinfo = dbs.get(dbid);
            ResultRow row = new ResultRow();
            row.setColumnDescriptor(desc);
            row.addColumn(dbinfo.getDbGroupName());
            row.addColumn(dbinfo.getHostName());
            row.addColumn(formatDatetime(rs.getString("TS")));
            row.addColumn(formatDatetime(rs.getString("END_TS")));
            row.addColumn(rs.getString("ALERT_TYPE"));
            row.addColumn(rs.getString("ALERT_REASON"));
            //don't expect missing
            AlertSummary sum = sumMap.get(dbid);
            row.addColumn(sum != null ? String.valueOf(sum.cpuAlerts) : "0");
            row.addColumn(sum != null ? String.valueOf(sum.ioAlerts) : "0");
            row.addColumn(sum != null ? String.valueOf(sum.threadAlerts) : "0");
            row.addColumn(sum != null ? String.valueOf(sum.LoadAvgAlerts) : "0");
            row.addColumn(sum != null ? String.valueOf(sum.replAlerts) : "0");
            row.addColumn(sum != null ? String.valueOf(sum.slowAlerts) : "0");
            row.addColumn(sum != null ? String.valueOf(sum.replDown) : "0");
            row.addColumn(sum != null ? String.valueOf(sum.connectFailuerAlerts) : "0");
            row.addColumn(sum != null ? String.valueOf(sum.deadlocks) : "0");
            rList.addRow(row);
        }
    } catch (Exception ex) {
        logger.log(Level.SEVERE, "Failed to retrieve alerts " + sql, ex);
    } finally {
        DBUtils.close(rs);
        DBUtils.close(stmt);
        DBUtils.close(conn);
    }
    return rList;
}
Also used : ResultRow(com.yahoo.dba.perf.myperf.common.ResultRow) ResultList(com.yahoo.dba.perf.myperf.common.ResultList) PreparedStatement(java.sql.PreparedStatement) Statement(java.sql.Statement) ColumnDescriptor(com.yahoo.dba.perf.myperf.common.ColumnDescriptor) Connection(java.sql.Connection) SQLException(java.sql.SQLException) ResultSet(java.sql.ResultSet) DBInstanceInfo(com.yahoo.dba.perf.myperf.common.DBInstanceInfo)

Aggregations

ResultList (com.yahoo.dba.perf.myperf.common.ResultList)31 ResultRow (com.yahoo.dba.perf.myperf.common.ResultRow)22 ColumnDescriptor (com.yahoo.dba.perf.myperf.common.ColumnDescriptor)21 SQLException (java.sql.SQLException)17 ArrayList (java.util.ArrayList)10 Map (java.util.Map)9 ResultSet (java.sql.ResultSet)8 SNMPTriple (com.yahoo.dba.perf.myperf.snmp.SNMPClient.SNMPTriple)7 Connection (java.sql.Connection)7 ModelAndView (org.springframework.web.servlet.ModelAndView)7 DBInstanceInfo (com.yahoo.dba.perf.myperf.common.DBInstanceInfo)6 QueryParameters (com.yahoo.dba.perf.myperf.common.QueryParameters)6 PreparedStatement (java.sql.PreparedStatement)6 BigDecimal (java.math.BigDecimal)5 List (java.util.List)5 HashMap (java.util.HashMap)4 Statement (java.sql.Statement)3 HashSet (java.util.HashSet)3 LinkedHashMap (java.util.LinkedHashMap)3 ColumnInfo (com.yahoo.dba.perf.myperf.common.ColumnInfo)2