Решение:
1. Берем исходный скрипт вендора для сбора диагностической информации: https://elma365.com/ru/help/platform/diagnostic-info.html
2. Адаптируем его под имеющийся k8s (добавляя нужные нам команды/убирая ненужные).
В данном случае это k8s Deckhouse с системой ELMA365, установленной в нем, в неймспейсе -n elma365.
В конечном итоге получаем файл со скриптом примерно такого вида:
Код:
#!/usr/bin/env bash
export PATH="$PATH:/snap/bin"
COMMANDS=(
"hostname"
"hostname -I"
"uname -a"
"cat /etc/os-release"
"free -h"
"lscpu"
"df -x overlay -x tmpfs"
"cat /etc/resolv.conf"
"ufw status"
"netstat -nlptu"
"ip route"
"kubectl get all -A"
"kubectl -n elma365 logs -l tier=elma365 --all-containers | grep '\"fatal\"' "
"kubectl -n elma365 logs -l tier=elma365 --all-containers | grep '\"error\"' "
"kubectl get all -A | grep dns"
"kubectl logs -l k8s-app=kube-dns -n kube-system -c coredns"
"kubectl get events --all-namespaces"
"kubectl get nodes -o wide"
"kubectl top nodes | sort -k 3"
"kubectl describe nodes"
"kubectl get pods -n elma365 -o wide"
"kubectl top pods -n elma365 | sort -k 3"
"kubectl describe pods -A"
)
diagnostic() {
for i in "${COMMANDS[@]}"; do
echo -e "\n=========\n\n# $i\n"
eval $i
done
}
toServer() {
diagnostic | curl -X POST --data-binary @- -H 'Authorization:QioZke4_Ijdp' https://nc.elma365.tech
}
toFile() {
DATE_WITH_TIME=`date "+%Y%m%d-%H%M%S"`
FILENAME=$(pwd)/elma365-diagnostic-${DATE_WITH_TIME}.log
diagnostic > $FILENAME
echo -e "Information saved to file ${FILENAME}"
}
echo -e "\e[93mThis script collect diagnostic information and save it to file or upload to ELMA365 server and generate random link for access to it\e[39m"
echo -e "If you want to upload diagnostic information to server enter S key. For saving to file enter F key"
read -n 1 sf
case $sf in
[Ss]* ) toServer;;
[Ff]* ) toFile;;
* ) echo "exit";;
esac
ЗЫ: Можете дополнить массив “COMMANDS” в комментариях собственными командами, которые вы считаете полезными.
Последнее редактирование: 13 ноя 2023