Skip to content
Merged

Dev #152

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c8d9ce6
refactoring and add adhoc service handle.
Mar 31, 2016
912bcfd
Merge remote-tracking branch 'origin/dev' into dev
Mar 31, 2016
ab0352a
null check
bill23-kim Apr 4, 2016
5881b71
add datasource constants
bill23-kim Apr 5, 2016
ee9f3e9
manage client disconnecting status
bill23-kim Apr 5, 2016
1760ff8
ip addr test mode
gunlee01 Apr 5, 2016
7b2cf81
Add redis plugin
jeonwoosung Apr 7, 2016
305c24f
add/modify tomcat,jboss jmx datasource counter
bill23-kim Apr 7, 2016
01899b2
Merge branch 'dev' of https://github.com/scouter-project/scouter into…
jeonwoosung Apr 7, 2016
966eb45
Merge branch 'dev' of https://github.com/scouter-project/scouter into…
Apr 11, 2016
13cf80c
remove mariadb counter
Apr 11, 2016
afcf3a6
add hourly visitor count
bill23-kim Apr 11, 2016
e3c0378
bug fix
bill23-kim Apr 11, 2016
e621203
refactoring server build script
bill23-kim Apr 11, 2016
19bc6f3
refactoring
gunlee01 Apr 12, 2016
e7c748f
Merge branch 'dev' of github.com:scouter-project/scouter into dev
gunlee01 Apr 12, 2016
267423d
add merged visitor count service handler
bill23-kim Apr 12, 2016
493adda
Merge branch 'dev' of github.com:scouter-project/scouter into dev
gunlee01 Apr 12, 2016
cffe60e
bug fix
bill23-kim Apr 12, 2016
914be8c
null check
gunlee01 Apr 14, 2016
ece01c3
datafile writer null check, close bug fix
gunlee01 Apr 14, 2016
4d35f83
refactoring visitor service
bill23-kim Apr 15, 2016
3e62582
Document Translation to English
Mar 29, 2016
a19036f
Revise of Korean Document
Mar 29, 2016
d2a1190
Merge pull request #151 from MyeongJaeKim/dev
gunlee01 Apr 15, 2016
8587381
Merge pull request #149 from jeonwoosung/dev
gunlee01 Apr 15, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions scouter.agent.host/src/scouter/agent/counter/task/RedisMonitor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package scouter.agent.counter.task;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.HashSet;

import scouter.agent.Configure;
import scouter.agent.counter.CounterBasket;
import scouter.agent.counter.anotation.Counter;
import scouter.lang.TimeTypeEnum;
import scouter.lang.pack.PerfCounterPack;
import scouter.lang.value.DecimalValue;
import scouter.lang.value.FloatValue;

