diff --git a/monitoring/src/main/conf/logback.xml b/monitoring/src/main/conf/logback.xml
new file mode 100644
index 0000000000..ea90a898cd
--- /dev/null
+++ b/monitoring/src/main/conf/logback.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ ${pkg.logFolder}/${pkg.name}.log
+
+ ${pkg.logFolder}/${pkg.name}.%d{yyyy-MM-dd}.%i.log
+ 100MB
+ 30
+ 3GB
+
+
+ %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+ %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/monitoring/src/main/conf/tb-monitoring.conf b/monitoring/src/main/conf/tb-monitoring.conf
new file mode 100644
index 0000000000..83287286bb
--- /dev/null
+++ b/monitoring/src/main/conf/tb-monitoring.conf
@@ -0,0 +1,22 @@
+#
+# Copyright © 2016-2022 The Thingsboard Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=@pkg.logFolder@/gc.log:time,uptime,level,tags:filecount=10,filesize=10M"
+export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError"
+export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
+export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10"
+export LOG_FILENAME=${pkg.name}.out
+export LOADER_PATH=${pkg.installFolder}/conf
diff --git a/monitoring/src/main/java/org/thingsboard/monitoring/service/MonitoringReporter.java b/monitoring/src/main/java/org/thingsboard/monitoring/service/MonitoringReporter.java
index fdcf935d5f..ee8b173152 100644
--- a/monitoring/src/main/java/org/thingsboard/monitoring/service/MonitoringReporter.java
+++ b/monitoring/src/main/java/org/thingsboard/monitoring/service/MonitoringReporter.java
@@ -90,8 +90,8 @@ public class MonitoringReporter {
ObjectNode msg = JacksonUtil.newObjectNode();
latencies.forEach((key, latency) -> {
msg.set(key, new DoubleNode(latency.getAvg()));
- latency.reset();
});
+ latencies.clear();
tbClient.saveEntityTelemetry(entityId, "time", msg);
} catch (Exception e) {
log.error("Failed to report latencies: {}", e.getMessage());
@@ -118,7 +118,6 @@ public class MonitoringReporter {
public void serviceIsOk(Object serviceKey) {
ServiceRecoveryNotification notification = new ServiceRecoveryNotification(serviceKey);
log.info(notification.getText());
-
AtomicInteger failuresCounter = failuresCounters.get(serviceKey);
if (failuresCounter != null) {
if (failuresCounter.get() >= failuresThreshold) {
diff --git a/msa/monitoring/docker/Dockerfile b/msa/monitoring/docker/Dockerfile
new file mode 100644
index 0000000000..be817dd31f
--- /dev/null
+++ b/msa/monitoring/docker/Dockerfile
@@ -0,0 +1,30 @@
+#
+# Copyright © 2016-2022 The Thingsboard Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM thingsboard/openjdk11:bullseye-slim
+
+COPY start-tb-monitoring.sh ${pkg.name}.deb /tmp/
+
+RUN chmod a+x /tmp/*.sh \
+ && mv /tmp/start-tb-monitoring.sh /usr/bin && \
+ (yes | dpkg -i /tmp/${pkg.name}.deb) && \
+ rm /tmp/${pkg.name}.deb && \
+ (systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :) && \
+ chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jar
+
+USER ${pkg.user}
+
+CMD ["start-tb-monitoring.sh"]
diff --git a/msa/monitoring/docker/start-tb-monitoring.sh b/msa/monitoring/docker/start-tb-monitoring.sh
new file mode 100755
index 0000000000..e7d655674d
--- /dev/null
+++ b/msa/monitoring/docker/start-tb-monitoring.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright © 2016-2022 The Thingsboard Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+CONF_FOLDER=${pkg.installFolder}/conf
+jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
+configfile=${pkg.name}.conf
+
+source "${CONF_FOLDER}/${configfile}"
+
+echo "Starting '${project.name}' ..."
+
+cd ${pkg.installFolder}/bin
+
+exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.monitoring.ThingsboardMonitoringApplication \
+ -Dspring.jpa.hibernate.ddl-auto=none \
+ -Dlogging.config=$CONF_FOLDER/logback.xml \
+ org.springframework.boot.loader.PropertiesLauncher
diff --git a/msa/monitoring/pom.xml b/msa/monitoring/pom.xml
new file mode 100644
index 0000000000..59334c70b4
--- /dev/null
+++ b/msa/monitoring/pom.xml
@@ -0,0 +1,192 @@
+
+
+
+ 4.0.0
+
+ org.thingsboard
+ 3.4.2-SNAPSHOT
+ msa
+
+
+ org.thingsboard.msa
+ monitoring
+ pom
+
+ ThingsBoard Monitoring Microservice
+
+
+ UTF-8
+ ${basedir}/../..
+ tb-monitoring
+ tb-monitoring
+ /var/log/${pkg.name}
+ /usr/share/${pkg.name}
+ pre-integration-test
+
+
+
+
+ org.thingsboard
+ monitoring
+ ${project.version}
+ deb
+ deb
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-tb-monitoring-deb
+ package
+
+ copy
+
+
+
+
+ org.thingsboard
+ monitoring
+ deb
+ deb
+ ${pkg.name}.deb
+ ${project.build.directory}
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-docker-config
+ process-resources
+
+ copy-resources
+
+
+ ${project.build.directory}
+
+
+ docker
+ true
+
+
+
+
+
+
+
+ com.spotify
+ dockerfile-maven-plugin
+
+
+ build-docker-image
+ pre-integration-test
+
+ build
+
+
+ ${dockerfile.skip}
+ ${docker.repo}/${docker.name}
+ true
+ false
+ ${project.build.directory}
+
+
+
+ tag-docker-image
+ pre-integration-test
+
+ tag
+
+
+ ${dockerfile.skip}
+ ${docker.repo}/${docker.name}
+ ${project.version}
+
+
+
+
+
+
+
+
+ push-docker-image
+
+
+ push-docker-image
+
+
+
+
+
+ com.spotify
+ dockerfile-maven-plugin
+
+
+ push-latest-docker-image
+ pre-integration-test
+
+ push
+
+
+ latest
+ ${docker.repo}/${docker.name}
+
+
+
+ push-version-docker-image
+ pre-integration-test
+
+ push
+
+
+ ${project.version}
+ ${docker.repo}/${docker.name}
+
+
+
+
+
+
+
+
+
+
+ jenkins
+ Jenkins Repository
+ https://repo.jenkins-ci.org/releases
+
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/msa/pom.xml b/msa/pom.xml
index 9a2acc6d18..a6291a97c0 100644
--- a/msa/pom.xml
+++ b/msa/pom.xml
@@ -46,6 +46,7 @@
web-ui
tb-node
transport
+ monitoring