Docker and stat script changes

This commit is contained in:
mrfry 2021-09-22 14:41:09 +02:00
parent 25963566ca
commit e17760a8db
5 changed files with 165 additions and 148 deletions

View file

@ -4,5 +4,6 @@ dist
stats stats
data data
publicDirs publicDirs
nextStatic
devel devel
.git .git

View file

@ -1,7 +1,9 @@
#!/bin/bash #!/bin/bash
hr() { hr() {
printf '\033[0;32m%*s\033[0m\n' "$(tput cols)" '' | tr ' ' '=' if [ -t 0 ]; then
printf '\033[0;32m%*s\033[0m\n' "$(tput cols)" '' | tr ' ' '='
fi
} }
log() { log() {
@ -75,16 +77,14 @@ touch publicDirs/qminingPublic/version
touch publicDirs/qminingPublic/motd touch publicDirs/qminingPublic/motd
if [ -z "$(ls -A ./data/dbs)" ]; then if [ -z "$(ls -A ./data/dbs)" ]; then
log "Making DB-s"
pushd src/standaloneUtils pushd src/standaloneUtils
NS_LOGLEVEL=2 node dbSetup.js NS_LOGLEVEL=2 node dbSetup.js
mv *.db ../../data/dbs mv *.db ../../data/dbs
popd popd
fi fi
log "Disabling next telemetry"
npx --yes next telemetry disable npx --yes next telemetry disable
hr log "Done!"
echo "Done!"
echo "npm start {loglevel}"
echo "To start server"
hr

View file

@ -22,12 +22,12 @@ elif [ "$1" == "stop" ]; then
elif [ "$1" == "start" ]; then elif [ "$1" == "start" ]; then
# --entrypoint bash \ # --entrypoint bash \
scripts/setup.sh scripts/setup.sh
docker start -i $(getContainerId) docker start $(getContainerId)
elif [ "$1" == "run" ]; then elif [ "$1" == "run" ]; then
# --entrypoint bash \ # --entrypoint bash \
scripts/setup.sh scripts/setup.sh
docker run -it \ docker run \
--network host \ --network host \
--mount src="$(pwd)/stats",target="/server/stats",type=bind \ --mount src="$(pwd)/stats",target="/server/stats",type=bind \
--mount src="$(pwd)/data",target="/server/data",type=bind \ --mount src="$(pwd)/data",target="/server/data",type=bind \

View file

@ -74,7 +74,8 @@ const filterFromDailyStats = [
'.xml', '.xml',
'.aspx', '.aspx',
'/questionDbs/', '/questionDbs/',
'/chatFiles/' '/chatFiles/',
'rss'
] ]
// ----------------------------------------------------------------- // -----------------------------------------------------------------
@ -291,165 +292,180 @@ function pCols(cols, rowTitles, colorNames, firstRowColor) {
// ------------------------------------------------------------------------------ // ------------------------------------------------------------------------------
printHeader('Daily stats') printHeader('Daily stats')
try {
const dailyStats = readJSON(`${dir}stats/vstats`) const dailyStats = readJSON(`${dir}stats/vstats`)
function preProcessDailyStats(obj) { function preProcessDailyStats(obj) {
const formatted = Object.keys(obj).reduce((acc, key) => { const formatted = Object.keys(obj).reduce((acc, key) => {
const includes = filterFromDailyStats.some((keyword) => { const includes = filterFromDailyStats.some((keyword) => {
return key.toLowerCase().includes(keyword.toLowerCase()) return key.toLowerCase().includes(keyword.toLowerCase())
})
if (!includes) {
acc.push({ name: key.replace(/\.html/g, ''), val: obj[key] })
}
return acc
}, [])
const merged = formatted.reduce((acc, x) => {
const index = acc.findIndex((y) => {
return x.name === y.name
})
if (index !== -1) {
acc = acc.map((z, i) => {
if (i === index) {
return {
...x,
val: z.val + x.val,
}
}
return z
}) })
} else { if (!includes) {
acc.push(x) acc.push({ name: key.replace(/\.html/g, ''), val: obj[key] })
} }
return acc
}, [])
return acc const merged = formatted.reduce((acc, x) => {
}, []) const index = acc.findIndex((y) => {
return x.name === y.name
})
return merged.sort((a, b) => { if (index !== -1) {
if (a.name > b.name) { acc = acc.map((z, i) => {
return 1 if (i === index) {
} else if (a.name < b.name) { return {
return -1 ...x,
} else { val: z.val + x.val,
return 0 }
} }
}) return z
})
} else {
acc.push(x)
}
return acc
}, [])
return merged.sort((a, b) => {
if (a.name > b.name) {
return 1
} else if (a.name < b.name) {
return -1
} else {
return 0
}
})
}
function getDailyStat(day) {
return preProcessDailyStats(dailyStats[getDayIndex(day)])
}
pCols(
[
...[...Array(colsToPrint).keys()].map((x) => {
return getDailyStat(-x)
}),
],
null,
true
)
} catch (e) {
console.error(e)
} }
function getDailyStat(day) {
return preProcessDailyStats(dailyStats[getDayIndex(day)])
}
pCols(
[
...[...Array(colsToPrint).keys()].map((x) => {
return getDailyStat(-x)
}),
],
null,
true
)
// ------------------------------------------------------------------------------ // ------------------------------------------------------------------------------
printHeader('User id test solving') printHeader('User id test solving')
const userIdTestSolving = readJSON(`${dir}stats/idvstats`) try {
function preProcessUIdTestSolving(obj, minLength) { const userIdTestSolving = readJSON(`${dir}stats/idvstats`)
if (!obj) { function preProcessUIdTestSolving(obj, minLength) {
return '0' if (!obj) {
return '0'
}
if (minLength) {
return Object.keys(obj)
.filter((key) => {
return obj[key] > minLength
})
.length.toString()
} else {
return Object.keys(obj).length.toString()
}
} }
if (minLength) { function getUserIdTestSolving(day) {
return Object.keys(obj) return [
.filter((key) => { getDayName(day),
return obj[key] > minLength preProcessUIdTestSolving(userIdTestSolving[getDayIndex(day)]),
}) ]
.length.toString()
} else {
return Object.keys(obj).length.toString()
} }
}
function getUserIdTestSolving(day) {
return [
getDayName(day),
preProcessUIdTestSolving(userIdTestSolving[getDayIndex(day)]),
]
}
pCols( pCols(
[ [
...[...Array(colsToPrint).keys()].map((x) => { ...[...Array(colsToPrint).keys()].map((x) => {
return getUserIdTestSolving(-x) return getUserIdTestSolving(-x)
}), }),
], ],
null, null,
false, false,
'green' 'green'
) )
} catch(e) {
console.error(e)
}
// ------------------------------------------------------------------------------ // ------------------------------------------------------------------------------
printHeader('User id requests') printHeader('User id requests')
const clientIdTestSolving = readJSON(`${dir}stats/uvstats`) try {
function getUserIdRequests(day) { const clientIdTestSolving = readJSON(`${dir}stats/uvstats`)
return [ function getUserIdRequests(day) {
getDayName(day), return [
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(day)]), getDayName(day),
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(day)], 5), preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(day)]),
] preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(day)], 5),
} ]
}
pCols( pCols(
[ [
...[...Array(colsToPrint).keys()].map((x) => { ...[...Array(colsToPrint).keys()].map((x) => {
return getUserIdRequests(-x) return getUserIdRequests(-x)
}), }),
], ],
['', 'All', 'More than 5'], ['', 'All', 'More than 5'],
false, false,
'green' 'green'
) )
// ------------------------------------------------------------------------------ // ------------------------------------------------------------------------------
printHeader('Daily data count') printHeader('Daily data count')
const dailyDataCount = readFile(`${dir}stats/dailyDataCount`) const dailyDataCount = readFile(`${dir}stats/dailyDataCount`)
function getDailyDataCount(count) { function getDailyDataCount(count) {
return [...Array(count).keys()].map((x) => { return [...Array(count).keys()].map((x) => {
return JSON.parse(head(tail(dailyDataCount, x + 1), 1)) return JSON.parse(head(tail(dailyDataCount, x + 1), 1))
}) })
} }
printLastDataCount(getDailyDataCount(colsToPrint)) printLastDataCount(getDailyDataCount(colsToPrint))
function printLastDataCount(data) { function printLastDataCount(data) {
const res = [...Array(colsToPrint).keys()].map((x) => { const res = [...Array(colsToPrint).keys()].map((x) => {
return [getDayName(-x)] return [getDayName(-x)]
}) })
data.forEach((dataCount, i) => { data.forEach((dataCount, i) => {
res[i].push(dataCount.userCount.toString()) res[i].push(dataCount.userCount.toString())
res[i].push(dataCount.subjectCount.toString()) res[i].push(dataCount.subjectCount.toString())
res[i].push(dataCount.questionCount.toString()) res[i].push(dataCount.questionCount.toString())
}) })
pCols(res, ['', 'Users', 'Subjects', 'Questions'], false, 'green') pCols(res, ['', 'Users', 'Subjects', 'Questions'], false, 'green')
}
} catch(e) {
console.error(e)
} }
// ------------------------------------------------------------------------------ // ------------------------------------------------------------------------------
printHeader('Daily script install / update check count') printHeader('Daily script install / update check count')
function getDailyScriptStat(day) { try {
const log = function getDailyScriptStat(day) {
!day || day === 0 const log =
? readFile(`${dir}stats/vlogs/log`) !day || day === 0
: readFile(`${dir}stats/vlogs/${getDayIndex(day)}`) ? readFile(`${dir}stats/vlogs/log`)
: readFile(`${dir}stats/vlogs/${getDayIndex(day)}`)
if (!log) { if (!log) {
return [getDayName(day), 0, 0] return [getDayName(day), 0, 0]
}
return [
getDayName(day),
countLinesMatching(log, '?install').toString(),
countLinesMatching(log, '?up').toString(),
]
} }
return [
getDayName(day), const installs = [...Array(colsToPrint).keys()].map((x) => {
countLinesMatching(log, '?install').toString(), return getDailyScriptStat(-x)
countLinesMatching(log, '?up').toString(), })
]
pCols(installs, ['', 'Installs', 'Updates'], false, 'green')
} catch(e) {
console.error(e)
} }
const installs = [...Array(colsToPrint).keys()].map((x) => {
return getDailyScriptStat(-x)
})
pCols(installs, ['', 'Installs', 'Updates'], false, 'green')

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/bash
scripts/make.sh scripts/make.sh
npm run start npm run start > /dev/null