...

Пример адаптации скрипта по сбору логов системы ELMA365 в kubernetes

Тема в разделе "ELMA365 On-Premises", создана пользователем kroshikhin, 22 авг 2023.

  1. kroshikhin

    kroshikhin Участник

    Входные данные:
    1. Имеем систему ELMA365 on-premises, установленную в kubernetes-кластере (далее k8s) в любом его проявлении
    2. Необходимо собрать логи, для того, чтобы выявить ошибки или нагруженные места k8s либо самой системы.
  2. kroshikhin

    kroshikhin Участник

    Решение:
    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 -
    "\n=========\n\n# $i\n"
        
    eval $i
      done
    }
    toServer() {
      
    diagnostic curl -X POST --data-binary @- -'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 -"Information saved to file ${FILENAME}"
    }
    echo -
    "\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 -"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