Skip to content
Merged

Dev #56

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
4843c22
add group
sjokim Nov 10, 2015
47ab49c
add group
sjokim Nov 10, 2015
8b64872
Text Perm Db's data structures are modified
sjokim Nov 10, 2015
55c70cc
actual memory used
bill23-kim Nov 11, 2015
db33eb7
bug fix
bill23-kim Nov 11, 2015
198d97e
실행스크립트가 프로그램이 설치된 절대경로를 기반으로 동작하도록 개선; 디렉터리명에 공백이 포함되어도 오류가 나지 않도록 개선
kukgini Nov 11, 2015
d7921d0
실행스크립트가 프로그램이 설치된 절대경로를 기반으로 동작하도록 개선; 디렉터리명에 공백이 포함되어도 오류가 나지 않도록 개선
kukgini Nov 11, 2015
1f6046b
실행스크립트가 프로그램이 설치된 절대경로를 기반으로 동작하도록 개선; 디렉터리명에 공백이 포함되어도 오류가 나지 않도록 개선
kukgini Nov 11, 2015
d8aaba8
add a jdbc plugin to get the url of jdbc-connection
sjokim Nov 11, 2015
c544218
refactoring
sjokim Nov 11, 2015
477107d
Merge pull request #52 from kukgini/master
gunlee01 Nov 11, 2015
08dab7b
remove dependency eclipse
bill23-kim Nov 12, 2015
fcd14c9
change host memory to actual memory
bill23-kim Nov 12, 2015
11c201c
bug fix on the plugin-module
sjokim Nov 12, 2015
8bd23bc
refactoring
sjokim Nov 12, 2015
13b73ed
XLogProfileView 에 있는 링크를 클릭하여 새로운 View 로 이동후 다시 XLogProfileView 로 돌아오…
Nov 12, 2015
c64914f
httpcall plugin
sjokim Nov 12, 2015
3617c8c
upgrade tycho from 0.22 to 0.24
Nov 12, 2015
4450e7b
refactoring plugin
sjokim Nov 12, 2015
189f685
refactoring plugin
sjokim Nov 12, 2015
dbab6e5
refactoring plugin
sjokim Nov 12, 2015
00ff50a
bugfix
sjokim Nov 12, 2015
a72f469
bug fix
bill23-kim Nov 13, 2015
aa14cb8
Merge pull request #54 from kukgini/master
bill23-kim Nov 13, 2015
17b2a7c
minor version up
bill23-kim Nov 13, 2015
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
10 changes: 4 additions & 6 deletions scouter.agent.host/src/scouter/agent/Configure.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import scouter.Version;
import scouter.agent.netio.data.DataProxy;
Expand All @@ -39,7 +38,6 @@
import scouter.util.DateUtil;
import scouter.util.FileUtil;
import scouter.util.HashUtil;
import scouter.util.IntSet;
import scouter.util.StringEnumer;
import scouter.util.StringKeyLinkedMap;
import scouter.util.StringSet;
Expand Down Expand Up @@ -107,9 +105,9 @@ public final static synchronized Configure getInstance() {
public int cpu_fatal_history = 3;

public boolean mem_alert_enabled = true;
public long mem_alert_interval;
public int mem_warning_pct;
public int mem_fatal_pct;
public long mem_alert_interval = 30000;
public int mem_warning_pct = 80;
public int mem_fatal_pct = 90;

private Configure() {
Properties p = new Properties();
Expand Down Expand Up @@ -229,7 +227,7 @@ private void apply() {

this.mem_alert_enabled = getBoolean("mem_alert_enabled", true);
this.mem_alert_interval = getLong("mem_alert_interval", 30000);
this.mem_warning_pct = getInt("mem_warning_pct", 70);
this.mem_warning_pct = getInt("mem_warning_pct", 80);
this.mem_fatal_pct = getInt("mem_fatal_pct", 90);


Expand Down
16 changes: 7 additions & 9 deletions scouter.agent.host/src/scouter/agent/counter/task/HostPerf.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@
import scouter.lang.value.FloatValue;
import scouter.util.FormatUtil;
import scouter.util.LongEnumer;
import scouter.util.LongIntMap;
import scouter.util.LongKeyLinkedMap;
import scouter.util.StringUtil;

public class HostPerf {
static int SLEEP_TIME = 2000;
Expand Down Expand Up @@ -54,15 +52,16 @@ void domain(CounterBasket pw) throws SigarException {
alertMem(m);

long tmem = m.getTotal();
long fmem = m.getFree();
long umem = m.getUsed();
float memrate = umem * 100.0f / tmem;
long fmem = m.getActualFree();
long umem = m.getActualUsed();
float memrate = (float) m.getUsedPercent();

Swap sw = sigar.getSwap();
long pagein = sw.getPageIn();
long pageout = sw.getPageOut();
long tswap = sw.getTotal();
long uswap = sw.getUsed();
float swaprate = uswap * 100.0f / tswap;

PerfCounterPack p = pw.getPack(conf.objName, TimeTypeEnum.REALTIME);
p.put(CounterConstants.HOST_CPU, new FloatValue(cpu));
Expand All @@ -72,6 +71,7 @@ void domain(CounterBasket pw) throws SigarException {
p.put(CounterConstants.HOST_MEM_AVALIABLE, new DecimalValue(fmem / 1024 / 1024));
p.put(CounterConstants.HOST_SWAP_PAGE_IN, new DecimalValue(pagein));
p.put(CounterConstants.HOST_SWAP_PAGE_OUT, new DecimalValue(pageout));
p.put(CounterConstants.HOST_SWAP, new FloatValue(swaprate));
p.put(CounterConstants.HOST_SWAP_TOTAL, new DecimalValue(tswap / 1024 / 1024));
p.put(CounterConstants.HOST_SWAP_USED, new DecimalValue(uswap / 1024 / 1024));

Expand Down Expand Up @@ -109,10 +109,8 @@ private void alertMem(Mem m) {
if(conf.mem_alert_enabled==false)
return;

long tmem = m.getTotal();
long fmem = m.getFree();
long umem = m.getUsed();
float memrate = umem * 100.0f / tmem;
long fmem = m.getActualFree();
float memrate = (float) m.getUsedPercent();

long now = System.currentTimeMillis();

Expand Down
4 changes: 2 additions & 2 deletions scouter.agent.java/src/scouter/agent/AgentBoot.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

import scouter.agent.counter.CounterExecutingManager;
import scouter.agent.netio.request.ReqestHandlingProxy;
import scouter.agent.plugin.PlugInLoader;
import scouter.agent.plugin.PluginLoader;
import scouter.util.Hexa32;
import scouter.util.KeyGen;
import scouter.util.SysJMX;
Expand All @@ -42,7 +42,7 @@ public synchronized static void boot() {
long seed =System.currentTimeMillis() ^ (((long)SysJMX.getProcessPID())<<32);
KeyGen.setSeed(seed);
Logger.println("A100", "agent boot seed="+Hexa32.toString32(seed));
PlugInLoader.getInstance();
PluginLoader.getInstance();
}
public static void main(String[] args) {
boot();
Expand Down
1 change: 1 addition & 0 deletions scouter.agent.java/src/scouter/agent/Configure.java
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ public final static synchronized Configure getInstance() {

public int alert_message_length = 3000;
public long alert_send_interval = 3000;

public int jdbc_fetch_max = 10000;
public int sql_time_max = 30000;

Expand Down
32 changes: 20 additions & 12 deletions scouter.agent.java/src/scouter/agent/asm/CapArgsASM.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ public CapArgsCV(ClassVisitor cv, MethodSet mset, String className) {
}

@Override
public MethodVisitor visitMethod(int access, String methodName, String desc, String signature, String[] exceptions) {
public MethodVisitor visitMethod(int access, String methodName, String desc, String signature,
String[] exceptions) {
MethodVisitor mv = super.visitMethod(access, methodName, desc, signature, exceptions);
if (mv == null || mset.isA(methodName, desc) == false) {
return mv;
Expand All @@ -85,7 +86,7 @@ public MethodVisitor visitMethod(int access, String methodName, String desc, Str
class CapArgsMV extends LocalVariablesSorter implements Opcodes {
private static final String CLASS = TraceMain.class.getName().replace('.', '/');
private static final String METHOD = "capArgs";
private static final String SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V";
private static final String SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)V";

private Type[] paramTypes;
private boolean isStatic;
Expand Down Expand Up @@ -114,7 +115,6 @@ public void visitCode() {
mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object");
mv.visitVarInsn(Opcodes.ASTORE, arrVarIdx);


for (int i = 0; i < paramTypes.length; i++) {
Type type = paramTypes[i];
mv.visitVarInsn(Opcodes.ALOAD, arrVarIdx);
Expand All @@ -123,35 +123,38 @@ public void visitCode() {
switch (type.getSort()) {
case Type.BOOLEAN:
mv.visitVarInsn(Opcodes.ILOAD, sidx);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;",false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;",
false);
break;
case Type.BYTE:
mv.visitVarInsn(Opcodes.ILOAD, sidx);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;",false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;", false);
break;
case Type.CHAR:
mv.visitVarInsn(Opcodes.ILOAD, sidx);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;",false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;",
false);
break;
case Type.SHORT:
mv.visitVarInsn(Opcodes.ILOAD, sidx);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;",false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;", false);
break;
case Type.INT:
mv.visitVarInsn(Opcodes.ILOAD, sidx);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;",false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;",
false);
break;
case Type.LONG:
mv.visitVarInsn(Opcodes.LLOAD, sidx);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;",false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;", false);
break;
case Type.FLOAT:
mv.visitVarInsn(Opcodes.FLOAD, sidx);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;",false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;", false);
break;
case Type.DOUBLE:
mv.visitVarInsn(Opcodes.DLOAD, sidx);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;",false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;", false);
break;
default:
mv.visitVarInsn(Opcodes.ALOAD, sidx);
Expand All @@ -162,9 +165,14 @@ public void visitCode() {
AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);
if (isStatic) {
AsmUtil.PUSHNULL(mv);
} else {
mv.visitVarInsn(Opcodes.ALOAD, 0);
}
mv.visitVarInsn(Opcodes.ALOAD, arrVarIdx);

mv.visitMethodInsn(Opcodes.INVOKESTATIC, CLASS, METHOD, SIGNATURE,false);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, CLASS, METHOD, SIGNATURE, false);
mv.visitCode();
}
}
68 changes: 26 additions & 42 deletions scouter.agent.java/src/scouter/agent/asm/CapReturnASM.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,30 +79,32 @@ public MethodVisitor visitMethod(int access, String name, String desc, String si
return mv;
}

return new CapReturnMV(access, desc, mv, className, name, desc);
return new CapReturnMV(access, desc, mv, className, name, desc,(access & ACC_STATIC) != 0);
}
}

// ///////////////////////////////////////////////////////////////////////////
class CapReturnMV extends LocalVariablesSorter implements Opcodes {
private static final String CLASS = TraceMain.class.getName().replace('.', '/');
private static final String METHOD = "capReturn";
private static final String SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V";
private static final String SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V";

private Type returnType;
private String className;
private String methodName;
private String methodDesc;
private boolean isStatic;

public CapReturnMV(int access, String desc, MethodVisitor mv,
String classname,
String methodname,
String methoddesc) {
String methoddesc, boolean isStatic) {
super(ASM4, access, desc, mv);
this.returnType = Type.getReturnType(desc);
this.className = classname;
this.methodName = methodname;
this.methodDesc = methoddesc;
this.isStatic = isStatic;

}

Expand All @@ -118,9 +120,7 @@ private void capReturn() {
Type tp = returnType;

if (tp == null || tp.equals(Type.VOID_TYPE)) {
AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);
pushCommon();
mv.visitInsn(ACONST_NULL);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, CLASS, METHOD, SIGNATURE,false);
return;
Expand All @@ -131,76 +131,55 @@ private void capReturn() {
mv.visitVarInsn(Opcodes.ISTORE, i);
mv.visitVarInsn(Opcodes.ILOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.ILOAD, i);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;",false);
break;
case Type.BYTE:
mv.visitVarInsn(Opcodes.ISTORE, i);
mv.visitVarInsn(Opcodes.ILOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.ILOAD, i);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;",false);
break;
case Type.CHAR:
mv.visitVarInsn(Opcodes.ISTORE, i);
mv.visitVarInsn(Opcodes.ILOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.ILOAD, i);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;",false);
break;
case Type.SHORT:
mv.visitVarInsn(Opcodes.ISTORE, i);
mv.visitVarInsn(Opcodes.ILOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.ILOAD, i);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;",false);
break;
case Type.INT:
mv.visitVarInsn(Opcodes.ISTORE, i);
mv.visitVarInsn(Opcodes.ILOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.ILOAD, i);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;",false);
break;
case Type.LONG:
mv.visitVarInsn(Opcodes.LSTORE, i);
mv.visitVarInsn(Opcodes.LLOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.LLOAD, i);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;",false);
break;
case Type.FLOAT:
mv.visitVarInsn(Opcodes.FSTORE, i);
mv.visitVarInsn(Opcodes.FLOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.FLOAD, i);

mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;",false);
Expand All @@ -209,24 +188,29 @@ private void capReturn() {
mv.visitVarInsn(Opcodes.DSTORE, i);
mv.visitVarInsn(Opcodes.DLOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.DLOAD, i);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;",false);
break;
default:
mv.visitVarInsn(Opcodes.ASTORE, i);
mv.visitVarInsn(Opcodes.ALOAD, i);

AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);

pushCommon();
mv.visitVarInsn(Opcodes.ALOAD, i);
}

mv.visitMethodInsn(Opcodes.INVOKESTATIC, CLASS, METHOD, SIGNATURE,false);
}

private void pushCommon() {
AsmUtil.PUSH(mv, className);
AsmUtil.PUSH(mv, methodName);
AsmUtil.PUSH(mv, methodDesc);
if (isStatic) {
AsmUtil.PUSHNULL(mv);
} else {
mv.visitVarInsn(Opcodes.ALOAD, 0);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public void process(CounterBasket pw) {
} catch (Exception e) {
errors.add(ctx.attrName);
collectCnt = 0;
e.printStackTrace();
Logger.println("COUNTER", e);
}
}
}
Expand Down Expand Up @@ -287,7 +287,8 @@ class CtxObj {
public String attrName;
public String counter;

public CtxObj(String objName, ObjectName mbean, String objType, byte valueType, String attrName, String counter) {
public CtxObj(String objName, ObjectName mbean, String objType, byte valueType, String attrName,
String counter) {

this.objName = objName;
this.mbean = mbean;
Expand Down
Loading