You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2020/06/16 08:02:46 UTC

[incubator-iotdb] branch add_audit_log created (now 795a75f)

This is an automated email from the ASF dual-hosted git repository.

qiaojialin pushed a change to branch add_audit_log
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git.


      at 795a75f  add audit log

This branch includes the following new commits:

     new a2416e8  Merge remote-tracking branch 'origin/master'
     new 795a75f  add audit log

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-iotdb] 02/02: add audit log

Posted by qi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

qiaojialin pushed a commit to branch add_audit_log
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 795a75fcf2aa8f534ab13069ec3334f02edaddf4
Author: qiaojialin <64...@qq.com>
AuthorDate: Tue Jun 16 16:02:41 2020 +0800

    add audit log
---
 server/src/assembly/resources/conf/logback.xml     | 21 ++++++++++++++
 .../org/apache/iotdb/db/conf/IoTDBConstant.java    |  2 ++
 .../org/apache/iotdb/db/service/TSServiceImpl.java | 32 ++++++++++++++--------
 3 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/server/src/assembly/resources/conf/logback.xml b/server/src/assembly/resources/conf/logback.xml
index fc8a179..7121876 100644
--- a/server/src/assembly/resources/conf/logback.xml
+++ b/server/src/assembly/resources/conf/logback.xml
@@ -170,6 +170,24 @@
             <level>INFO</level>
         </filter>
     </appender>
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT">
+        <file>${IOTDB_HOME}/logs/log_audit.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${IOTDB_HOME}/logs/log-audit-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>50MB</maxFileSize>
+                <maxBackupIndex>50</maxBackupIndex>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <append>true</append>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d [%t] %-5p %C:%L - %m %n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+    </appender>
     <root level="info">
         <appender-ref ref="FILEDEBUG"/>
         <appender-ref ref="FILEWARN"/>
@@ -183,4 +201,7 @@
     <logger level="info" name="org.apache.iotdb.db.sync">
         <appender-ref ref="SYNC"/>
     </logger>
