Skip to content

Commit c06fe43

Browse files
committed
Merge pull request #56 from scouter-project/dev
Dev
2 parents aa18d63 + 17b2a7c commit c06fe43

File tree

70 files changed

+2001
-1082
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+2001
-1082
lines changed

scouter.agent.host/src/scouter/agent/Configure.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import java.util.HashSet;
2727
import java.util.Map;
2828
import java.util.Properties;
29-
import java.util.Set;
3029

3130
import scouter.Version;
3231
import scouter.agent.netio.data.DataProxy;
@@ -39,7 +38,6 @@
3938
import scouter.util.DateUtil;
4039
import scouter.util.FileUtil;
4140
import scouter.util.HashUtil;
42-
import scouter.util.IntSet;
4341
import scouter.util.StringEnumer;
4442
import scouter.util.StringKeyLinkedMap;
4543
import scouter.util.StringSet;
@@ -107,9 +105,9 @@ public final static synchronized Configure getInstance() {
107105
public int cpu_fatal_history = 3;
108106

109107
public boolean mem_alert_enabled = true;
110-
public long mem_alert_interval;
111-
public int mem_warning_pct;
112-
public int mem_fatal_pct;
108+
public long mem_alert_interval = 30000;
109+
public int mem_warning_pct = 80;
110+
public int mem_fatal_pct = 90;
113111

114112
private Configure() {
115113
Properties p = new Properties();
@@ -229,7 +227,7 @@ private void apply() {
229227

230228
this.mem_alert_enabled = getBoolean("mem_alert_enabled", true);
231229
this.mem_alert_interval = getLong("mem_alert_interval", 30000);
232-
this.mem_warning_pct = getInt("mem_warning_pct", 70);
230+
this.mem_warning_pct = getInt("mem_warning_pct", 80);
233231
this.mem_fatal_pct = getInt("mem_fatal_pct", 90);
234232

235233

scouter.agent.host/src/scouter/agent/counter/task/HostPerf.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@
2424
import scouter.lang.value.FloatValue;
2525
import scouter.util.FormatUtil;
2626
import scouter.util.LongEnumer;
27-
import scouter.util.LongIntMap;
2827
import scouter.util.LongKeyLinkedMap;
29-
import scouter.util.StringUtil;
3028

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

5654
long tmem = m.getTotal();
57-
long fmem = m.getFree();
58-
long umem = m.getUsed();
59-
float memrate = umem * 100.0f / tmem;
55+
long fmem = m.getActualFree();
56+
long umem = m.getActualUsed();
57+
float memrate = (float) m.getUsedPercent();
6058

6159
Swap sw = sigar.getSwap();
6260
long pagein = sw.getPageIn();
6361
long pageout = sw.getPageOut();
6462
long tswap = sw.getTotal();
6563
long uswap = sw.getUsed();
64+
float swaprate = uswap * 100.0f / tswap;
6665

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

@@ -109,10 +109,8 @@ private void alertMem(Mem m) {
109109
if(conf.mem_alert_enabled==false)
110110
return;
111111

112-
long tmem = m.getTotal();
113-
long fmem = m.getFree();
114-
long umem = m.getUsed();
115-
float memrate = umem * 100.0f / tmem;
112+
long fmem = m.getActualFree();
113+
float memrate = (float) m.getUsedPercent();
116114

117115
long now = System.currentTimeMillis();
118116

scouter.agent.java/src/scouter/agent/AgentBoot.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import scouter.agent.counter.CounterExecutingManager;
1919
import scouter.agent.netio.request.ReqestHandlingProxy;
20-
import scouter.agent.plugin.PlugInLoader;
20+
import scouter.agent.plugin.PluginLoader;
2121
import scouter.util.Hexa32;
2222
import scouter.util.KeyGen;
2323
import scouter.util.SysJMX;
@@ -42,7 +42,7 @@ public synchronized static void boot() {
4242
long seed =System.currentTimeMillis() ^ (((long)SysJMX.getProcessPID())<<32);
4343
KeyGen.setSeed(seed);
4444
Logger.println("A100", "agent boot seed="+Hexa32.toString32(seed));
45-
PlugInLoader.getInstance();
45+
PluginLoader.getInstance();
4646
}
4747
public static void main(String[] args) {
4848
boot();

scouter.agent.java/src/scouter/agent/Configure.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ public final static synchronized Configure getInstance() {
134134

135135
public int alert_message_length = 3000;
136136
public long alert_send_interval = 3000;
137+
137138
public int jdbc_fetch_max = 10000;
138139
public int sql_time_max = 30000;
139140

scouter.agent.java/src/scouter/agent/asm/CapArgsASM.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ public CapArgsCV(ClassVisitor cv, MethodSet mset, String className) {
6868
}
6969

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

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

117-
118118
for (int i = 0; i < paramTypes.length; i++) {
119119
Type type = paramTypes[i];
120120
mv.visitVarInsn(Opcodes.ALOAD, arrVarIdx);
@@ -123,35 +123,38 @@ public void visitCode() {
123123
switch (type.getSort()) {
124124
case Type.BOOLEAN:
125125
mv.visitVarInsn(Opcodes.ILOAD, sidx);
126-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;",false);
126+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;",
127+
false);
127128
break;
128129
case Type.BYTE:
129130
mv.visitVarInsn(Opcodes.ILOAD, sidx);
130-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;",false);
131+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;", false);
131132
break;
132133
case Type.CHAR:
133134
mv.visitVarInsn(Opcodes.ILOAD, sidx);
134-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;",false);
135+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;",
136+
false);
135137
break;
136138
case Type.SHORT:
137139
mv.visitVarInsn(Opcodes.ILOAD, sidx);
138-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;",false);
140+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;", false);
139141
break;
140142
case Type.INT:
141143
mv.visitVarInsn(Opcodes.ILOAD, sidx);
142-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;",false);
144+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;",
145+
false);
143146
break;
144147
case Type.LONG:
145148
mv.visitVarInsn(Opcodes.LLOAD, sidx);
146-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;",false);
149+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;", false);
147150
break;
148151
case Type.FLOAT:
149152
mv.visitVarInsn(Opcodes.FLOAD, sidx);
150-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;",false);
153+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;", false);
151154
break;
152155
case Type.DOUBLE:
153156
mv.visitVarInsn(Opcodes.DLOAD, sidx);
154-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;",false);
157+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;", false);
155158
break;
156159
default:
157160
mv.visitVarInsn(Opcodes.ALOAD, sidx);
@@ -162,9 +165,14 @@ public void visitCode() {
162165
AsmUtil.PUSH(mv, className);
163166
AsmUtil.PUSH(mv, methodName);
164167
AsmUtil.PUSH(mv, methodDesc);
168+
if (isStatic) {
169+
AsmUtil.PUSHNULL(mv);
170+
} else {
171+
mv.visitVarInsn(Opcodes.ALOAD, 0);
172+
}
165173
mv.visitVarInsn(Opcodes.ALOAD, arrVarIdx);
166174

167-
mv.visitMethodInsn(Opcodes.INVOKESTATIC, CLASS, METHOD, SIGNATURE,false);
175+
mv.visitMethodInsn(Opcodes.INVOKESTATIC, CLASS, METHOD, SIGNATURE, false);
168176
mv.visitCode();
169177
}
170178
}

scouter.agent.java/src/scouter/agent/asm/CapReturnASM.java

Lines changed: 26 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -79,30 +79,32 @@ public MethodVisitor visitMethod(int access, String name, String desc, String si
7979
return mv;
8080
}
8181

82-
return new CapReturnMV(access, desc, mv, className, name, desc);
82+
return new CapReturnMV(access, desc, mv, className, name, desc,(access & ACC_STATIC) != 0);
8383
}
8484
}
8585

8686
// ///////////////////////////////////////////////////////////////////////////
8787
class CapReturnMV extends LocalVariablesSorter implements Opcodes {
8888
private static final String CLASS = TraceMain.class.getName().replace('.', '/');
8989
private static final String METHOD = "capReturn";
90-
private static final String SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V";
90+
private static final String SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V";
9191

9292
private Type returnType;
9393
private String className;
9494
private String methodName;
9595
private String methodDesc;
96+
private boolean isStatic;
9697

9798
public CapReturnMV(int access, String desc, MethodVisitor mv,
9899
String classname,
99100
String methodname,
100-
String methoddesc) {
101+
String methoddesc, boolean isStatic) {
101102
super(ASM4, access, desc, mv);
102103
this.returnType = Type.getReturnType(desc);
103104
this.className = classname;
104105
this.methodName = methodname;
105106
this.methodDesc = methoddesc;
107+
this.isStatic = isStatic;
106108

107109
}
108110

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

120122
if (tp == null || tp.equals(Type.VOID_TYPE)) {
121-
AsmUtil.PUSH(mv, className);
122-
AsmUtil.PUSH(mv, methodName);
123-
AsmUtil.PUSH(mv, methodDesc);
123+
pushCommon();
124124
mv.visitInsn(ACONST_NULL);
125125
mv.visitMethodInsn(Opcodes.INVOKESTATIC, CLASS, METHOD, SIGNATURE,false);
126126
return;
@@ -131,76 +131,55 @@ private void capReturn() {
131131
mv.visitVarInsn(Opcodes.ISTORE, i);
132132
mv.visitVarInsn(Opcodes.ILOAD, i);
133133

134-
AsmUtil.PUSH(mv, className);
135-
AsmUtil.PUSH(mv, methodName);
136-
AsmUtil.PUSH(mv, methodDesc);
137-
134+
pushCommon();
138135
mv.visitVarInsn(Opcodes.ILOAD, i);
139136
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;",false);
140137
break;
141138
case Type.BYTE:
142139
mv.visitVarInsn(Opcodes.ISTORE, i);
143140
mv.visitVarInsn(Opcodes.ILOAD, i);
144141

145-
AsmUtil.PUSH(mv, className);
146-
AsmUtil.PUSH(mv, methodName);
147-
AsmUtil.PUSH(mv, methodDesc);
148-
142+
pushCommon();
149143
mv.visitVarInsn(Opcodes.ILOAD, i);
150144
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;",false);
151145
break;
152146
case Type.CHAR:
153147
mv.visitVarInsn(Opcodes.ISTORE, i);
154148
mv.visitVarInsn(Opcodes.ILOAD, i);
155149

156-
AsmUtil.PUSH(mv, className);
157-
AsmUtil.PUSH(mv, methodName);
158-
AsmUtil.PUSH(mv, methodDesc);
159-
150+
pushCommon();
160151
mv.visitVarInsn(Opcodes.ILOAD, i);
161152
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;",false);
162153
break;
163154
case Type.SHORT:
164155
mv.visitVarInsn(Opcodes.ISTORE, i);
165156
mv.visitVarInsn(Opcodes.ILOAD, i);
166157

167-
AsmUtil.PUSH(mv, className);
168-
AsmUtil.PUSH(mv, methodName);
169-
AsmUtil.PUSH(mv, methodDesc);
170-
158+
pushCommon();
171159
mv.visitVarInsn(Opcodes.ILOAD, i);
172160
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;",false);
173161
break;
174162
case Type.INT:
175163
mv.visitVarInsn(Opcodes.ISTORE, i);
176164
mv.visitVarInsn(Opcodes.ILOAD, i);
177165

178-
AsmUtil.PUSH(mv, className);
179-
AsmUtil.PUSH(mv, methodName);
180-
AsmUtil.PUSH(mv, methodDesc);
181-
166+
pushCommon();
182167
mv.visitVarInsn(Opcodes.ILOAD, i);
183168
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;",false);
184169
break;
185170
case Type.LONG:
186171
mv.visitVarInsn(Opcodes.LSTORE, i);
187172
mv.visitVarInsn(Opcodes.LLOAD, i);
188173

189-
AsmUtil.PUSH(mv, className);
190-
AsmUtil.PUSH(mv, methodName);
191-
AsmUtil.PUSH(mv, methodDesc);
192-
174+
pushCommon();
193175
mv.visitVarInsn(Opcodes.LLOAD, i);
194176
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;",false);
195177
break;
196178
case Type.FLOAT:
197179
mv.visitVarInsn(Opcodes.FSTORE, i);
198180
mv.visitVarInsn(Opcodes.FLOAD, i);
199181

200-
AsmUtil.PUSH(mv, className);
201-
AsmUtil.PUSH(mv, methodName);
202-
AsmUtil.PUSH(mv, methodDesc);
203-
182+
pushCommon();
204183
mv.visitVarInsn(Opcodes.FLOAD, i);
205184

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

212-
AsmUtil.PUSH(mv, className);
213-
AsmUtil.PUSH(mv, methodName);
214-
AsmUtil.PUSH(mv, methodDesc);
215-
191+
pushCommon();
216192
mv.visitVarInsn(Opcodes.DLOAD, i);
217193
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;",false);
218194
break;
219195
default:
220196
mv.visitVarInsn(Opcodes.ASTORE, i);
221197
mv.visitVarInsn(Opcodes.ALOAD, i);
222198

223-
AsmUtil.PUSH(mv, className);
224-
AsmUtil.PUSH(mv, methodName);
225-
AsmUtil.PUSH(mv, methodDesc);
226-
199+
pushCommon();
227200
mv.visitVarInsn(Opcodes.ALOAD, i);
228201
}
229202

230203
mv.visitMethodInsn(Opcodes.INVOKESTATIC, CLASS, METHOD, SIGNATURE,false);
231204
}
205+
206+
private void pushCommon() {
207+
AsmUtil.PUSH(mv, className);
208+
AsmUtil.PUSH(mv, methodName);
209+
AsmUtil.PUSH(mv, methodDesc);
210+
if (isStatic) {
211+
AsmUtil.PUSHNULL(mv);
212+
} else {
213+
mv.visitVarInsn(Opcodes.ALOAD, 0);
214+
}
215+
}
232216
}

scouter.agent.java/src/scouter/agent/counter/task/TomcatJMXPerf.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public void process(CounterBasket pw) {
152152
} catch (Exception e) {
153153
errors.add(ctx.attrName);
154154
collectCnt = 0;
155-
e.printStackTrace();
155+
Logger.println("COUNTER", e);
156156
}
157157
}
158158
}
@@ -287,7 +287,8 @@ class CtxObj {
287287
public String attrName;
288288
public String counter;
289289

290-
public CtxObj(String objName, ObjectName mbean, String objType, byte valueType, String attrName, String counter) {
290+
public CtxObj(String objName, ObjectName mbean, String objType, byte valueType, String attrName,
291+
String counter) {
291292

292293
this.objName = objName;
293294
this.mbean = mbean;

0 commit comments

Comments
 (0)