|
|
|
@ -428,6 +428,7 @@ aptGetWasUpdated=0
|
|
|
|
|
freshInstall=0
|
|
|
|
|
cachedMenuDomain=''
|
|
|
|
|
lastTimeSpaceInfo=0
|
|
|
|
|
diagnosticsSizeOk=0
|
|
|
|
|
|
|
|
|
|
MIKRUS_APIKEY=''
|
|
|
|
|
MIKRUS_HOST=''
|
|
|
|
@ -1499,22 +1500,22 @@ do_cleanup_sys() {
|
|
|
|
|
ohai "Sprzątanie dziennik systemowego..."
|
|
|
|
|
journalctl --vacuum-size=50M >>$LOGTO 2>&1
|
|
|
|
|
ohai "Czyszczenie systemu apt..."
|
|
|
|
|
msgnote "Ta operacja może TROCHĘ potrwać (od kilku do kilkudziesięciu minut...)"
|
|
|
|
|
apt-get -y autoremove >>$LOGTO 2>&1 && apt-get -y clean >>$LOGTO 2>&1
|
|
|
|
|
msgcheck "Czyszczenie dziennika i apt zakończono"
|
|
|
|
|
msgnote "Ta operacja może TROCHĘ potrwać (od kilku do kilkudziesięciu minut...)"
|
|
|
|
|
apt-get -y autoremove >>$LOGTO 2>&1 && apt-get -y clean >>$LOGTO 2>&1
|
|
|
|
|
msgcheck "Czyszczenie dziennika i apt zakończono"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
do_cleanup_docker() {
|
|
|
|
|
ohai "Usuwanie nieużywanych obrazów Dockera..."
|
|
|
|
|
msgnote "Ta operacja może TROCHĘ potrwać (do kilku minut...)"
|
|
|
|
|
msgnote "Ta operacja może TROCHĘ potrwać (do kilku minut...)"
|
|
|
|
|
docker image prune -af >>$LOGTO 2>&1
|
|
|
|
|
msgcheck "Czyszczenie Dockera zakończono"
|
|
|
|
|
msgcheck "Czyszczenie Dockera zakończono"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
do_cleanup_db() {
|
|
|
|
|
ohai "Usuwanie kopii zapasowych bazy danych..."
|
|
|
|
|
find /srv/nightscout/data/dbbackup ! -type d -delete
|
|
|
|
|
msgcheck "Czyszczenie kopii zapasowych zakończono"
|
|
|
|
|
find /srv/nightscout/data/dbbackup ! -type d -delete
|
|
|
|
|
msgcheck "Czyszczenie kopii zapasowych zakończono"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cleanup_menu() {
|
|
|
|
@ -1532,7 +1533,7 @@ cleanup_menu() {
|
|
|
|
|
local savedB=$((nowB - lastTimeB))
|
|
|
|
|
local savedTxt=$(echo "$savedB" | numfmt --to iec-i --suffix=B)
|
|
|
|
|
|
|
|
|
|
if (( savedB < 1)); then
|
|
|
|
|
if ((savedB < 1)); then
|
|
|
|
|
savedTxt="---"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
@ -1559,10 +1560,10 @@ cleanup_menu() {
|
|
|
|
|
noyesdlg "Posprzątać wszystko?" "$uni_confirm_del" "$uni_resign" \
|
|
|
|
|
"Czy chcesz posprzątać i usunąć:" \
|
|
|
|
|
"$(pad_multiline \
|
|
|
|
|
"${NL}${uni_bullet}nieużywane pliki apt i dziennika" \
|
|
|
|
|
"${NL}${uni_bullet}nieużywane obrazy Dockera" \
|
|
|
|
|
"${NL} ${uni_bullet}kopie zapasowe bazy danych")" \
|
|
|
|
|
"${TL}(ta operacja może potrwać od kilku do kilkudziesięciu minut)"
|
|
|
|
|
"${NL}${uni_bullet}nieużywane pliki apt i dziennika" \
|
|
|
|
|
"${NL}${uni_bullet}nieużywane obrazy Dockera" \
|
|
|
|
|
"${NL} ${uni_bullet}kopie zapasowe bazy danych")" \
|
|
|
|
|
"${TL}(ta operacja może potrwać od kilku do kilkudziesięciu minut)"
|
|
|
|
|
if ! [ $? -eq 1 ]; then
|
|
|
|
|
do_cleanup_sys
|
|
|
|
|
do_cleanup_docker
|
|
|
|
@ -1572,7 +1573,7 @@ cleanup_menu() {
|
|
|
|
|
"S)")
|
|
|
|
|
noyesdlg "Posprzątać zasoby systemowe?" "$uni_confirm_del" "$uni_resign" \
|
|
|
|
|
"Czy chcesz usunąć nieużywane pakiety apt i poprzątać dziennik systemowy?" \
|
|
|
|
|
"${TL}(ta operacja może potrwać od kilku do kilkudziesięciu minut)"
|
|
|
|
|
"${TL}(ta operacja może potrwać od kilku do kilkudziesięciu minut)"
|
|
|
|
|
if ! [ $? -eq 1 ]; then
|
|
|
|
|
do_cleanup_sys
|
|
|
|
|
fi
|
|
|
|
@ -1580,7 +1581,7 @@ cleanup_menu() {
|
|
|
|
|
"D)")
|
|
|
|
|
noyesdlg "Posprzątać obrazy Dockera?" "$uni_confirm_del" "$uni_resign" \
|
|
|
|
|
"Czy chcesz usunąć nieużywane obrazy Dockera?" \
|
|
|
|
|
"${TL}(ta operacja może potrwać kilka minut)"
|
|
|
|
|
"${TL}(ta operacja może potrwać kilka minut)"
|
|
|
|
|
if ! [ $? -eq 1 ]; then
|
|
|
|
|
do_cleanup_docker
|
|
|
|
|
fi
|
|
|
|
@ -1606,8 +1607,8 @@ cleanup_menu() {
|
|
|
|
|
update_menu() {
|
|
|
|
|
while :; do
|
|
|
|
|
local CHOICE=$(whiptail --title "Aktualizuj" --menu "\n" 11 40 4 \
|
|
|
|
|
"S)" "Aktualizuj system" \
|
|
|
|
|
"N)" "Aktualizuj to narzędzie" \
|
|
|
|
|
"S)" "Aktualizuj system" \
|
|
|
|
|
"K)" "Aktualizuj kontenery" \
|
|
|
|
|
"M)" "Powrót do menu" \
|
|
|
|
|
--ok-button="$uni_select" --cancel-button="$uni_back" \
|
|
|
|
@ -1755,115 +1756,153 @@ get_domain_status() {
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
send_diagnostics() {
|
|
|
|
|
LOG_KEY=$(<$LOG_ENCRYPTION_KEY_FILE)
|
|
|
|
|
gather_diagnostics() {
|
|
|
|
|
|
|
|
|
|
yesnodlg "Wysyłać diagnostykę?" \
|
|
|
|
|
"$uni_send" "$uni_resign" \
|
|
|
|
|
"Czy chcesz zgromadzić i wysłać sobie mailem dane diagnostyczne?" \
|
|
|
|
|
"\n$(
|
|
|
|
|
pad_multiline \
|
|
|
|
|
"\n${uni_bullet}diagnostyka zawiera logi i informacje o serwerze i usługach" \
|
|
|
|
|
"\n${uni_bullet}wysyłka na e-mail na który zamówiono serwer Mikr.us" \
|
|
|
|
|
"\n${uni_bullet}dane będą skompresowane i zaszyfrowane" \
|
|
|
|
|
"\n${uni_bullet}maila prześlij dalej do zaufanej osoby wspierającej" \
|
|
|
|
|
"\n${uni_bullet_pad}(z którą to wcześniej zaplanowano i uzgodniono!!!)" \
|
|
|
|
|
"\n${uni_bullet}hasło przekaż INNĄ DROGĄ (komunikatorem, SMSem, osobiście)" \
|
|
|
|
|
"\n\n${uni_bullet_pad}Hasło do logów: $LOG_KEY"
|
|
|
|
|
)"
|
|
|
|
|
local maxNsLogs=$1
|
|
|
|
|
local maxDbLogs=$2
|
|
|
|
|
local curr_time=$3
|
|
|
|
|
|
|
|
|
|
if ! [ $? -eq 1 ]; then
|
|
|
|
|
diagnosticsSizeOk=0
|
|
|
|
|
|
|
|
|
|
ohai "Zbieranie diagnostyki"
|
|
|
|
|
ohai "Zbieranie diagnostyki"
|
|
|
|
|
|
|
|
|
|
local domain=$(get_td_domain)
|
|
|
|
|
local curr_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
|
|
|
local ns_tag=$(dotenv-tool -r get -f $ENV_FILE_DEP "NS_NIGHTSCOUT_TAG")
|
|
|
|
|
local mikrus_h=$(hostname)
|
|
|
|
|
local domain=$(get_td_domain)
|
|
|
|
|
local ns_tag=$(dotenv-tool -r get -f $ENV_FILE_DEP "NS_NIGHTSCOUT_TAG")
|
|
|
|
|
local mikrus_h=$(hostname)
|
|
|
|
|
|
|
|
|
|
local LOG_DIVIDER="======================================================="
|
|
|
|
|
local LOG_DIVIDER="======================================================="
|
|
|
|
|
|
|
|
|
|
rm -f $SUPPORT_LOG
|
|
|
|
|
rm -f "$SUPPORT_LOG.gz"
|
|
|
|
|
rm -f "$SUPPORT_LOG.gz.asc"
|
|
|
|
|
rm -f $SUPPORT_LOG
|
|
|
|
|
rm -f "$SUPPORT_LOG.gz"
|
|
|
|
|
rm -f "$SUPPORT_LOG.gz.asc"
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
echo "Dane diagnostyczne zebrane $curr_time"
|
|
|
|
|
echo " serwer : $mikrus_h"
|
|
|
|
|
echo " domena : $domain"
|
|
|
|
|
echo " wersja NS : $ns_tag"
|
|
|
|
|
} >$SUPPORT_LOG
|
|
|
|
|
{
|
|
|
|
|
echo "Dane diagnostyczne zebrane $curr_time"
|
|
|
|
|
echo " serwer : $mikrus_h"
|
|
|
|
|
echo " domena : $domain"
|
|
|
|
|
echo " wersja NS : $ns_tag"
|
|
|
|
|
} >$SUPPORT_LOG
|
|
|
|
|
|
|
|
|
|
ohai "Zbieranie statusu usług"
|
|
|
|
|
|
|
|
|
|
ohai "Zbieranie statusu usług"
|
|
|
|
|
{
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Statusy usług"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Nightscout: $(get_container_status 'ns-server')"
|
|
|
|
|
echo " Baza danych: $(get_container_status 'ns-database')"
|
|
|
|
|
echo " Backup: $(get_container_status 'ns-backup')"
|
|
|
|
|
echo " Watchdog: $(get_watchdog_status "$(get_watchdog_status_code)" "$uni_watchdog_ok")"
|
|
|
|
|
} >>$SUPPORT_LOG
|
|
|
|
|
|
|
|
|
|
local spaceInfo=$(get_space_info)
|
|
|
|
|
local remainingTxt=$(echo "$spaceInfo" | awk '{print $3}' | numfmt --to iec-i --suffix=B)
|
|
|
|
|
local totalTxt=$(echo "$spaceInfo" | awk '{print $2}' | numfmt --to iec-i --suffix=B)
|
|
|
|
|
local percTxt=$(echo "$spaceInfo" | awk '{print $4}')
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Miejsce na dysku"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Dostępne: ${remainingTxt}"
|
|
|
|
|
echo " Zajęte: ${percTxt} (z ${totalTxt})"
|
|
|
|
|
} >>$SUPPORT_LOG
|
|
|
|
|
|
|
|
|
|
ohai "Zbieranie logów watchdoga"
|
|
|
|
|
|
|
|
|
|
if [[ -f $WATCHDOG_LOG_FILE ]]; then
|
|
|
|
|
{
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Statusy usług"
|
|
|
|
|
echo " Watchdog log"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Nightscout: $(get_container_status 'ns-server')"
|
|
|
|
|
echo " Baza danych: $(get_container_status 'ns-database')"
|
|
|
|
|
echo " Backup: $(get_container_status 'ns-backup')"
|
|
|
|
|
echo " Watchdog: $(get_watchdog_status "$(get_watchdog_status_code)" "$uni_watchdog_ok")"
|
|
|
|
|
timeout -k 15 10 cat $WATCHDOG_LOG_FILE
|
|
|
|
|
} >>$SUPPORT_LOG
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ohai "Zbieranie informacji o zasobach"
|
|
|
|
|
local spaceInfo=$(get_space_info)
|
|
|
|
|
local remainingTxt=$(echo "$spaceInfo" | awk '{print $3}' | numfmt --to iec-i --suffix=B)
|
|
|
|
|
local totalTxt=$(echo "$spaceInfo" | awk '{print $2}' | numfmt --to iec-i --suffix=B)
|
|
|
|
|
local percTxt=$(echo "$spaceInfo" | awk '{print $4}')
|
|
|
|
|
|
|
|
|
|
if [[ -f $WATCHDOG_FAILURES_FILE ]]; then
|
|
|
|
|
{
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Miejsce na dysku"
|
|
|
|
|
echo " Watchdog failures log"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Dostępne: ${remainingTxt}"
|
|
|
|
|
echo " Zajęte: ${percTxt} (z ${totalTxt})"
|
|
|
|
|
timeout -k 15 10 cat $WATCHDOG_FAILURES_FILE
|
|
|
|
|
} >>$SUPPORT_LOG
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ohai "Zbieranie logów watchdoga"
|
|
|
|
|
ohai "Zbieranie logów usług"
|
|
|
|
|
|
|
|
|
|
if [[ -f $WATCHDOG_LOG_FILE ]]; then
|
|
|
|
|
{
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Watchdog log"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
timeout -k 15 10 cat $WATCHDOG_LOG_FILE
|
|
|
|
|
} >>$SUPPORT_LOG
|
|
|
|
|
fi
|
|
|
|
|
{
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Nightscout log"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
timeout -k 15 10 docker logs ns-server --tail "$maxNsLogs" >>$SUPPORT_LOG 2>&1
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " MongoDB database log"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
timeout -k 15 10 docker logs ns-database --tail "$maxDbLogs" >>$SUPPORT_LOG 2>&1
|
|
|
|
|
} >>$SUPPORT_LOG
|
|
|
|
|
|
|
|
|
|
if [[ -f $WATCHDOG_FAILURES_FILE ]]; then
|
|
|
|
|
{
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Watchdog failures log"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
timeout -k 15 10 cat $WATCHDOG_FAILURES_FILE
|
|
|
|
|
} >>$SUPPORT_LOG
|
|
|
|
|
fi
|
|
|
|
|
ohai "Kompresowanie i szyfrowanie raportu"
|
|
|
|
|
|
|
|
|
|
ohai "Zbieranie logów usług"
|
|
|
|
|
gzip -9 $SUPPORT_LOG
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " Nightscout log"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
timeout -k 15 10 docker logs ns-server --tail 500 >>$SUPPORT_LOG 2>&1
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
echo " MongoDB database log"
|
|
|
|
|
echo "$LOG_DIVIDER"
|
|
|
|
|
timeout -k 15 10 docker logs ns-database --tail 100 >>$SUPPORT_LOG 2>&1
|
|
|
|
|
} >>$SUPPORT_LOG
|
|
|
|
|
local logkey=$(<$LOG_ENCRYPTION_KEY_FILE)
|
|
|
|
|
|
|
|
|
|
gpg --passphrase "$logkey" --batch --quiet --yes -a -c "$SUPPORT_LOG.gz"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
retry_diagnostics() {
|
|
|
|
|
local maxNsLogs=$1
|
|
|
|
|
local maxDbLogs=$2
|
|
|
|
|
local curr_time=$3
|
|
|
|
|
|
|
|
|
|
if ((diagnosticsSizeOk == 0)); then
|
|
|
|
|
|
|
|
|
|
ohai "Sprawdzanie rozmiaru raportu"
|
|
|
|
|
|
|
|
|
|
local logSize=$(stat --printf="%s" "$SUPPORT_LOG.gz.asc")
|
|
|
|
|
local allowedTxt=$(echo "18000" | numfmt --to si --suffix=B)
|
|
|
|
|
local currentTxt=$(echo "$logSize" | numfmt --to si --suffix=B)
|
|
|
|
|
|
|
|
|
|
if ((logSize > 18000)); then
|
|
|
|
|
msgerr "Zebrana diagnostyka jest zbyt duża do wysłania (${currentTxt})"
|
|
|
|
|
ohai "Spróbuję zebrać mniej danych aby zmieścić się w limicie (${allowedTxt})"
|
|
|
|
|
gather_diagnostics "$maxNsLogs" "$maxDbLogs" "$curr_time"
|
|
|
|
|
else
|
|
|
|
|
diagnosticsSizeOk=1
|
|
|
|
|
msgok "Raport ma rozmiar ${currentTxt} i mieści się w limicie ${allowedTxt} dla usługi pusher-a"
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
send_diagnostics() {
|
|
|
|
|
LOG_KEY=$(<$LOG_ENCRYPTION_KEY_FILE)
|
|
|
|
|
|
|
|
|
|
ohai "Kompresowanie i szyfrowanie raportu"
|
|
|
|
|
yesnodlg "Wysyłać diagnostykę?" \
|
|
|
|
|
"$uni_send" "$uni_resign" \
|
|
|
|
|
"Czy chcesz zgromadzić i wysłać sobie mailem dane diagnostyczne?" \
|
|
|
|
|
"\n$(
|
|
|
|
|
pad_multiline \
|
|
|
|
|
"\n${uni_bullet}diagnostyka zawiera logi i informacje o serwerze i usługach" \
|
|
|
|
|
"\n${uni_bullet}wysyłka na e-mail na który zamówiono serwer Mikr.us" \
|
|
|
|
|
"\n${uni_bullet}dane będą skompresowane i zaszyfrowane" \
|
|
|
|
|
"\n${uni_bullet}maila prześlij dalej do zaufanej osoby wspierającej" \
|
|
|
|
|
"\n${uni_bullet_pad}(z którą to wcześniej zaplanowano i uzgodniono!!!)" \
|
|
|
|
|
"\n${uni_bullet}hasło przekaż INNĄ DROGĄ (komunikatorem, SMSem, osobiście)" \
|
|
|
|
|
"\n\n${uni_bullet_pad}Hasło do logów: $LOG_KEY"
|
|
|
|
|
)"
|
|
|
|
|
|
|
|
|
|
gzip $SUPPORT_LOG
|
|
|
|
|
if ! [ $? -eq 1 ]; then
|
|
|
|
|
|
|
|
|
|
local logkey=$(<$LOG_ENCRYPTION_KEY_FILE)
|
|
|
|
|
local curr_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
|
|
|
|
|
|
|
|
gpg --passphrase "$logkey" --batch --quiet --yes -a -c "$SUPPORT_LOG.gz"
|
|
|
|
|
gather_diagnostics 500 100 "$curr_time"
|
|
|
|
|
retry_diagnostics 200 50 "$curr_time"
|
|
|
|
|
retry_diagnostics 100 50 "$curr_time"
|
|
|
|
|
retry_diagnostics 50 50 "$curr_time"
|
|
|
|
|
|
|
|
|
|
ohai "Wysyłanie maila"
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
local sentStatus=$({
|
|
|
|
|
echo "Ta wiadomość zawiera poufne dane diagnostyczne Twojego serwera Nightscout."
|
|
|
|
|
echo "Mogą one pomóc Tobie lub zaufanej osobie w identyfikacji problemu."
|
|
|
|
|
echo " "
|
|
|
|
@ -1877,12 +1916,21 @@ send_diagnostics() {
|
|
|
|
|
echo " "
|
|
|
|
|
echo " "
|
|
|
|
|
cat "$SUPPORT_LOG.gz.asc"
|
|
|
|
|
} | pusher "Diagnostyka_serwera_Nightscout_-_$curr_time"
|
|
|
|
|
|
|
|
|
|
okdlg "Diagnostyka wysłana" \
|
|
|
|
|
"Sprawdź swoją skrzynkę pocztową,\n" \
|
|
|
|
|
"otrzymanego maila przekaż zaufanemu wspierającemu.\n\n" \
|
|
|
|
|
"Komunikatorem lub SMS przekaż hasło do logów:\n\n$LOG_KEY"
|
|
|
|
|
} | pusher "Diagnostyka_serwera_Nightscout_-_$curr_time")
|
|
|
|
|
|
|
|
|
|
local regexEm='Email sent'
|
|
|
|
|
if [[ "$sentStatus" =~ $regexEm ]]; then
|
|
|
|
|
okdlg "Diagnostyka wysłana" \
|
|
|
|
|
"Sprawdź swoją skrzynkę pocztową,\n" \
|
|
|
|
|
"otrzymanego maila przekaż zaufanemu wspierającemu.\n\n" \
|
|
|
|
|
"Komunikatorem lub SMS przekaż hasło do logów:\n\n$LOG_KEY"
|
|
|
|
|
else
|
|
|
|
|
msgerr "Błąd podczas wysyłki maila: $sentStatus"
|
|
|
|
|
okdlg "Błąd wysyłki maila" \
|
|
|
|
|
"Nieststy nie udało się wysłać diagnostyki" \
|
|
|
|
|
"${NL}zgłoś poniższy błąd twórcom narzędzia (na grupie Technologie Diabetyka)" \
|
|
|
|
|
"${TL}$sentStatus"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|