|
@@ -1527,7 +1527,12 @@ func (c *Container) attachJVMUprobes(tracer *ebpftracer.Tracer, pid uint32) erro
|
|
|
klog.WithError(err).Errorf("[attach] Failed get so path")
|
|
klog.WithError(err).Errorf("[attach] Failed get so path")
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
- v, err := ebpftracer.GetJvmVersion(libjavaso)
|
|
|
|
|
|
|
+ libjvmso, err := utils.GetSoPath(pid, "libjvm.so", rootfs)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ klog.WithError(err).Errorf("[attach] Failed get so path")
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ v, err := ebpftracer.GetJvmVersion(libjavaso, libjvmso)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
klog.WithError(err).Errorf("[attach] Failed get Java version")
|
|
klog.WithError(err).Errorf("[attach] Failed get Java version")
|
|
|
return err
|
|
return err
|
|
@@ -1535,10 +1540,14 @@ func (c *Container) attachJVMUprobes(tracer *ebpftracer.Tracer, pid uint32) erro
|
|
|
c.AppInfo.Version = v
|
|
c.AppInfo.Version = v
|
|
|
major, minor, patch, err := ebpftracer.ParseVersion(v)
|
|
major, minor, patch, err := ebpftracer.ParseVersion(v)
|
|
|
klog.Infof("[attach] version: %s (Major: %d, Minor: %d, Patch: %d)", v, major, minor, patch)
|
|
klog.Infof("[attach] version: %s (Major: %d, Minor: %d, Patch: %d)", v, major, minor, patch)
|
|
|
- if major != 1 || minor != 8 {
|
|
|
|
|
|
|
+ if !isSupportedJava(major, minor, patch) {
|
|
|
klog.Errorf("[attach] Unsupported Java version.")
|
|
klog.Errorf("[attach] Unsupported Java version.")
|
|
|
- return fmt.Errorf("[attach] Unsupported Java version")
|
|
|
|
|
|
|
+ return fmt.Errorf("[attach] Unsupported Java version %s", v)
|
|
|
}
|
|
}
|
|
|
|
|
+ //if major != 1 || minor != 8 {
|
|
|
|
|
+ // klog.Errorf("[attach] Unsupported Java version.")
|
|
|
|
|
+ // return fmt.Errorf("[attach] Unsupported Java version")
|
|
|
|
|
+ //}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*libNioProbes, err := tracer.AttachJavaNioReadUprobes(pid, codeType, rootfs)
|
|
/*libNioProbes, err := tracer.AttachJavaNioReadUprobes(pid, codeType, rootfs)
|
|
@@ -1568,6 +1577,18 @@ func (c *Container) attachJVMUprobes(tracer *ebpftracer.Tracer, pid uint32) erro
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func isSupportedJava(major, minor, patch int) bool {
|
|
|
|
|
+ switch major {
|
|
|
|
|
+ case 1:
|
|
|
|
|
+ return minor == 8 // JDK 8
|
|
|
|
|
+ case 11: // JDK 11/17/21
|
|
|
|
|
+ //case 11, 17, 21:
|
|
|
|
|
+ return true // JDK 11/17/21
|
|
|
|
|
+ default:
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func (c *Container) attachJavaAotUprobes(tracer *ebpftracer.Tracer, pid uint32) error {
|
|
func (c *Container) attachJavaAotUprobes(tracer *ebpftracer.Tracer, pid uint32) error {
|
|
|
if common.IsOpenFilter() && !common.IsFilterPid(pid) {
|
|
if common.IsOpenFilter() && !common.IsFilterPid(pid) {
|
|
|
return nil
|
|
return nil
|