summaryrefslogtreecommitdiff
path: root/LINUX/SERVER - мониторинг.md
diff options
context:
space:
mode:
Diffstat (limited to 'LINUX/SERVER - мониторинг.md')
-rw-r--r--LINUX/SERVER - мониторинг.md280
1 files changed, 280 insertions, 0 deletions
diff --git a/LINUX/SERVER - мониторинг.md b/LINUX/SERVER - мониторинг.md
new file mode 100644
index 0000000..6875dd6
--- /dev/null
+++ b/LINUX/SERVER - мониторинг.md
@@ -0,0 +1,280 @@
+```sh
+# Топ процессов по загрузке CPU
+ps -eo pid,comm,%cpu --sort=-%cpu | head
+
+# Запуск интерактивного мониторинга
+top
+htop  # Более удобный интерфейс (если установлен)
+
+# Убить процесс с высокой нагрузкой по PID
+kill -9 <PID>
+
+# Ограничить нагрузку от процесса (через nice)
+nice -n 10 командa
+
+🟢 ps + sort быстро выявляют топовые процессы
+🟢 top и htop позволяют следить в реальном времени
+🟢 nice — задаёт приоритет и снижает нагрузку
+
+#=================================================
+# Просмотр истории команд пользователя  
+history
+
+# Узнаем кто зарегистрирован в системе и сколько времени в ней находится:
+who
+
+# список всех пользователей, которые сейчас зарегистрированы в системе:
+users
+
+# Подробная информация о сессиях пользователей  
+w
+
+# когда и сколько времени определенный пользователь находился в системе:
+last user_name
+
+# выдаст информацию о последних пяти входах:
+last -n 5 user_name
+
+# вывод на экран перечня всех пользователей с датами их последнего подключения к системе:
+lastlog
+# удобно контролировать системные записи. У них дата последнего входа должна быть = Never logged in =, потому что под ними нельзя войти в систему (в качестве командной оболочки установлены /bin/false, /dev/null, /sbin/nologin и др.). Если вы заметили, что кто-либо проник в систему через одну из этих учетных записей, то это значит, что хакер использует ее, изменив настройки. Простая замена командной оболочки в файле /etc/passwd может открыть хакеру потайную дверь, и администратор не заметит этой трансформации. Но после выполнения команды lastlog все неявное становится явным. 
+
+# Обращайте внимание на тип подключения и адрес. Если что-то вызывает подозрение, то можно выявить атаку на этапе ее созревания.
+
+# Просмотр логов SSH-подключений  
+sudo cat /var/log/auth.log | grep "ssh"
+
+# определить, какие файлы и какими пользователями открыты в данный момент:
+lsof
+
+# Файлы, открытые определённым пользователем
+lsof -u username
+
+# Определить, кто использует файл
+lsof /path/to/file
+
+# Какие файлы открыты на определённом порту
+sudo lsof -i :80
+
+# Удалённые, но занятые файлы
+lsof | grep deleted
+
+# узнать, какие процессы используют интернет прямо сейчас?
+
+lsof -i -P -n
+
+# Расшифровка:
+# - lsof — список открытых файлов (в Linux всё — файл)
+# -i — показывает сетевые соединения
+# -P — отображает порты в числовом виде (без разрешения имён)
+# -n — не резолвит имена хостов (быстрее)
+
+# Это отличный способ отследить: какие приложения слушают порты, кто подключен к твоему серверу, утечки сетевой активности. Полезно при аудитах, отладке и настройке брандмауэров.
+
+
+# запустить программу на выполнение в фоновом режиме,программа запускается на выполнение, но не блокирует консоль. Да, вы видите вывод на экране, но в любой момент может забрать консоль себе, нажав Enter. Вы можете закрывать консоль, и стартующая программа не прервет свою работу.
+start-olap-server.sh &
+
+# список программ работающих в фоновом режиме
+jobs
+# Число, которое вы видите в квадратных скобках – это номер выполняемой задачи. В фон можно отправить команду нажатием Ctrl+Z. В этом случае команда уходит в фон, но перестает выполняться.
+
+# Псевдонимы
+alias ll="ls -l"
+
+# Перенаправление ввода/вывода
+ls > outfile.txt
+# В результате выполнения этой команды, результат (т.е. содержимое каталога) не будет выведено на экран, а будет сохранено в файл. 
+
+# Если отобразить содержимое файла: 
+cat outfile.txt 
+# То вы увидите то, что должно было быть на экране еще после выполнения той команды. 
+
+# получать параметры из файла. Например, можно выполнить команду:
+cat < infile.txt 
+# Команде cat в качестве параметров будут передано содержимое infile.txt.
+
+# Pipe
+lastlog | sort
+
+# Посмотреть общее время загрузки системы
+systemd-analyze
+
+# Показать список сервисов и их время загрузки
+systemd-analyze blame
+
+# Проверить, какие службы запускаются при старте
+systemctl list-unit-files --state=enabled
+
+# Отключить ненужный сервис
+sudo systemctl disable имя_сервиса
+
+# Установить задержку старта для тяжёлого сервиса
+sudo systemctl edit имя_сервиса
+# В открывшемся файле добавить:
+# [Service]
+# ExecStartPre=/bin/sleep 30
+
+🟢 systemd-analyze показывает время загрузки системы
+🟢 systemctl позволяет отключать или откладывать запуск лишних служб
+🟢 Оптимизация автозагрузки ускоряет старт системы
+
+# Регулярная проверка и настройка автозагрузки особенно важна для серверов и рабочих станций с ограниченными ресурсами.
+
+#==================================================
+# информация о процессоре:
+less /proc/cpuinfo
+lscpu
+lshw
+nproc
+sudo dmidecode -t 4
+
+
+I #==================================================
+# === Изменение имени сервера ===:
+hostnamectl set-hostname hostname
+# перезагрузка не потребуется — новое имя начнет использоваться сразу ???
+# Если, по каким-либо причинам, новое имя не начнет использоваться, вводим:
+systemctl restart systemd-hostnamed
+# Подробнее, статус можно посмотреть командой:
+hostnamectl status
+# Также, можно задать дополнительное для описания имя (прелестное):
+hostnamectl set-hostname "Description Name" --pretty
+
+#==================================================
+# === Диски ===:
+df -h
+du -h
+df -i
+
+lsblk
+smartctl -a /dev/sda
+smartctl -a /dev/nvme1n1
+cat /proc/mdstat
+
+iostat
+iotop
+
+#==================================================
+# === Процессы / память ===:
+top
+uptime
+htop
+
+vmstat
+free -m
+cat /proc/meminfo
+
+ps aux
+kill 123456
+systemctl status nginx
+strace -p 1234567
+
+#==================================================
+# === Сеть ===:
+# Быстрое отображение всех прослушиваемых портов
+ss -tuln
+# Показать процессы, связанные с портами
+ss -tulnp
+# Сканировать локальный хост с помощью nmap
+nmap -sT -p- 127.0.0.1
+# Сканировать удалённый сервер на стандартные порты
+nmap example.com
+🟢 ss — встроенный инструмент, заменяющий netstat
+🟢 nmap — мощный сканер безопасности и сетевых портов
+🟢 Позволяет быстро увидеть, какие порты открыты и кем используются.
+
+ip a
+ifconfig
+netstat -rn
+ip r
+ping 8.8.8.8
+traceroute 8.8.8.8
+mtr 8.8.8.8
+dig vlapa.ru
+dig @8.8.8.8 vlapa.ru
+dig -t mx vlapa.ru
+curl -Lv vlapa.ru
+curl -v telnet://127.0.0.1:22
+curl --unix-socket /var/run/docker.sock http:/images/json
+tcpdump -i any port 9100 -nn
+
+curl ifconfig.me
+
+#==================================================
+# === Логи ===:
+
+cd /var/log
+ls -lah
+tail -f -n50 /var/log/syslog
+ls -lah /var/log/auth.log
+ls -lah /var/log/kern.log
+dmesq -T
+journalctl -xeu nginx
+
+#==================================================
+# === Температура ===:
+sudo apt install lm-sensors
+sudo sensors-detect
+
+watch -n 1 sensors
+watch -d -n 1 sensors
+
+#==================================================
+# === Стресс тест ===:
+sudo apt-get install stress-ng
+# CPU:
+stress-ng --cpu 32 --sequential 8 --timeout 60s --metrics-brief
+#  Memory:
+stress-ng --class memory --sequential 8 --timeout 60s --metrics-brief
+# Disk IO:
+stress-ng --class io --sequential 8 --timeout 60s --metrics-brief
+# File System:
+stress-ng --class filesystem --sequential 8 --timeout 60s --metrics-brief
+# All:
+# Если необходимо провести комплексное стресс-тестирование, можно задействовать работу нескольких основных подсистем вместе одной командой:
+
+stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief
+
+# Эта команда запустит тест для CPU в 4 потока, тест виртуальной памяти с размещением в ней одного гигабайта данных, а также 4 потока для тестирования операций ввода/вывода.
+
+# Что бы запустить тестирование всего «железа», используется команда:
+stress-ng --sequential 0 --timeout 60s --metrics-brief
+
+# Эта команда запустит все тесты. После выполнения результат будет выведен в консоль. Во время выполнения команды сервер не нагружать другой работой.
+
+#==================================================
+# Автоматическое уведомление при высокой загрузке CPU
+
+# Этот скрипт следит за загрузкой процессора и отправляет уведомление, если нагрузка превышает критическое значение. Полезен для серверов и рабочих станций, чтобы избежать перегрева и зависаний.
+
+#!/bin/bash
+# Пороговое значение загрузки CPU в процентах
+THRESHOLD=80
+# Лог-файл
+LOG_FILE="$HOME/cpu_usage.log"
+# Получаем среднюю загрузку CPU
+CPU_LOAD=$(awk '{print $1}' < /proc/loadavg | awk '{print $1*100}')
+if (( ${CPU_LOAD%.*} >= THRESHOLD )); then
+    MESSAGE="⚠️ Высокая загрузка CPU: $CPU_LOAD%"
+    echo "$MESSAGE" | tee -a "$LOG_FILE"
+    notify-send "CPU Alert" "$MESSAGE"
+fi
+
+# Проверяет загрузку процессора по /proc/loadavg.
+# Если нагрузка превышает установленный порог, отправляет уведомление через notify-send.
+# Записывает события в лог-файл для анализа.
+
+# Автоматический мониторинг:
+# Добавьте скрипт в crontab для проверки каждые 5 минут
+
+*/5 * * * * /path/to/script.sh
+
+# Этот скрипт поможет отслеживать пиковые нагрузки и предотвратить зависания системы.
+
+#==================================================
+
+
+
+```
+