Search in sources :

Example 21 with ColumnDescriptor

use of com.yahoo.dba.perf.myperf.common.ColumnDescriptor 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

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