Bash-скрипт для полной диагностики Linux системы
Когда ты администрируешь несколько серверов, или просто хочешь быстро понять состояние системы - обычно приходится выполнять десяток команд, анализировать логи, смотреть на метрики. Но что если автоматизировать это всё одним скриптом?
Сегодня я покажу вам универсальный bash-скрипт, который проводит полную диагностику Linux системы и формирует понятный отчет прямо в консоли. Скрипт работает на Ubuntu, Debian, CentOS, RHEL, Fedora, Arch и других дистрибутивах.
Быстрый старт
Хотите попробовать прямо сейчас? Запустите скрипт одной командой:
# Полная проверка (рекомендуется)
curl -s https://gist.githubusercontent.com/itcaat/45edeaf15f2d508bee766daa9a97400c/raw/linux-diag-script.sh | sudo bash
⚠️ Важно для безопасности:
- Всегда проверяйте содержимое скриптов перед запуском через
curl | bash - Просмотрите код скрипта: https://gist.github.com/itcaat/45edeaf15f2d508bee766daa9a97400c
- Скрипт только читает данные и не вносит изменений в систему
- Для дополнительной безопасности используйте локальную установку (Способ 2 ниже)
Что проверяет скрипт
Скрипт выполняет комплексную проверку по следующим категориям:
- Системная информация - версия ОС, ядро, архитектура, uptime, внешний IP
- Аппаратные ресурсы - CPU, RAM, Swap, температура процессоров
- Дисковое пространство - занятое место, inodes, SMART статус
- Тест скорости дисков - скорость записи/чтения (100MB тест)
- Сетевые интерфейсы - статус, ошибки, активные соединения
- Тест сети - ping до шлюза, ya.ru и 8.8.8.8 (по 10 пакетов каждый), скорость интернета
- Процессы - топ по CPU и памяти, zombie процессы
- Системные логи - критические ошибки, OOM события, kernel warnings
- Системные службы - проверка упавших служб
- Безопасность - неудачные входы, активные SSH сессии
- Docker - статус контейнеров и их ресурсы
- Telegram уведомления - автоматическая отправка при обнаружении проблем
Как использовать
Самый простой способ - запустить скрипт прямо из GitHub Gist:
# Полная проверка с правами root
curl -s https://gist.githubusercontent.com/itcaat/45edeaf15f2d508bee766daa9a97400c/raw/linux-diag-script.sh | sudo bash
Сохранение отчета в файл
Чтобы сохранить результат в файл для последующего анализа:
# При запуске через curl
curl -s https://gist.githubusercontent.com/itcaat/45edeaf15f2d508bee766daa9a97400c/raw/linux-diag-script.sh | sudo bash | tee diagnostic_$(date +%Y%m%d_%H%M%S).txt
# При локальном запуске
sudo ./linux-diag.sh | tee diagnostic_$(date +%Y%m%d_%H%M%S).txt
Что считается проблемой
Критические проблемы:
- Load Average превышает количество ядер CPU в 2 раза
- Использование памяти > 90%
- Температура процессора > 80°C
- Диск заполнен > 90%
- Inodes заполнены > 90%
- SMART статус диска: FAILED
- Нет подключения к интернету
- Есть упавшие системные службы
Предупреждения:
- Load Average превышает количество ядер CPU
- Использование памяти > 80%
- Использование swap > 50%
- Диск заполнен > 80%
- Inodes заполнены > 80%
- Обнаружены zombie процессы
- Большое количество ошибок на сетевых интерфейсах
- Много активных SSH сессий (> 5)
В финальном отчете:
В начале итоговой сводки выводится краткая информация о железе (CPU, RAM, Disk, Load Average, Uptime), а также список секций с обнаруженными проблемами. Это позволяет сразу видеть конфигурацию системы и быстро определить проблемные области.
Кастомизация скрипта
Изменение порогов
Вы можете изменить пороговые значения в соответствующих секциях. Например, для памяти:
# Вместо 90% и 80% используйте свои значения
if [ "$MEM_USED_PERCENT" -gt 95 ]; then
print_status "crit" "Использование памяти: ${MEM_USED_PERCENT}% (критично!)"
elif [ "$MEM_USED_PERCENT" -gt 85 ]; then
print_status "warn" "Использование памяти: ${MEM_USED_PERCENT}%"
Exit коды для автоматизации
Скрипт возвращает разные exit коды в зависимости от результата проверки, что позволяет использовать его в автоматизированных системах мониторинга:
| Exit Code | Значение | Описание |
|---|---|---|
| 0 | Успех | Система в отличном состоянии, проблем не обнаружено |
| 1 | Предупреждение | Обнаружены предупреждения, требуется внимание |
| 2 | Критично | Обнаружены критические проблемы, требуется немедленное вмешательство |
Уведомления в Telegram
Скрипт автоматически отправляет уведомления в Telegram при обнаружении проблем, если настроены переменные окружения. В принципе единственное для чего может понадобиться такая интеграция - это периодическая проверка с отправкой отчета в случае проблем.
Настройка Telegram бота
Шаг 1: Создайте бота
- Найдите @BotFather в Telegram
- Отправьте команду
/newbot - Следуйте инструкциям и получите токен бота (например:
123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
Шаг 2: Получите Chat ID
- Отправьте сообщение вашему боту
- Откройте в браузере:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - Найдите
"chat":{"id":- это ваш Chat ID (например:987654321)
Шаг 3: Скачайте скрипт и протестируйте его
curl -s https://gist.githubusercontent.com/itcaat/45edeaf15f2d508bee766daa9a97400c/raw/linux-diag-script.sh -o /usr/local/bin/linux-diag.sh
export TELEGRAM_BOT_TOKEN="123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
export TELEGRAM_CHAT_ID="987654321"
sudo -E /usr/local/bin/linux-diag.sh
Шаг 4: Добавьте в cron
sudo crontab -e
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=987654321
# Проверка каждые 6 часов
0 */6 * * * /usr/local/bin/linux-diag.sh
Что отправляется
При обнаружении проблем скрипт отправит:
Сообщение с кратким описанием:
- Уровень проблемы (⚠️ Warnings или 🚨 Critical)
- Имя хоста
- Количество критических проблем и предупреждений
- Список проблемных секций
Файл с полным отчетом диагностики
Если проблем нет - уведомления не отправляются (экономия сообщений).
Заключение
Этот скрипт - отличный инструмент для быстрой диагностики состояния Linux системы. Он помогает:
- Сэкономить время - вместо десятка команд один скрипт
- Не упустить детали - проверяет все критичные компоненты системы
- Быстро реагировать - понятная цветовая индикация проблем
- Оценить производительность - тесты скорости дисков и интернета
- Автоматизировать мониторинг - легко настроить в cron с уведомлениями в Telegram
- Документировать состояние - сохранение отчетов для анализа
Скрипт полностью бесплатный и open-source. Актуальная версия всегда доступна на GitHub Gist. Вы можете модифицировать его под свои нужды, добавлять новые проверки или интегрировать с вашими системами мониторинга.
Полезные ссылки:
- Скрипт на GitHub Gist - актуальная версия скрипта
- Документация по systemd
- Руководство по bash scripting
- lm-sensors documentation
И самое главное - скрипт не заменяет полноценного мониторинга и не стоит его использовать как решение, которое его заменит. Но он вполне сгоднится для некритичных и “домашних” серваков.