public class RedisMonitor {
private static HashSet<String> floatSet = new HashSet<String>();
private static HashSet<String> decimalSet = new HashSet<String>();
private Socket s;

static {
floatSet.add("used_cpu_sys");
floatSet.add("used_cpu_user");
floatSet.add("used_cpu_sys_children");
floatSet.add("used_cpu_user_children");
floatSet.add("mem_fragmentation_ratio");
decimalSet.add("uptime_in_seconds");
decimalSet.add("uptime_in_days");
decimalSet.add("lru_clock");
decimalSet.add("connected_clients");
decimalSet.add("connected_slaves");
decimalSet.add("client_longest_output_list");
decimalSet.add("client_biggest_input_buf");
decimalSet.add("blocked_clients");
decimalSet.add("used_memory");
decimalSet.add("used_memory_rss");
decimalSet.add("used_memory_peak");
decimalSet.add("loading");
decimalSet.add("aof_enabled");
decimalSet.add("changes_since_last_save");
decimalSet.add("bgsave_in_progress");
decimalSet.add("bgrewriteaof_in_progress");
decimalSet.add("total_connections_received");
decimalSet.add("total_commands_processed");
decimalSet.add("expired_keys");
decimalSet.add("evicted_keys");
decimalSet.add("keyspace_hits");
decimalSet.add("keyspace_misses");
decimalSet.add("pubsub_channels");
decimalSet.add("pubsub_patterns");
decimalSet.add("latest_fork_usec");
decimalSet.add("vm_enabled");
}

@Counter(interval = 10000)
public void process(CounterBasket pw) throws IOException {
Configure conf = Configure.getInstance();

boolean redisEnabled = conf.getBoolean("redis_enabled", false);

if (redisEnabled) {
String serverIp = conf.getValue("redis_server_ip", "127.0.0.1");
int serverPort = conf.getInt("redis_server_port", 6379);

String perfInfo = getRedisPerfInfo(serverIp, serverPort);

String[] lines = perfInfo.split("\n");

PerfCounterPack p = pw.getPack(conf.getObjName(), TimeTypeEnum.REALTIME);

for (String line : lines) {
String key = line.substring(0, line.indexOf(':'));
String value = line.substring(line.indexOf(':') + 1);

if (floatSet.contains(key)) {
p.put(key, new FloatValue(Float.valueOf(value.trim())));
}

if (decimalSet.contains(key)) {
p.put(key, new DecimalValue(Long.valueOf(value.trim())));
}
}
}
}

private String getRedisPerfInfo(String serverIp, int serverPort) throws IOException {
s = new Socket(serverIp, serverPort);
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
os.write("INFO\r\n".getBytes());
os.flush();

byte[] size = new byte[10];

int i = is.read();

int j = 0;

while (i != '\n') {
size[j++] = (byte) i;
i = is.read();
}

int length = Integer.valueOf(new String(size, 1, j - 2));
byte[] b = new byte[length];
is.read(b);

s.close();

return new String(b);
}

}
22 changes: 14 additions & 8 deletions scouter.agent.java/src/scouter/agent/Configure.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,13 @@
public class Configure extends Thread {
public static boolean JDBC_REDEFINED = false;
private static Configure instance = null;
private long last_load_time = -1;
public Properties property = new Properties();
private boolean running = true;
private File propertyFile;
long last_check = 0;

public final static synchronized Configure getInstance() {
public final static synchronized Configure getInstance() {
if (instance == null) {
instance = new Configure();
instance.setDaemon(true);
Expand Down Expand Up @@ -220,6 +225,7 @@ public final static synchronized Configure getInstance() {
//Experimental(ignoreset)
public boolean __experimental = false;
public boolean __control_connection_leak_autoclose_enabled = false;
public boolean __ip_dummy_test = false;

//internal variables
private int objHash;
Expand All @@ -246,11 +252,10 @@ private Configure() {
this.property = p;
reload(false);
}

private Configure(boolean b) {
}
private long last_load_time = -1;
public Properties property = new Properties();
private boolean running = true;

public void run() {
Logger.println("Version " + Version.getAgentFullVersion());
long dateUnit = DateUtil.getDateUnit();
Expand All @@ -265,7 +270,6 @@ public void run() {
ThreadUtil.sleep(3000);
}
}
private File propertyFile;
public File getPropertyFile() {
if (propertyFile != null) {
return propertyFile;
Expand All @@ -274,8 +278,7 @@ public File getPropertyFile() {
propertyFile = new File(s.trim());
return propertyFile;
}
long last_check = 0;


public synchronized boolean reload(boolean force) {
long now = System.currentTimeMillis();
if (force == false && now < last_check + 3000)
Expand Down Expand Up @@ -470,7 +473,10 @@ private void apply() {

//Experimental(ignoreset)
this.__experimental = getBoolean("__experimental", false);
this.__control_connection_leak_autoclose_enabled = getBoolean("_control_connection_leak_autoclose_enabled", false);
this.__control_connection_leak_autoclose_enabled = getBoolean("__control_connection_leak_autoclose_enabled", false);

//For testing
this.__ip_dummy_test = getBoolean("__ip_dummy_test", false);

this.alert_perm_warning_pct = getInt("alert_perm_warning_pct", 90);
this._hook_spring_rest_enabled = getBoolean("_hook_spring_rest_enabled", false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,8 @@ private void getContextList() {
continue;
}
String statistics = mbean.getKeyProperty("statistics");

// JBOSS AS 7
if ("datasources".equals(subsystem) && "pool".equals(statistics)) {
String name = mbean.getKeyProperty("data-source");
if (StringUtil.isNotEmpty(name)) {
Expand All @@ -200,15 +202,14 @@ private void getContextList() {

AgentHeartBeat.addObject(objType, HashUtil.hash(objName), objName);

add(objName, mbean, objType, ValueEnum.DECIMAL, "ActiveCount",
add(objName, mbean, objType, ValueEnum.DECIMAL, "InUseCount",
CounterConstants.DATASOURCE_CONN_ACTIVE);
add(objName, mbean, objType, ValueEnum.DECIMAL, "AvailableCount",
CounterConstants.DATASOURCE_CONN_IDLE);
CounterConstants.DATASOURCE_CONN_MAX);
} catch (Exception e) {
}
}
}
if ("web".equals(subsystem)) {
} else if ("web".equals(subsystem)) {
String connector = mbean.getKeyProperty("connector");
if (connector == null) {
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,8 @@ private void getContextList() {
CounterConstants.DATASOURCE_CONN_ACTIVE);
add(objName, mbean, objType, ValueEnum.DECIMAL, "numIdle",
CounterConstants.DATASOURCE_CONN_IDLE);
add(objName, mbean, objType, ValueEnum.DECIMAL, "maxActive",
CounterConstants.DATASOURCE_CONN_MAX);
} catch (Exception e) {
}
}
Expand Down
32 changes: 14 additions & 18 deletions scouter.agent.java/src/scouter/agent/summary/ServiceSummary.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
*/
package scouter.agent.summary;

import java.util.Enumeration;

import scouter.agent.Configure;
import scouter.agent.netio.data.DataProxy;
import scouter.io.DataInputX;
Expand All @@ -27,15 +25,13 @@
import scouter.lang.step.ApiCallStep;
import scouter.lang.step.SqlStep;
import scouter.lang.value.ListValue;
import scouter.util.BitUtil;
import scouter.util.IPUtil;
import scouter.util.IntIntLinkedMap;
import scouter.util.*;
import scouter.util.IntIntLinkedMap.IntIntLinkedEntry;
import scouter.util.IntKeyLinkedMap;
import scouter.util.IntKeyLinkedMap.IntKeyLinkedEntry;
import scouter.util.LongKeyLinkedMap;
import scouter.util.LongKeyLinkedMap.LongKeyLinkedEntry;

import java.util.Enumeration;

public class ServiceSummary {

private static ServiceSummary instance = null;
Expand Down Expand Up @@ -73,24 +69,24 @@ public void process(XLogPack p) {
}
}

public ErrorData process(Throwable p, int message, int service, long txid, int sql, int api) {
public ErrorData process(Throwable thr, int message, int service, long txid, int sql, int api) {
if (conf.summary_enabled == false)
return null;
String errName = p.getClass().getName();
String errName = thr.getClass().getName();

int errHash = DataProxy.sendError(errName);
ErrorData d = getSummaryError(errorMaster, BitUtil.composite(errHash, service));
d.error = errHash;
d.service = service;
d.message = (message == 0 ? errHash : message);
d.count++;
d.txid = txid;
ErrorData errData = getSummaryError(errorMaster, BitUtil.composite(errHash, service));
errData.error = errHash;
errData.service = service;
errData.message = (message == 0 ? errHash : message);
errData.count++;
errData.txid = txid;

if (sql != 0)
d.sql = sql;
errData.sql = sql;
if (api != 0)
d.apicall = api;
return d;
errData.apicall = api;
return errData;
}

public void process(SqlStep sqlStep) {
Expand Down
4 changes: 2 additions & 2 deletions scouter.agent.java/src/scouter/agent/trace/TraceMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public Stat(TraceContext ctx) {
private static IHttpTrace http = null;
private static Configure conf = Configure.getInstance();
private static Error REJECT = new REQUEST_REJECT("service rejected");
private static Error userTxNotClose = new USERTX_NOT_CLOSE("Missing Commit/Rollback Error");
private static Error userTxNotClose = new USERTX_NOT_CLOSE("UserTransaction missing commit/rollback Error");

public static Object startHttpService(Object req, Object res) {
try {
Expand Down Expand Up @@ -293,7 +293,7 @@ public static void endHttpService(Object stat, Throwable thr) {
ServiceSummary.getInstance().process(thr, pack.error, ctx.serviceHash, ctx.txid, 0, 0);
}
} else if (ctx.userTransaction > 0 && conf.xlog_error_check_user_transaction_enabled) {
pack.error = DataProxy.sendError("Missing Commit/Rollback Error");
pack.error = DataProxy.sendError("UserTransaction missing commit/rollback Error");
ServiceSummary.getInstance().process(userTxNotClose, pack.error, ctx.serviceHash, ctx.txid, 0, 0);
}
if (ctx.group != null) {
Expand Down
Loading