From 03327324012a38f998920d23bf31282558670e85 Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Tue, 11 Jan 2022 11:23:06 +0100 Subject: [PATCH] Misc. small changes. - Update 3rd party dependencies --- README.md | 13 +-- client/README.md | 8 +- client/doc/AIX.md | 7 +- client/doc/sysmon-client.service | 2 + client/doc/sysmon-client.sh | 100 ++++++++++++++++++ client/doc/sysv-init.md | 6 ++ doc/ansible/README.md | 3 - doc/ansible/sysmon-client-aix.yml | 63 ----------- doc/ansible/sysmon-client-linux.yml | 61 ----------- .../templates/sysmon-client.service.j2 | 10 -- doc/ansible/timezone-aix.yml | 33 ------ doc/monitoring-eye-320x320.png | Bin 0 -> 17817 bytes ...epo-com.png => monitoring-eye-512x512.png} | Bin gradle.properties | 4 +- gradle/wrapper/gradle-wrapper.properties | 2 +- plugins/README.md | 2 +- plugins/os-base/README.md | 2 +- .../plugins/os_base/BaseDetailsExtension.java | 4 - .../plugins/os_base/BaseNetstatExtension.java | 4 - server/README.md | 6 +- server/doc/AIX.md | 18 ++++ server/doc/sysmon-server.sh | 100 ++++++++++++++++++ server/doc/sysv-init.md | 6 ++ 23 files changed, 256 insertions(+), 198 deletions(-) create mode 100644 client/doc/sysmon-client.sh create mode 100644 client/doc/sysv-init.md delete mode 100644 doc/ansible/README.md delete mode 100644 doc/ansible/sysmon-client-aix.yml delete mode 100644 doc/ansible/sysmon-client-linux.yml delete mode 100644 doc/ansible/templates/sysmon-client.service.j2 delete mode 100644 doc/ansible/timezone-aix.yml create mode 100644 doc/monitoring-eye-320x320.png rename doc/{monitoring-eye-svgrepo-com.png => monitoring-eye-512x512.png} (100%) create mode 100644 server/doc/AIX.md create mode 100644 server/doc/sysmon-server.sh create mode 100644 server/doc/sysv-init.md diff --git a/README.md b/README.md index 81bcb88..69f6021 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This software is free to use and is licensed under the [Apache 2.0 License](LICE - Example dashboards are provided in the [doc/](doc) folder, which can be imported into your Grafana installation. - Screenshots are available in the [downloads](https://bitbucket.org/mnellemann/sysmon/downloads/) section. -![Sysmon Icon](doc/monitoring-eye-svgrepo-com.png) +![Sysmon Icon](doc/monitoring-eye-320x320.png) ## Components @@ -15,17 +15,18 @@ Runs on your hosts and collects metrics, which are sent to the central *server*. [More information](client/README.md). +### Plugins + +Loaded by the *client* and provides extensions for doing the actual collecting of metrics. + +[More information](plugins/README.md). + ### Server Receives aggregated metrics from *clients* and saves these into InfluxDB. [More information](server/README.md). -### Plugins - -Loaded by the *client* and provides extensions for doing the actual collecting of metrics. - -[More information](plugins/README.md). ## Known problems diff --git a/client/README.md b/client/README.md index d5d165a..2d23ac9 100644 --- a/client/README.md +++ b/client/README.md @@ -1,6 +1,12 @@ # Client -Client component. +This is the client component of SysMon. Install on the hosts for which you want to collect metrics. + +## Installation + +Download *.deb* or *.rpm* packages for sysmon-client *and* sysmon-plugins, and install. + +See the [doc/systemd.md](doc/systemd.md) or [doc/sysv-init.md](doc/sysv-init.md) files for further instructions. ## Development diff --git a/client/doc/AIX.md b/client/doc/AIX.md index cea5076..db4374e 100644 --- a/client/doc/AIX.md +++ b/client/doc/AIX.md @@ -13,9 +13,4 @@ rpm -i --ignoreos sysmon-client.rpm sysmon-plugins.rpm ## Run automatically at boot -Change the *sysmon-server* URL for your environment. - -```shell -mkitab 'sysmon:2:respawn:env JAVA_HOME=/usr/java8_64 /opt/sysmon/client/bin/client -s http://10.20.30.40:9925/metrics >/tmp/sysmon.log 2>&1' -init q -``` +See the [sysv-init.md](sysv-init.md) file for instructions. \ No newline at end of file diff --git a/client/doc/sysmon-client.service b/client/doc/sysmon-client.service index cee5c52..e6e25d9 100644 --- a/client/doc/sysmon-client.service +++ b/client/doc/sysmon-client.service @@ -2,6 +2,8 @@ Description=Sysmon Client Service [Service] +#User=nobody +#Group=nobody TimeoutSec=20 Restart=on-failure ExecStart=/opt/sysmon/client/bin/client -s http://10.20.30.40:9925/metrics diff --git a/client/doc/sysmon-client.sh b/client/doc/sysmon-client.sh new file mode 100644 index 0000000..e958d1f --- /dev/null +++ b/client/doc/sysmon-client.sh @@ -0,0 +1,100 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start daemon at boot time +# Description: Enable service provided by daemon. +### END INIT INFO + +dir="/opt/sysmon/client" +cmd="/opt/sysmon/client/bin/client" +args="-s http://10.20.30.40:9925/metrics" +user="" + +name=`basename $0` +pid_file="/var/run/$name.pid" +stdout_log="/var/log/$name.log" +stderr_log="/var/log/$name.err" + +get_pid() { + cat "$pid_file" +} + +is_running() { + [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1 +} + +case "$1" in + start) + if is_running; then + echo "Already started" + else + echo "Starting $name" + cd "$dir" + if [ -z "$user" ]; then + $cmd $args >> "$stdout_log" 2>> "$stderr_log" & + else + sudo -u "$user" $cmd $args >> "$stdout_log" 2>> "$stderr_log" & + fi + echo $! > "$pid_file" + if ! is_running; then + echo "Unable to start, see $stdout_log and $stderr_log" + exit 1 + fi + fi + ;; + stop) + if is_running; then + echo -n "Stopping $name.." + kill `get_pid` + for i in 1 2 3 4 5 6 7 8 9 10 + # for i in `seq 10` + do + if ! is_running; then + break + fi + + echo -n "." + sleep 1 + done + echo + + if is_running; then + echo "Not stopped; may still be shutting down or shutdown may have failed" + exit 1 + else + echo "Stopped" + if [ -f "$pid_file" ]; then + rm "$pid_file" + fi + fi + else + echo "Not running" + fi + ;; + restart) + $0 stop + if is_running; then + echo "Unable to stop, will not attempt to start" + exit 1 + fi + $0 start + ;; + status) + if is_running; then + echo "Running" + else + echo "Stopped" + exit 1 + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac + +exit 0 diff --git a/client/doc/sysv-init.md b/client/doc/sysv-init.md new file mode 100644 index 0000000..909ddb7 --- /dev/null +++ b/client/doc/sysv-init.md @@ -0,0 +1,6 @@ +# SysV init Notes + +- Copy the *sysmon-client.sh* into *sysmon-client* in the correct location for init scripts on your operating system. +- Edit the file to specify sysmon-server URL in the *args* variable. +- SymLink to the required run-levels. + diff --git a/doc/ansible/README.md b/doc/ansible/README.md deleted file mode 100644 index a89fbd8..0000000 --- a/doc/ansible/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Example Ansible Playbooks - -For installing on AIX and RPM-based Linux. \ No newline at end of file diff --git a/doc/ansible/sysmon-client-aix.yml b/doc/ansible/sysmon-client-aix.yml deleted file mode 100644 index 785177f..0000000 --- a/doc/ansible/sysmon-client-aix.yml +++ /dev/null @@ -1,63 +0,0 @@ ---- -# -# Example ansible playbook for installation of sysmon client on AIX. -# More information at: https://bitbucket.org/mnellemann/sysmon -# -# ansible-galaxy collection install community.general -# ansible-playbook -i aixhost, -u root sysmon-client-aix.yml -# -# NOTE: Ensure correct timezone and time - -- name: "Install Sysmon Client and Plugins on AIX" - hosts: all - gather_facts: yes - vars: - server_url: http://sysmon-server:9925/metrics - - tasks: - - - name: Sysmon Client | Ensure hostname resolves - ansible.builtin.lineinfile: - path: /etc/hosts - state: present - line: "127.0.1.1 {{ ansible_hostname }}" - - - name: Sysmon Client | Copy sysmon-client.rpm - ansible.builtin.copy: - src: "{{ item }}" - dest: /opt/sysmon-client.rpm - with_fileglob: - - ../../client/build/distributions/sysmon-client-*.noarch.rpm - - - name: Sysmon Client | Copy sysmon-plugins.rpm - ansible.builtin.copy: - src: "{{ item }}" - dest: /opt/sysmon-plugins.rpm - with_fileglob: - - ../../plugins/build/distributions/sysmon-plugins-*.noarch.rpm - - - name: Sysmon Client | Install sysmon-client.rpm - ansible.builtin.command: /usr/bin/rpm -i --ignoreos /opt/sysmon-client.rpm - args: - creates: /opt/sysmon/client - - - name: Sysmon Client | Install sysmon-plugins.rpm - ansible.builtin.command: /usr/bin/rpm -i --ignoreos /opt/sysmon-plugins.rpm - args: - creates: /opt/sysmon/plugins - - - name: Sysmon Client | Create inittab entry for sysmon-client - community.general.aix_inittab: - name: sysmon - runlevel: '2' - action: respawn - command: env JAVA_HOME=/usr/java8_64 /opt/sysmon/client/bin/client -s {{ server_url }} >/tmp/sysmon.log 2>&1 - state: present - become: yes - notify: - - reload inittab - - handlers: - - - name: reload inittab - command: init q diff --git a/doc/ansible/sysmon-client-linux.yml b/doc/ansible/sysmon-client-linux.yml deleted file mode 100644 index 4bfcb0d..0000000 --- a/doc/ansible/sysmon-client-linux.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- -# -# Example ansible playbook for installation of sysmon client on Linux (RPM based). -# More information at: https://bitbucket.org/mnellemann/sysmon -# -# ansible-playbook -i linuxhost, -u root sysmon-client-linux.yml -# -# NOTE: Ensure correct timezone and time - -- name: "Install Sysmon Client and Plugins on Linux (RPM based)" - hosts: all - gather_facts: no - vars: - server_url: http://sysmon-server:9925/metrics - - tasks: - - - name: Sysmon Client | Copy sysmon-client.rpm - ansible.builtin.copy: - src: "{{ item }}" - dest: /opt/sysmon-client.rpm - with_fileglob: - - ../../client/build/distributions/sysmon-client-*.noarch.rpm - - - name: Sysmon Client | Copy sysmon-plugins.rpm - ansible.builtin.copy: - src: "{{ item }}" - dest: /opt/sysmon-plugins.rpm - with_fileglob: - - ../../plugins/build/distributions/sysmon-plugins-*.noarch.rpm - - - name: Sysmon Client | Install OpenJDK (headless) - yum: - name: "java-11-openjdk-headless" - state: present - - - name: Sysmon Client | Install sysmon-client.rpm - yum: - name: /opt/sysmon-client.rpm - state: present - disable_gpg_check: true - - - name: Sysmon Plugins | Install sysmon-plugins.rpm - yum: - name: /opt/sysmon-plugins.rpm - state: present - disable_gpg_check: true - - - name: Sysmon Client | Create service file - template: src=sysmon-client.service.j2 dest=/lib/systemd/system/sysmon-client.service mode=644 - notify: - - reload systemctl - - - name: Sysmon Client | Start service - service: name=sysmon-client.service state=started enabled=yes - - - handlers: - - - name: reload systemctl - command: systemctl daemon-reload diff --git a/doc/ansible/templates/sysmon-client.service.j2 b/doc/ansible/templates/sysmon-client.service.j2 deleted file mode 100644 index 25ea9a2..0000000 --- a/doc/ansible/templates/sysmon-client.service.j2 +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Sysmon Client Service - -[Service] -TimeoutStartSec=3 -Restart=always -ExecStart=/opt/sysmon/client/bin/client -s {{server_url}} - -[Install] -WantedBy=default.target diff --git a/doc/ansible/timezone-aix.yml b/doc/ansible/timezone-aix.yml deleted file mode 100644 index 97c426a..0000000 --- a/doc/ansible/timezone-aix.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -# -# Example ansible playbook for timezone and NTP setup on AIX. -# -# ansible-playbook -i aixhost, -u root timezone-aix.yml -# - -- name: "Timezone and NTP on AIX" - hosts: all - gather_facts: no - vars: - timezone: Europe/Copenhagen - ntp_server: dk.pool.ntp.org - - tasks: - - - name: Configure timezone - ansible.builtin.replace: - path: /etc/environment - regexp: '^TZ=(.*)$' - replace: "TZ={{ timezone }}" - - - name: Update time from NTP server - ansible.builtin.command: "env TZ={{ timezone }} /usr/sbin/ntpdate {{ ntp_server }}" - - - name: Create cron entry for updating time periodically - ansible.builtin.cron: - name: ntpdate - weekday: "*" - minute: "1" - hour: "*" - user: root - job: "/usr/sbin/ntpdate {{ ntp_server }}" diff --git a/doc/monitoring-eye-320x320.png b/doc/monitoring-eye-320x320.png new file mode 100644 index 0000000000000000000000000000000000000000..b76724adca40a2fbc4290aa857d392df0cf5ba6b GIT binary patch literal 17817 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 literal 0 HcmV?d00001 diff --git a/doc/monitoring-eye-svgrepo-com.png b/doc/monitoring-eye-512x512.png similarity index 100% rename from doc/monitoring-eye-svgrepo-com.png rename to doc/monitoring-eye-512x512.png diff --git a/gradle.properties b/gradle.properties index 2c76e0e..6f8fccf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ version=0.1.7 pf4jVersion=3.6.0 slf4jVersion=1.7.32 -camelVersion=3.11.4 +camelVersion=3.14.0 picocliVersion=4.6.2 -oshiVersion=5.8.5 \ No newline at end of file +oshiVersion=5.8.6 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 84d1f85..d2880ba 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/plugins/README.md b/plugins/README.md index 6e6b5b9..38ebedf 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -2,6 +2,6 @@ Collection of standard sysmon plugins. -- [base](os-base/) - base OS metrics +- [base](os-base/) - Base OS metrics (through [oshi](https://github.com/oshi/oshi)) - [aix](os-aix/) - AIX (and Power) specific metrics - [linux](os-linux/) - Linux specific metrics \ No newline at end of file diff --git a/plugins/os-base/README.md b/plugins/os-base/README.md index e0790fe..8470b4e 100644 --- a/plugins/os-base/README.md +++ b/plugins/os-base/README.md @@ -40,7 +40,7 @@ Metrics reported are: ## Filesystem Extension ### Metrics -- + - **free_bytes** - Free bytes for filesystem. - **total_bytes** - Total bytes for filesystem. - **free_inoed** - Free inodes for filesystem. diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseDetailsExtension.java b/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseDetailsExtension.java index e03640f..912e6bf 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseDetailsExtension.java +++ b/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseDetailsExtension.java @@ -4,15 +4,11 @@ import org.pf4j.Extension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import oshi.SystemInfo; -import oshi.hardware.HWDiskStore; -import oshi.hardware.HardwareAbstractionLayer; import sysmon.shared.Measurement; import sysmon.shared.MetricExtension; import sysmon.shared.MetricResult; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; @Extension diff --git a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetstatExtension.java b/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetstatExtension.java index 3f57f33..bf1a383 100644 --- a/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetstatExtension.java +++ b/plugins/os-base/src/main/java/sysmon/plugins/os_base/BaseNetstatExtension.java @@ -4,15 +4,11 @@ import org.pf4j.Extension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import oshi.SystemInfo; -import oshi.hardware.HWDiskStore; -import oshi.hardware.HardwareAbstractionLayer; import sysmon.shared.Measurement; import sysmon.shared.MetricExtension; import sysmon.shared.MetricResult; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; @Extension diff --git a/server/README.md b/server/README.md index 4546314..0947758 100644 --- a/server/README.md +++ b/server/README.md @@ -1,10 +1,12 @@ # Server -Server component. +This is the server component of SysMon. ## Installation -TODO. +Download *.deb* or *.rpm* package and install. + +See the [doc/systemd.md](doc/systemd.md) or [doc/sysv-init.md](doc/sysv-init.md) files for further instructions. ### Influx Database diff --git a/server/doc/AIX.md b/server/doc/AIX.md new file mode 100644 index 0000000..1c0bbcd --- /dev/null +++ b/server/doc/AIX.md @@ -0,0 +1,18 @@ +# AIX Notes + +Works on IBM Power AIX installations. + +## Installation + +We require Java 8, which should already be installed on AIX, or is available to install. +The RPM packages are *"noarch"* Java bytecode, so we can use the **--ignoreos** option to install: + +```shell +rpm -i --ignoreos sysmon-server.rpm +``` + +You can find InfluxDB and Grafana packaged for AIX on the [https://www.power-devops.com/](https://www.power-devops.com/) website. + +## Run automatically at boot + +See the [sysv-init.md](sysv-init.md) file for instructions. \ No newline at end of file diff --git a/server/doc/sysmon-server.sh b/server/doc/sysmon-server.sh new file mode 100644 index 0000000..60f4b38 --- /dev/null +++ b/server/doc/sysmon-server.sh @@ -0,0 +1,100 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start daemon at boot time +# Description: Enable service provided by daemon. +### END INIT INFO + +dir="/opt/sysmon/server" +cmd="/opt/sysmon/server/bin/server" +args="-d" +user="" + +name=`basename $0` +pid_file="/var/run/$name.pid" +stdout_log="/var/log/$name.log" +stderr_log="/var/log/$name.err" + +get_pid() { + cat "$pid_file" +} + +is_running() { + [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1 +} + +case "$1" in + start) + if is_running; then + echo "Already started" + else + echo "Starting $name" + cd "$dir" + if [ -z "$user" ]; then + $cmd $args >> "$stdout_log" 2>> "$stderr_log" & + else + sudo -u "$user" $cmd $args >> "$stdout_log" 2>> "$stderr_log" & + fi + echo $! > "$pid_file" + if ! is_running; then + echo "Unable to start, see $stdout_log and $stderr_log" + exit 1 + fi + fi + ;; + stop) + if is_running; then + echo -n "Stopping $name.." + kill `get_pid` + for i in 1 2 3 4 5 6 7 8 9 10 + # for i in `seq 10` + do + if ! is_running; then + break + fi + + echo -n "." + sleep 1 + done + echo + + if is_running; then + echo "Not stopped; may still be shutting down or shutdown may have failed" + exit 1 + else + echo "Stopped" + if [ -f "$pid_file" ]; then + rm "$pid_file" + fi + fi + else + echo "Not running" + fi + ;; + restart) + $0 stop + if is_running; then + echo "Unable to stop, will not attempt to start" + exit 1 + fi + $0 start + ;; + status) + if is_running; then + echo "Running" + else + echo "Stopped" + exit 1 + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac + +exit 0 diff --git a/server/doc/sysv-init.md b/server/doc/sysv-init.md new file mode 100644 index 0000000..9bd78aa --- /dev/null +++ b/server/doc/sysv-init.md @@ -0,0 +1,6 @@ +# SysV init Notes + +- Copy the *sysmon-server.sh* into *sysmon-server* in the correct location for init scripts on your operating system. +- Edit the file if you need to specify any options in the *args* variable. +- SymLink to the required run-levels. +