| @REM | |
| @REM Licensed to the Apache Software Foundation (ASF) under one | |
| @REM or more contributor license agreements. See the NOTICE file | |
| @REM distributed with this work for additional information | |
| @REM regarding copyright ownership. The ASF licenses this file | |
| @REM to you under the Apache License, Version 2.0 (the | |
| @REM "License"); you may not use this file except in compliance | |
| @REM with the License. You may obtain a copy of the License at | |
| @REM | |
| @REM http://www.apache.org/licenses/LICENSE-2.0 | |
| @REM | |
| @REM Unless required by applicable law or agreed to in writing, | |
| @REM software distributed under the License is distributed on an | |
| @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| @REM KIND, either express or implied. See the License for the | |
| @REM specific language governing permissions and limitations | |
| @REM under the License. | |
| @REM | |
| @echo off | |
| title IoTDB Collect | |
| if "%OS%" == "Windows_NT" setlocal | |
| pushd %~dp0..\..\.. | |
| if NOT DEFINED IOTDB_HOME set IOTDB_HOME=%cd% | |
| popd | |
| setlocal enabledelayedexpansion | |
| if "%JAVA_HOME%"=="" ( | |
| echo Please configure JAVA environment variables | |
| pause | |
| exit /b | |
| ) | |
| set "COLLECTION_DIR_NAME=iotdb-info" | |
| set "COLLECTION_DIR=%IOTDB_HOME%\%COLLECTION_DIR_NAME%" | |
| set "COLLECTION_DIR_LOGS=%COLLECTION_DIR%\logs" | |
| set "COLLECTION_FILE=%COLLECTION_DIR%\collection.txt" | |
| set "START_CLI_PATH=%IOTDB_HOME%\sbin\windows\start-cli.bat" | |
| set "HELP=Usage: %0 [-h <ip>] [-p <port>] [-u <username>] [-pw <password>] [-dd <data_dir>]" | |
| set "user_param=root" | |
| set "passwd_param=root" | |
| set "host_param=127.0.0.1" | |
| set "port_param=6667" | |
| if exist "%IOTDB_HOME%\conf\iotdb-system.properties" ( | |
| set "properties_file=%IOTDB_HOME%\conf\iotdb-system.properties" | |
| ) else ( | |
| set "properties_file=%IOTDB_HOME%\conf\iotdb-datanode.properties" | |
| ) | |
| set "key=dn_data_dirs" | |
| for /f "usebackq tokens=1,* delims==" %%a in ("%properties_file%") do ( | |
| if "%%a"=="%key%" ( | |
| set "value=%%b" | |
| ) | |
| ) | |
| IF "%value%"=="" ( | |
| set "data_dir_param=%IOTDB_HOME%\data\datanode\data" | |
| ) else ( | |
| set "data_dir_param=%value%" | |
| ) | |
| :parse_args | |
| if "%~1"=="" goto done | |
| if "%~1"=="-u" ( | |
| set "user_param=%~2" | |
| shift | |
| shift | |
| goto parse_args | |
| ) | |
| if "%~1"=="-pw" ( | |
| set "passwd_param=%~2" | |
| shift | |
| shift | |
| goto parse_args | |
| ) | |
| if "%~1"=="-h" ( | |
| set "host_param=%~2" | |
| shift | |
| shift | |
| goto parse_args | |
| ) | |
| if "%~1"=="-p" ( | |
| set "port_param=%~2" | |
| shift | |
| shift | |
| goto parse_args | |
| ) | |
| if "%~1"=="-dd" ( | |
| set "data_dir_param=%~2" | |
| shift | |
| shift | |
| goto parse_args | |
| ) | |
| echo Unrecognized option: %~1 | |
| echo %HELP% | |
| exit /b 1 | |
| :done | |
| echo user_param: %user_param% | |
| echo passwd_param: %passwd_param% | |
| echo host_param: %host_param% | |
| echo port_param: %port_param% | |
| echo data_dir_param: %data_dir_param% | |
| set "command=show version" | |
| call :collect_info | |
| echo Program execution completed, directory name is %COLLECTION_DIR% | |
| pause | |
| exit /b | |
| :collect_info | |
| echo --------------------- | |
| echo Start collecting info | |
| echo --------------------- | |
| if exist "%COLLECTION_DIR%" rmdir /s /q "%COLLECTION_DIR%" | |
| mkdir "%COLLECTION_DIR_LOGS%" | |
| xcopy /E /I /Q "%IOTDB_HOME%\conf" "%COLLECTION_DIR%\conf" | |
| call :collection_logs | |
| call :collect_system_info >> "%COLLECTION_FILE%" | |
| call :collect_jdk_version >> "%COLLECTION_FILE%" | |
| call :collect_activation_info >> "%COLLECTION_FILE%" | |
| call :total_file_num >> "%COLLECTION_FILE%" | |
| call :execute_command "show version" >> "%COLLECTION_FILE%" 2>&1 | |
| call :execute_command "show cluster details" >> "%COLLECTION_FILE%" 2>&1 | |
| call :execute_command "show regions" >> "%COLLECTION_FILE%" 2>&1 | |
| call :execute_command "show databases" >> "%COLLECTION_FILE%" 2>&1 | |
| call :execute_command "count devices" >> "%COLLECTION_FILE%" 2>&1 | |
| call :execute_command "count timeseries" >> "%COLLECTION_FILE%" 2>&1 | |
| exit /b | |
| :collect_system_info | |
| echo ===================== "System Info" ===================== | |
| systeminfo | |
| exit /b | |
| :collect_jdk_version | |
| echo ===================== "JDK Version" ===================== | |
| java -version 2>&1 | |
| exit /b | |
| :collect_activation_info | |
| echo =================== "Activation Info" ==================== | |
| if exist "%~dp0/../../../activation" ( | |
| if exist "%~dp0/../../../activation/license" ( | |
| echo Active | |
| ) else ( | |
| echo Not active | |
| ) | |
| ) else ( | |
| echo Open source version | |
| ) | |
| exit /b | |
| :collection_logs | |
| for %%F in ("%IOTDB_HOME%\logs\*.log") do ( | |
| echo %%F | |
| if /I "%%~xF"==".log" ( | |
| copy "%%F" "%COLLECTION_DIR_LOGS%" | |
| ) | |
| ) | |
| exit /b | |
| :execute_command | |
| setlocal enabledelayedexpansion | |
| set "command=%~1" | |
| echo =================== "%command%" ==================== | |
| call "%START_CLI_PATH%" -h "%host_param%" -p "%port_param%" -u "%user_param%" -pw "%passwd_param%" -e "%command%" | |
| exit /b | |
| :total_file_num | |
| echo ===================== "TsFile Info" ===================== | |
| set "directories=%data_dir_param%" | |
| set "seqFileCount=0" | |
| set "unseqFileCount=0" | |
| set /a totalSeqFileSize=0 | |
| set /a totalUnseqFileSize=0 | |
| set "directories=!directories:,= !" | |
| set /a seqFileSize=0 | |
| set /a unseqFileSize=0 | |
| for %%d in ("%directories: =" "%") do ( | |
| set "seqdirectory=%%~d\sequence" | |
| set "unseqdirectory=%%~d\unsequence" | |
| if exist "!seqdirectory!" ( | |
| for /f %%a in ('dir /s /b /a-d "!seqdirectory!\\*.tsfile" 2^>nul ^| find /c /v ""') do ( | |
| set /a "seqFileCount+=%%a" | |
| ) | |
| ) | |
| if exist "!unseqdirectory!\*" ( | |
| for /f %%a in ('dir /s /b /a-d "!unseqdirectory!\\*.tsfile" 2^>nul ^| find /c /v ""') do ( | |
| set /a "unseqFileCount+=%%a" | |
| ) | |
| ) | |
| ) | |
| echo sequence(tsfile number): %seqFileCount% | |
| echo unsequence(tsfile number): %unseqFileCount% | |
| call :directorySize "%data_dir_param%\sequence" convertedSeqSize | |
| call :directorySize "%data_dir_param%\unsequence" convertedUnSeqSize | |
| echo sequence(tsfile size): %convertedSeqSize% | |
| echo unsequence(tsfile size): %convertedUnSeqSize% | |
| exit /b | |
| :directorySize | |
| @echo off | |
| setlocal | |
| set "data_dir=%~1" | |
| set "vbscript=tmp.vbs" | |
| echo Option Explicit > "%vbscript%" | |
| echo. >> "%vbscript%" | |
| echo Dim directories >> "%vbscript%" | |
| echo directories = Split("%data_dir%", ",") >> "%vbscript%" | |
| echo. >> "%vbscript%" | |
| echo Dim totalSize >> "%vbscript%" | |
| echo totalSize = 0 >> "%vbscript%" | |
| echo. >> "%vbscript%" | |
| echo Dim objFSO >> "%vbscript%" | |
| echo Set objFSO = CreateObject("Scripting.FileSystemObject") >> "%vbscript%" | |
| echo. >> "%vbscript%" | |
| echo Dim directory >> "%vbscript%" | |
| echo For Each directory In directories >> "%vbscript%" | |
| echo directory = Trim(directory) >> "%vbscript%" | |
| echo If objFSO.FolderExists(directory) Then >> "%vbscript%" | |
| echo Dim objFolder >> "%vbscript%" | |
| echo Set objFolder = objFSO.GetFolder(directory) >> "%vbscript%" | |
| echo totalSize = totalSize + objFolder.Size >> "%vbscript%" | |
| echo End If >> "%vbscript%" | |
| echo Next >> "%vbscript%" | |
| echo. >> "%vbscript%" | |
| echo Set objFSO = Nothing >> "%vbscript%" | |
| echo. >> "%vbscript%" | |
| echo Function FormatSize(size) >> "%vbscript%" | |
| echo Dim suffixes >> "%vbscript%" | |
| echo suffixes = Array("B", "KB", "MB", "GB", "TB") >> "%vbscript%" | |
| echo Dim index >> "%vbscript%" | |
| echo index = 0 >> "%vbscript%" | |
| echo Do While size ^>= 1024 And index ^< UBound(suffixes) >> "%vbscript%" | |
| echo size = size / 1024 >> "%vbscript%" | |
| echo index = index + 1 >> "%vbscript%" | |
| echo Loop >> "%vbscript%" | |
| echo FormatSize = FormatNumber(size, 2) ^& " " ^& suffixes(index) >> "%vbscript%" | |
| echo End Function >> "%vbscript%" | |
| echo If totalSize ^= 0 Then >> "%vbscript%" | |
| echo WScript.Echo "0 B" >> "%vbscript%" | |
| echo Else >> "%vbscript%" | |
| echo WScript.Echo FormatSize(totalSize) >> "%vbscript%" | |
| echo End If >> "%vbscript%" | |
| cscript //nologo "%vbscript%" > "tmp" | |
| set /p data_size=<"tmp" | |
| del tmp | |
| del %vbscript% | |
| endlocal & set "%2=%data_size%" | |
| exit /b | |