Skip to content
This repository has been archived by the owner on Dec 29, 2023. It is now read-only.

Commit

Permalink
Added Initial Code
Browse files Browse the repository at this point in the history
  • Loading branch information
bastiao committed Jun 3, 2019
0 parents commit bf9871d
Show file tree
Hide file tree
Showing 27 changed files with 3,114 additions and 0 deletions.
143 changes: 143 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@

# Created by https://www.gitignore.io/api/maven
# Edit at https://www.gitignore.io/?templates=maven

### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar

# End of https://www.gitignore.io/api/maven


# Created by https://www.gitignore.io/api/java
# Edit at https://www.gitignore.io/?templates=java

### Java ###
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# End of https://www.gitignore.io/api/java



# Created by https://www.gitignore.io/api/intellij
# Edit at https://www.gitignore.io/?templates=intellij

### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

# JetBrains templates
**___jb_tmp___

### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr

# Sonarlint plugin
.idea/sonarlint
.idea
.vscode
.settings
.project
.classpath
*.iml

# End of https://www.gitignore.io/api/intellij
24 changes: 24 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Copyright (c) 2019, BMD software
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
74 changes: 74 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Resource Monitor for Java (rmjvm)

## Description

Resource Monitor for Java is a tool that helps to monitor Java process resources and detect memory leaks/CPU constrains.

## How to use?

Before you use this tool, you need to be aware what are your goals. First step, is to understand what kind of application that
you need to monitor and what are the moments to monitor and actions that you need to trigger.

```
rmjvm 1.0
usage: rmjvm [-c] [-e <arg>] [-ed <arg>] [-h] [-ho <arg>] [-p <arg>] [-s
<arg>]
-c,--check check will run all the actionsand wait
until it is requested to stop. Meanwhile it
will monitoring the memory and compare
-e,--export <arg> export format (csv, output)
-ed,--exportdirectory <arg> export directory where will be stored the
files.
-h,--help help shows how to use the rmjvm and what
its core funcionality
-ho,--host <arg> set the hostname for JMX of java listen
process
-p,--port <arg> set the port for JMX of java listen process
-s,--skip <arg> skip the cpu or memory (--skip=mem,cpu)
```

## Examples

Few examples of use of the application:

```
$ rmjvm --help
$ rmjvm --version
$ rmjvm --check
$ rmjvm --skip=mem
$ rmjvm --skip=cpu,mem
$ rmjvm --export=csv --exportdirectory=/tmp/dump-reports
```


## Recommended tools

You should be aware at least of two tools:

- jConsole
- Mission Control and Flight Recorder
- Oracle VisualVM
- JVM tools: https://github.com/aragozin/jvm-tools/
- Eclipse Memory Analyser: MAT

## Other resources

- https://www.sderosiaux.com/articles/2017/02/14/all-the-things-we-can-do-with-jmx/
- https://sysdig.com/blog/jmx-monitoring-custom-metrics/

## Contribute

You can contribute for the project by send Pull Requests.

Build >= JDK12

## Support

It is an open source project and no enterprise support is provided, only by the community.

[<img src="https://raw.githubusercontent.com/wiki/BMDSoftware/dicoogle/images/bmd.png" height="64" alt="BMD Software">](https://www.bmd-software.com)

Please contact [BMD Software](https://www.bmd-software.com) for more information.
2 changes: 2 additions & 0 deletions bin/rmjvm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env bash

30 changes: 30 additions & 0 deletions conf/rmjvm-dicoogle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
### This is only an example.
### Please modify according your needs


application:
uri: "service:jmx:rmi:///jndi/rmi://localhost:3333/jmxrmi"
directory: "c:/Users/bastiao/Projects/dicoogle/dicoogle/target/"


# This is just few examples for monitoring Dicoogle (e.g. https://github.com/BMDSoftware/dicoogle)
# Others examples could also be used.

actions:
- name: monitor-dicom-store
cmd: "c:\\Users\\bastiao\\Software\\dcm4che-5.16.3-bin\\dcm4che-5.16.3\\bin\\ianscu.bat -c DICOOGLE-STORAGE@localhost:6666"
timeout: 0 # ms
monitor: ['cpu', 'mem']
executions: 20
- name: monitor-dicom-qr
cmd: "c:\\Users\\bastiao\\Software\\dcm4che-5.16.3-bin\\dcm4che-5.16.3\\bin\\ianscu.bat -c DICOOGLE-STORAGE@localhost:1045"
monitor: ['mem']
timeout: 0 # ms
executions: 2

# configure a tracer
# there are few examples, such zipkin
tracer:
- uri: "http://my-zipkin-deployment:9201"


27 changes: 27 additions & 0 deletions conf/rmjvm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
### This is only an example.
### Please modify according your needs


application:
uri: "service:jmx:rmi:///jndi/rmi://<YOUR-JMX-HOST>:<YOUR-JMX-PORT>/jmxrmi"
directory: "<DIRECTORY WHERE IS LOCATED JAVA APPLICATION>"


# This is just few examples for monitoring

actions:
- name: monitor01
cmd: "sendFilesApp -h hostname"
timeout: 200 # ms
monitor: ['cpu', 'mem']
executions: 20
- name: monitor02
cmd: "receiveFilesApp -h hostname"
monitor: ['mem']
timeout: 100 # ms
executions: 2

# configure a tracer
# there are few examples, such zipkin
tracer:
- uri: "http://my-zipkin-deployment:9201"
Loading

0 comments on commit bf9871d

Please sign in to comment.