Compare commits

..

11 Commits

Author SHA1 Message Date
oleg 9bb868845f fix 2025-05-18 19:11:19 -04:00
oleg aced5b23e0 progress 2025-05-18 19:05:25 -04:00
oleg 9eb4f8e117 daily sim for docker.initial 2025-05-18 18:42:08 -04:00
oleg 3e49b5bf27 Merge branch 'master' of cloud21.cvtt.vpn:/opt/store/git/cvtt2/ops 2025-05-17 23:29:01 -04:00
oleg 0876776d60 progress 2025-05-17 19:30:00 -04:00
Cryptoval2 fb685ca91d cleaning 2025-05-16 16:00:44 +00:00
Cryptoval2 f1a83c8e33 . 2025-05-16 15:58:26 +00:00
Cryptoval2 26540a5294 cleaning 2025-05-16 15:57:12 +00:00
oleg c37d62637a Merge branch 'master' of cloud21.cvtt.vpn:/opt/store/git/cvtt2/ops 2025-05-16 11:36:33 -04:00
oleg bcb257add4 deprecated 2025-05-16 11:36:12 -04:00
Cryptoval2 ccc45b06ea utils upgrade 2025-05-16 15:16:01 +00:00
15 changed files with 214 additions and 128 deletions
+1 -1
View File
@@ -1 +1 @@
2.1.3,remove cvttdata 2.1.6,docker prepare sim - crypto - progress
+66
View File
@@ -0,0 +1,66 @@
#!/bin/bash
ValidJobs=('BNBFUT_CLD21' 'BNBSPOT_CLD21' 'COINBASE_CLD21' 'BNBFUT_CVTTDATA' 'BNBSPOT_CVTTDATA' 'COINBASE_CVTTDATA')
# runs on host to start container
usage() {
echo "Usage: $0 <job_name; one of (${ValidJobs[@]})> [image_tag]"
exit 1
}
is_valid() {
local job=$1
for valid_job in "${ValidJobs[@]}";
do
# echo "job=$job valid_job=$valid_job"
if [[ "${job}" == "${valid_job}" ]]; then
return 0
fi
done
return 1
}
is_container_running() {
local container_name=$1
if [ "$(docker ps --filter "name=^/${container_name}$" --filter "status=running" -q)" ]; then
return 0 # true
else
return 1 # false
fi
}
job=${1}
if ! is_valid "${job}"; then
usage
fi
ImageTag=${2}
if [ "${ImageTag}" == "" ] ; then
ImageTag="1.6.9"
fi
DockerImage=cloud21.cvtt.vpn:5500/md_recorder:${ImageTag}
ContainerName="md_recorder.${job}"
if is_container_running "$ContainerName"; then
echo "Container ${ContainerName} is already running. Aborted."
exit
fi
Cmd="docker run"
Cmd+=" -d"
Cmd+=" --rm"
Cmd+=" --network=host"
# Cmd+=" --pull=always"
Cmd+=" --name=${ContainerName}"
Cmd+=" -v /home/cvtt/.creds:/.creds"
Cmd+=" -v /home/cvtt/prod/data:/app/data"
Cmd+=" -v /home/cvtt/prod/logs:/logs"
Cmd+=" -e CONFIG_SERVICE=cloud16.cvtt.vpn:6789"
Cmd+=" ${DockerImage}"
Cmd+=" ${job}"
echo ${Cmd}
eval ${Cmd}
@@ -0,0 +1,60 @@
#!/bin/bash
usage() {
echo "Usage: $0 <instance (CLD21,CVTTDATA)> [<admin_port (def. 7225)>]"
exit 1
}
ValidInstances=('CLD21' 'CVTTDATA')
is_valid() {
local inst=$1
for valid_inst in "${ValidInstances[@]}";
do
if [[ "$inst" == "$valid_inst" ]]; then
return 0
fi
done
return 1
}
is_container_running() {
local container_name=$1
if [ "$(docker ps --filter "name=^/${container_name}$" --filter "status=running" -q)" ]; then
return 0 # true
else
return 1 # false
fi
}
Instance=${1}
if ! is_valid "${Instance}"; then
usage
fi
AdminPort=7225
if [ "${2}" != "" ]; then
AdminPort=${2}
fi
ContainerName="md_recorder_monitor.${Instance}"
if is_container_running "$ContainerName"; then
echo "Container ${ContainerName} is already running. Aborted."
exit
fi
Cmd="docker run"
Cmd+=" -d"
Cmd+=" --rm"
Cmd+=" --network=host"
Cmd+=" --pull=always"
Cmd+=" --name=${ContainerName}"
Cmd+=" -v /home/cvtt/.creds:/.creds"
Cmd+=" -v /home/cvtt/prod/logs:/logs"
Cmd+=" -e CONFIG_SERVICE=cloud16.cvtt.vpn:6789"
Cmd+=" cloud21.cvtt.vpn:5500/md_recorder_monitor:latest"
Cmd+=" ${Instance} ${AdminPort}"
echo ${Cmd}
eval ${Cmd}
+2 -2
View File
@@ -3,7 +3,7 @@
usage() { usage() {
echo -n "Usage: $0 [-h <host (hs01*/cloud21)>]" echo -n "Usage: $0 [-h <host (hs01*/cloud21)>]"
echo -n " [-d <YYYYMMDD> (yesterday*)]" echo -n " [-d <YYYYMMDD> (yesterday*)]"
echo -n " [-s <source> (cvttdata/cloud21*)>]" echo -n " [-s <source> (cloud28/cloud21*)>]"
echo " [-t <target_dir> (/opt/jupyter_gpu/data/crypto_md)]" echo " [-t <target_dir> (/opt/jupyter_gpu/data/crypto_md)]"
exit 1 exit 1
} }
@@ -67,7 +67,7 @@ if ! is_valid "${host}" "${valid_hosts[@]}" ; then
usage usage
fi fi
valid_sources=('cloud21' 'cvttdata') valid_sources=('cloud21' 'cloud28')
if ! is_valid ${source} ${valid_sources[@]} ; then if ! is_valid ${source} ${valid_sources[@]} ; then
echo "Source '${source}' is not valid" echo "Source '${source}' is not valid"
usage usage
@@ -1,112 +1,55 @@
#!/bin/bash #!/bin/bash
# SQLite DDL for simulation
# =========================
# -- md_quotes
# -- md_1min_bars
usage() {
echo -n "Usage: $0"
echo -n " -d YYYMMDD Date>"
echo -n " [-O <output dir (./) >]"
echo -n " [-S <archive_source_host (cloud21)>]"
echo -n " [-D <orig_db_source> (cloud21)]"
echo
exit 1
}
# --------------------- Settings # --------------------- Settings
SourceHost=cloud21 # SOURCE_HOST=cloud21.cvtt.vpn
SourceRootDir=/opt/store/cvtt/md_archive/crypto # SOURCE_ROOT_DIR=/opt/store/cvtt/md_archive/crypto
DbSource=cloud21 # DB_SOURCE=cloud28
# OUTPUT_DIR=/tmp
# DATE=20250516
# RSYNC_TARGETS="cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/crypto/sim/ cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/crypto/sim/"
# --------------------- Settings # --------------------- Settings
while getopts ":d:O:S:D:" opt; do if [ -z ${DATE} ] ; then
case ${opt} in DATE=$(date -d 'yesterday' +'%Y%m%d')
d )
Date=$OPTARG
;;
O )
OutputDir=$OPTARG
;;
S )
SourceHost=$OPTARG
;;
D )
DbSource=$OPTARG
;;
\? )
echo "Invalid option: -$OPTARG" >&2
usage
;;
: )
echo "Option -$OPTARG requires an argument." >&2
usage
;;
esac
done
if [ -z ${Date} ] ; then
echo "date is not specified"
usage
fi
if [ -z ${OutputDir} ] ; then
OutputDir=.
fi fi
SourceHost+=".cvtt.vpn" if [ -z ${OUTPUT_DIR} ] ; then
mkdir -p ${OutputDir} OUTPUT_DIR=.
fi
# --- Binance echo "DATE=${DATE} SOURCE_HOST=${SOURCE_HOST}"
Instruments=( PAIR-ADA-USDT )
Instruments+=( PAIR-BCH-USDT )
Instruments+=( PAIR-BTC-USDT )
Instruments+=( PAIR-DOT-USDT )
Instruments+=( PAIR-ETH-USDT )
Instruments+=( PAIR-LTC-USDT )
Instruments+=( PAIR-SOL-USDT )
Instruments+=( PAIR-USDC-USDT )
Instruments+=( PAIR-XRP-USDT )
# --- Coinbase mkdir -p ${OUTPUT_DIR}
Instruments+=( PAIR-ADA-USD )
Instruments+=( PAIR-BCH-USD )
Instruments+=( PAIR-BTC-USD )
Instruments+=( PAIR-DOT-USD )
Instruments+=( PAIR-ETH-USD )
Instruments+=( PAIR-LTC-USD )
Instruments+=( PAIR-SOL-USD )
Instruments+=( PAIR-XRP-USD )
echo "Date=${Date} Instruments=${Instruments[@]} OutputDir=${OutputDir}" year=$(date -d ${DATE} +"%Y")
echo Getting data from ${DataHost} ... month=$(date -d ${DATE} +"%m")
SourceDir="${SOURCE_ROOT_DIR}/${DB_SOURCE}/${year}/${month}"
year=$(date -d ${Date} +"%Y") SourceFile="${SourceDir}/${DATE}.mktdata.db.gz"
month=$(date -d ${Date} +"%m")
SourceDir="${SourceRootDir}/${DbSource}/${year}/${month}"
SourceFile="${SourceDir}/${Date}.mktdata.db.gz"
Cmd="rsync -ahv" Cmd="rsync -ahv"
Cmd+=" ${SourceHost}:${SourceFile}" Cmd+=" -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'"
Cmd+=" $OutputDir/" Cmd+=" ${SOURCE_HOST}:${SourceFile}"
Cmd+=" $OUTPUT_DIR/"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
Cmd="(cd ${OutputDir} && gunzip *.db.gz)" Cmd="(cd ${OUTPUT_DIR} && gunzip -f *.db.gz)"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
SourceDbFile="${OutputDir}/${Date}.mktdata.db" SourceDbFile="${OUTPUT_DIR}/${DATE}.mktdata.db"
ResultDbFile="${OutputDir}/${Date}.crypto_sim_md.db" ResultDbFile="${OUTPUT_DIR}/${DATE}.crypto_sim_md.db"
echo "SourceDbFile=${SourceDbFile}"
echo "Creating Result Database File ${ResultDbFile}" echo "Creating Result Database File ${ResultDbFile}"
cleanup() {
rm ${SourceDbFile}
}
trap cleanup EXIT
echo "Creating table md_trades ..." echo "Creating table md_trades ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_trades ( CREATE TABLE IF NOT EXISTS md_trades (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -119,12 +62,14 @@ CREATE TABLE IF NOT EXISTS md_trades (
condition text, condition text,
tape text tape text
); );
CREATE UNIQUE INDEX IF NOT EXISTS md_trades_uidx CREATE UNIQUE INDEX IF NOT EXISTS md_trades_uidx
ON md_trades(tstamp_ns, exchange_id, instrument_id); ON md_trades(tstamp_ns, exchange_id, instrument_id);
EOF EOF
echo "Creating table md_quotes ..." echo "Creating table md_quotes ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_quotes ( CREATE TABLE IF NOT EXISTS md_quotes (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -143,6 +88,7 @@ EOF
echo "Creating table md_1min_bars ..." echo "Creating table md_1min_bars ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_1min_bars ( CREATE TABLE IF NOT EXISTS md_1min_bars (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -162,6 +108,7 @@ EOF
echo "Loading md_trades ..." echo "Loading md_trades ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${SourceDbFile}' AS source_db; ATTACH '${SourceDbFile}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_trades SELECT INSERT OR IGNORE INTO md_trades SELECT
@@ -199,6 +146,7 @@ EOF
echo "Loading md_quotes ..." echo "Loading md_quotes ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${SourceDbFile}' AS source_db; ATTACH '${SourceDbFile}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_quotes SELECT INSERT OR IGNORE INTO md_quotes SELECT
@@ -237,6 +185,7 @@ EOF
echo "Loading md_1min_bars ..." echo "Loading md_1min_bars ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${SourceDbFile}' AS source_db; ATTACH '${SourceDbFile}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_1min_bars SELECT INSERT OR IGNORE INTO md_1min_bars SELECT
@@ -273,25 +222,14 @@ COMMIT;
DETACH source_db; DETACH source_db;
EOF EOF
Cmd="rm ${SourceDbFile}"
echo ${Cmd}
eval ${Cmd}
Cmd="gzip ${ResultDbFile}" Cmd="gzip ${ResultDbFile}"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
Cmd="rsync -ahvv ${ResultDbFile}.gz cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/crypto/sim/" for tgt in ${RSYNC_TARGETS} ; do
echo ${Cmd} Cmd="rsync -ahvv ${ResultDbFile}.gz ${tgt}"
eval ${Cmd} echo ${Cmd}
eval ${Cmd}
Cmd="rsync -ahvv ${ResultDbFile}.gz cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/crypto/sim/" done
echo ${Cmd}
eval ${Cmd}
Cmd="rm ${ResultDbFile}.gz"
echo ${Cmd}
eval ${Cmd}
echo Done $0 ${*} echo Done $0 ${*}
@@ -104,6 +104,7 @@ echo "Creating Result Database File ${ResultDbFile}"
echo "Creating table md_trades ..." echo "Creating table md_trades ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_trades ( CREATE TABLE IF NOT EXISTS md_trades (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -122,6 +123,7 @@ EOF
echo "Creating table md_quotes ..." echo "Creating table md_quotes ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_quotes ( CREATE TABLE IF NOT EXISTS md_quotes (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -166,6 +168,7 @@ for sym in ${Symbols[@]}; do
echo "Loading md_trades and md_quotes from ${src_qat_db} ..." echo "Loading md_trades and md_quotes from ${src_qat_db} ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${src_qat_db}' AS source_db; ATTACH '${src_qat_db}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_trades SELECT INSERT OR IGNORE INTO md_trades SELECT
@@ -200,6 +203,7 @@ EOF
echo "Loading md_1min_bars from ${src_hbar_db} ..." echo "Loading md_1min_bars from ${src_hbar_db} ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${src_hbar_db}' AS source_db; ATTACH '${src_hbar_db}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_1min_bars SELECT INSERT OR IGNORE INTO md_1min_bars SELECT
@@ -220,7 +224,7 @@ COMMIT;
DETACH source_db; DETACH source_db;
EOF EOF
Cmd="rm ${src_hbar_db} ${src_qat_db}" Cmd="rm ${src_hbar_db} ${src_qat_db}"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
done done
+2 -1
View File
@@ -11,9 +11,10 @@ function usage {
echo Starting $0 $* echo Starting $0 $*
LogDir=${1} # ---- D e f a u l t s
LogArchiveDir=/works/archive/logs LogArchiveDir=/works/archive/logs
DateCriteria="2 days ago" DateCriteria="2 days ago"
# ---- D e f a u l t s
# ---------------- cmdline # ---------------- cmdline
+38 -21
View File
@@ -1,40 +1,57 @@
#!/bin/bash #!/bin/bash
# FOR hosts with limited disk space - move to storage server
# FOR cloud hosts with limited disk space - move to storage server
function usage { function usage {
echo "Usage: ${0} <host> <from_dir> <days>" echo -n "Usage: ${0}"
echo -n " -H <host_label>"
echo -n " [ -A <archive_dir> (default /works/archive)]"
echo -n " [-D <older than time criteria> (default: '2 days ago')]"
echo
exit 1 exit 1
} }
echo Starting $0 $* echo Starting $0 $*
# ---- D e f a u l t s
ArchiveDir=/works/archive
DateCriteria="2 days ago"
FromHost=$(hostname -s) FromHost=$(hostname -s)
# ---- D e f a u l t s
# ---------------- cmdline
while getopts "A:H:D:" opt; do
case ${opt} in
A )
ArchiveDir=$OPTARG
;;
H )
FromHost=$OPTARG
;;
D )
DateCriteria=$OPTARG
;;
\? )
echo "Invalid option: -$OPTARG" >&2
usage
;;
: )
echo "Option -$OPTARG requires an argument." >&2
usage
;;
esac
done
# ---------------- cmdline
if [ "${FromHost}" == "" ] if [ "${FromHost}" == "" ]
then then
usage usage
fi fi
ArchiveDir=${2}
if [ "${ArchiveDir}" == "" ]
then
usage
fi
Days=${3}
if [ "${Days}" == "" ]
then
Days=2
fi
DateCriteria="${Days} days ago"
TargetHost=cloud21.cvtt.vpn TargetHost=cloud21.cvtt.vpn
TargetRootDir=/opt/store/cvtt/archive TargetRootDir=/opt/store/cvtt/archive
Oldest=$(date -d "${DateCriteria}" '+%Y-%m-%d') Oldest=$(date -d "${DateCriteria}" '+%Y-%m-%d %H:%M:%S')
Now=$(date '+%Y%m%d_%H%M%S')
echo "Looking for log files older than ${DateCriteria} in ${ArchiveDir}" echo "Looking for log files older than ${DateCriteria} in ${ArchiveDir}"
Cmd="find ${ArchiveDir}/" Cmd="find ${ArchiveDir}/"
@@ -45,7 +62,7 @@ Cmd="${Cmd} -o -name '*.logs.*'"
Cmd="${Cmd} -o -name '*.tgz'" Cmd="${Cmd} -o -name '*.tgz'"
Cmd="${Cmd} ')'" Cmd="${Cmd} ')'"
Cmd="${Cmd} -type f" Cmd="${Cmd} -type f"
Cmd="${Cmd} -not -newermt ${Oldest}" Cmd="${Cmd} -not -newermt \"${Oldest}\""
echo ${Cmd} echo ${Cmd}
files=$(eval ${Cmd}) files=$(eval ${Cmd})