summaryrefslogtreecommitdiff
path: root/LINUX/SERVER - мониторинг.md
blob: 6875dd60aa471d8404cca2c2b2539daf064b64b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
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

# Этот скрипт поможет отслеживать пиковые нагрузки и предотвратить зависания системы.

#==================================================



```