+    <logger level="info" name="IoTDB_AUDIT_LOGGER">
+        <appender-ref ref="AUDIT"/>
+    </logger>
 </configuration>
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
index 836afbd..2373f0d 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
@@ -28,6 +28,8 @@ public class IoTDBConstant {
   public static final String GLOBAL_DB_NAME = "IoTDB";
   public static final String VERSION = "0.10.0-SNAPSHOT";
 
+  public static final String AUDIT_LOGGER_NAME = "IoTDB_AUDIT_LOGGER";
+
   public static final String IOTDB_JMX_PORT = "iotdb.jmx.port";
 
   public static final String IOTDB_PACKAGE = "org.apache.iotdb.service";
diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index 11e3ac3..114a521 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -118,6 +118,7 @@ import org.slf4j.LoggerFactory;
  */
 public class TSServiceImpl implements TSIService.Iface, ServerContext {
 
+  private static final Logger auditLogger = LoggerFactory.getLogger(IoTDBConstant.AUDIT_LOGGER_NAME);
   private static final Logger logger = LoggerFactory.getLogger(TSServiceImpl.class);
   private static final String INFO_NOT_LOGIN = "{}: Not login.";
   private static final int MAX_SIZE =
@@ -162,11 +163,6 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
 
   @Override
   public TSOpenSessionResp openSession(TSOpenSessionReq req) throws TException {
-    logger.info(
-        "{}: receive open session request from username {}",
-        IoTDBConstant.GLOBAL_DB_NAME,
-        req.getUsername());
-
     boolean status;
     IAuthorizer authorizer;
     try {
@@ -206,6 +202,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
       tsStatus = RpcUtils.getStatus(TSStatusCode.WRONG_LOGIN_PASSWORD_ERROR);
       tsStatus.setMessage(loginMessage);
     }
+    auditLogger.info("User {} opens Session-{}", req.getUsername(), sessionId);
     TSOpenSessionResp resp = new TSOpenSessionResp(tsStatus,
         TSProtocolVersion.IOTDB_SERVICE_PROTOCOL_V2);
     resp.setSessionId(sessionId);
@@ -222,8 +219,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
 
   @Override
   public TSStatus closeSession(TSCloseSessionReq req) {
-    logger.info("{}: receive close session", IoTDBConstant.GLOBAL_DB_NAME);
-    long sessionId = currSessionId.get();
+    long sessionId = req.getSessionId();
+    auditLogger.info("Session-{} is closing", sessionId);
     currSessionId.remove();
 
     TSStatus tsStatus;
@@ -249,6 +246,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
         }
       }
     }
+
     if (!exceptions.isEmpty()) {
       return new TSStatus(
           RpcUtils.getStatus(
@@ -268,11 +266,12 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
 
   @Override
   public TSStatus closeOperation(TSCloseOperationReq req) {
-    if (logger.isDebugEnabled()) {
-      logger.debug("{}: receive close operation", IoTDBConstant.GLOBAL_DB_NAME);
-    }
+    if (auditLogger.isDebugEnabled()) {
+    auditLogger.debug("{}: receive close operation from Session {}", IoTDBConstant.GLOBAL_DB_NAME,
+        currSessionId.get());
+  }
     if (!checkLogin(req.getSessionId())) {
-      logger.info(INFO_NOT_LOGIN, IoTDBConstant.GLOBAL_DB_NAME);
+      auditLogger.info(INFO_NOT_LOGIN, IoTDBConstant.GLOBAL_DB_NAME);
       return RpcUtils.getStatus(TSStatusCode.NOT_LOGIN_ERROR);
     }
     try {
@@ -526,6 +525,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
    */
   private TSExecuteStatementResp internalExecuteQueryStatement(String statement,
       long statementId, PhysicalPlan plan, int fetchSize, String username) {
+    auditLogger.info("Session {} execute Query: {}", currSessionId.get(), statement);
     long startTime = System.currentTimeMillis();
     long queryId = -1;
     try {
@@ -1061,6 +1061,10 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
   @Override
   public TSExecuteBatchStatementResp insertRecords(TSInsertRecordsReq req) {
     TSExecuteBatchStatementResp resp = new TSExecuteBatchStatementResp();
+    auditLogger
+        .debug("Session {} insertRecords, first device {}, first time {}", currSessionId.get(),
+            req.deviceIds.get(0), req.getTimestamps().get(0));
+
     if (!checkLogin(req.getSessionId())) {
       logger.info(INFO_NOT_LOGIN, IoTDBConstant.GLOBAL_DB_NAME);
       resp.addToStatusList(RpcUtils.getStatus(TSStatusCode.NOT_LOGIN_ERROR));
@@ -1119,6 +1123,9 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
   @Override
   public TSStatus insertRecord(TSInsertRecordReq req) {
     try {
+      auditLogger
+          .info("Session {} insertRecord, device {}, time {}", currSessionId.get(),
+              req.getDeviceId(), req.getTimestamp());
       if (!checkLogin(req.getSessionId())) {
         logger.info(INFO_NOT_LOGIN, IoTDBConstant.GLOBAL_DB_NAME);
         return RpcUtils.getStatus(TSStatusCode.NOT_LOGIN_ERROR);
@@ -1315,6 +1322,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
       return RpcUtils.getStatus(TSStatusCode.NOT_LOGIN_ERROR);
     }
 
+    auditLogger.info("Session-{} create timeseries {}", currSessionId.get(), req.getPath());
     TSStatus status = checkPathValidity(req.path);
     if (status != null) {
       return status;
@@ -1337,6 +1345,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
       logger.info(INFO_NOT_LOGIN, IoTDBConstant.GLOBAL_DB_NAME);
       return RpcUtils.getTSBatchExecuteStatementResp(TSStatusCode.NOT_LOGIN_ERROR);
     }
+    auditLogger.info("Session-{} create multi timeseries, first is {}", currSessionId.get(),
+        req.getPaths().get(0));
     List<TSStatus> statusList = new ArrayList<>(req.paths.size());
     for (int i = 0; i < req.paths.size(); i++) {
       CreateTimeSeriesPlan plan = new CreateTimeSeriesPlan(new Path(req.getPaths().get(i)),


[incubator-iotdb] 01/02: Merge remote-tracking branch 'origin/master'

Posted by qi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

qiaojialin pushed a commit to branch add_audit_log
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit a2416e88022adc8ca9b80ae1268790ebc7daa2e4
Merge: b6beda8 3cf4eea
Author: qiaojialin <64...@qq.com>
AuthorDate: Tue Jun 16 11:40:09 2020 +0800

    Merge remote-tracking branch 'origin/master'

 Jenkinsfile                                        |  40 ++--
 client-py/src/client_example.py                    |  64 +++---
 docs/UserGuide/Operation Manual/SQL Reference.md   |   8 +
 .../zh/UserGuide/Operation Manual/SQL Reference.md |   8 +
 .../org/apache/iotdb/db/qp/strategy/SqlBase.g4     |   1 +
 .../org/apache/iotdb/db/conf/IoTDBConstant.java    |   6 +
 .../apache/iotdb/db/engine/cache/ChunkCache.java   |  22 +--
 .../iotdb/db/engine/cache/ChunkMetadataCache.java  |  10 +-
 .../db/engine/cache/TimeSeriesMetadataCache.java   |  20 +-
 .../iotdb/db/engine/merge/manage/MergeFuture.java  | 153 +++++++++++++++
 .../iotdb/db/engine/merge/manage/MergeManager.java | 196 ++++++++++++++++++-
 .../db/engine/merge/manage/MergeManagerMBean.java  |  26 +++
 .../db/engine/merge/manage/MergeThreadPool.java    |  48 +++++
 .../iotdb/db/engine/merge/task/MergeFileTask.java  | 107 +++++++---
 .../db/engine/merge/task/MergeMultiChunkTask.java  | 216 ++++++++++++++-------
 .../iotdb/db/engine/merge/task/MergeTask.java      |  77 +++++++-
 .../db/engine/merge/task/RecoverMergeTask.java     |  13 +-
 .../apache/iotdb/db/engine/upgrade/UpgradeLog.java |   5 +-
 .../main/java/org/apache/iotdb/db/qp/Planner.java  |   2 +
 .../apache/iotdb/db/qp/constant/SQLConstant.java   |   4 +
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  49 +++++
 .../org/apache/iotdb/db/qp/logical/Operator.java   |   3 +-
 .../db/qp/logical/sys/ShowMergeStatusOperator.java |  30 +++
 .../db/qp/physical/sys/ShowMergeStatusPlan.java    |  27 +++
 .../apache/iotdb/db/qp/physical/sys/ShowPlan.java  |   2 +-
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |   8 +
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |   3 +
 .../org/apache/iotdb/db/service/RPCService.java    |   4 +-
 .../org/apache/iotdb/db/service/ServiceType.java   |   2 +-
 .../org/apache/iotdb/db/service/StaticResps.java   |  12 ++
 .../org/apache/iotdb/db/service/TSServiceImpl.java |   2 +
 .../db/tools/upgrade/TsFileOnlineUpgradeTool.java  | 121 ++++++------
 .../iotdb/db/engine/merge/MergeManagerTest.java    | 168 ++++++++++++++++
 .../iotdb/db/integration/IoTDBMergeTest.java       |  50 ++++-
 34 files changed, 1249 insertions(+), 258 deletions(-)