Типичный Сисадмин
1.25K subscribers
364 photos
43 videos
201 links
⚙️Информация для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Квоты в Kubernetes: очевидные, менее очевидные и совсем не очевидные

Разберемся как работают квоты в Kubernetes. Там есть немало граблей. Чем квоты хороши, что у них под капотом, в каких задачах используются и почему нужны даже в среде single-tenant?

https://habr.com/ru/companies/oleg-bunin/articles/790112/
System Design 101

О сложных системах простыми словами

В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание.

https://habr.com/ru/articles/770564/
2
Создаем логические тома LVM на Linux

Система хранения данных – один из тех кардинальных компонентов, без которых ваш сервер не может обойтись, и поэтому требует к себе пристального внимания, несмотря ни на что.

Это краткое руководство по внедрению LVM на вашем linux-сервере или рабочей станции.

https://telegra.ph/Sozdaem-logicheskie-toma-LVM-na-Linux-10-09
👍2
Как удалить файл с именем -rf?

Удаление файла с именем -rf в UNIX/Linux может быть немного сложным, потому что -rf может быть воспринято как опция команды rm. Чтобы удалить файл с таким именем, можно использовать один из следующих способов:

1. Использовать путь к файлу
Укажите полный или относительный путь к файлу, используя ./ перед именем файла:

rm ./-rf

Это укажет командной строке, что -rf — это имя файла, а не параметр.

2. Использовать параметр `--`
Параметр -- сообщает команде rm, что все последующие аргументы следует трактовать как имена файлов, даже если они начинаются с -.

rm -- -rf


Оба этих метода помогут удалить файл с именем -rf безопасно.
👍2
Шпаргалка по ip

Утилита ip — это мощный инструмент для управления сетевыми интерфейсами и маршрутизацией в Linux, который заменяет старую команду ifconfig.

🟢Основные команды

1. Посмотреть информацию об интерфейсах:

ip addr

Отображает информацию обо всех интерфейсах, включая IP-адреса.

2. Посмотреть информацию только об одном интерфейсе:

ip addr show eth0

Показывает информацию только для интерфейса eth0.

3. Активировать интерфейс:

ip link set eth0 up

Включает интерфейс eth0.

4. Отключить интерфейс:

ip link set eth0 down

Отключает интерфейс eth0.

🟢Конфигурация IP-адресов

5. Назначить IP-адрес интерфейсу:

ip addr add 192.168.1.10/24 dev eth0

Назначает IP-адрес 192.168.1.10 с маской 255.255.255.0 (или /24`) интерфейсу `eth0.

6. Удалить IP-адрес с интерфейса:

ip addr del 192.168.1.10/24 dev eth0

Удаляет IP-адрес 192.168.1.10 с интерфейса eth0.

🟢Маршруты и таблицы маршрутизации

7. Просмотр маршрутов:

ip route

Показывает текущие маршруты в системе.

8. Добавить маршрут:

ip route add 192.168.2.0/24 via 192.168.1.1

Добавляет маршрут к сети 192.168.2.0/24 через шлюз 192.168.1.1.

9. Удалить маршрут:

ip route del 192.168.2.0/24

Удаляет маршрут к сети 192.168.2.0/24.

🟢Прочие функции

10. Посмотреть статистику интерфейсов:

ip -s link

Показывает статистику по интерфейсам (переданные и полученные пакеты, ошибки и т.д.).

11. Назначить MAC-адрес интерфейсу:

ip link set dev eth0 address 00:11:22:33:44:55

Устанавливает MAC-адрес для интерфейса eth0.

12. Показать состояние интерфейсов:

ip link show

Отображает состояние всех интерфейсов, включая их статус (up/down).

13. Показать статистику маршрутизации:

ip -s route

Показывает статистику по маршрутам, включая количество использованных пакетов.


- ip заменяет старые команды, такие как ifconfig, route, и netstat, предоставляя более гибкий и мощный интерфейс для управления сетевыми настройками.
- Использование ip вместо ifconfig рекомендуется в большинстве современных Linux-дистрибутивов, так как это более современная и функциональная утилита.

Дополнительную информацию можно получить с помощью команды:

man ip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Бэкап и очистка журналов Event Log в Windows, размер которых превышает определённое значение

Такой скрипт проверит размер файлов журнала (Event Log) и если обнаружит, что размер одного из них превышает указанное значение, то создаст его резервную копию, а затем очистит журнал.



strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Backup, Security)}!\\" _
& strComputer & "\root\cimv2")

Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile")

For Each objLogfile in colLogFiles
If objLogFile.FileSize > 100000 Then
strBackupLog = objLogFile.BackupEventLog _
("c:\scripts\" & objLogFile.LogFileName & ".evt")
objLogFile.ClearEventLog()
End If
Next
2
Что такое inode в Linux?

Индексный дескриптор в файловой системе, который хранит метаданные о файлах, за исключением имени файла. В дескрипторе хранится: длина файла в байтах, id устройства с файлом, id пользователя владельца файла, id группы файла, режим файла (права доступа), timestamp последнего изменения файла, счётчик хардлинков, указатели на блоки файла.
👍3
Haskell Dockerfile Linter

Интеллектуальный распаковщик Dockerfile, помогающий создавать лучшие образы Docker. Линтер разбирает Docker-файл на AST и выполняет правила поверх AST. Он опирается на поддержку ShellCheck для проверки Bash-кода внутри инструкций RUN.

https://github.com/hadolint/hadolint
👍2
Как защитить сервер Linux

Ограничьте, кто может использовать sudo


Почему
sudo позволяет учетным записям выполнять команды от имени других учетных записей, включая root. Мы хотим убедиться, что только нужные нам учетные записи могут использовать sudo.

Цели
привилегии sudo ограничены теми, кто входит в указанную нами группу.

Примечания
Возможно, ваша сборка уже сделала это, или у вас уже есть специальная группа, предназначенная для этой цели, поэтому сначала проверьте.
Debian создаёт группу sudo. Чтобы просмотреть пользователей, которые входят в эту группу (таким образом, имеют привилегии sudo):

cat /etc/group | grep "sudo"


Шаги

1 - Создайте группу:
sudo groupadd sudousers

2 - Добавьте учетную запись(и) в группу:
sudo usermod -a -G sudousers user1
sudo usermod -a -G sudousers user2
sudo usermod -a -G sudousers ...


Вам нужно будет сделать это для каждой учетной записи на вашем сервере, которой нужны привилегии sudo.

3 - Создайте резервную копию файла конфигурации sudo /etc/sudoers:
sudo cp --archive /etc/sudoers /etc/sudoers-COPY-$(date +"%Y%m%d%H%M%S")

4 - Отредактируйте файл конфигурации sudo /etc/sudoers:
sudo visudo

5 - Скажите sudo, чтобы только пользователи из группы sudousers могли использовать sudo, добавив эту строку, если ее еще нет:
%sudousers ALL=(ALL:ALL) ALL
👍32
Используем библиотеку psutil для Python, что бы получить исчерпывающую информацию о состоянии CPU и системы в целом.



import psutil
import time
from tabulate import tabulate

def get_cpu_usage():

return psutil.cpu_percent(interval=1)

def get_memory_usage():

memory = psutil.virtual_memory()
return {
'Всего': f'{memory.total / (1024**3):.2f} ГБ',
'Используется': f'{memory.used / (1024**3):.2f} ГБ',
'Свободно': f'{memory.available / (1024**3):.2f} ГБ',
'Процент использования': f'{memory.percent}%'
}

def get_top_processes(n=10):

processes = []
for proc in sorted(psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']),
key=lambda x: x.info['cpu_percent'],
reverse=True)[:n]:
try:
processes.append([
proc.info['pid'],
proc.info['name'],
f"{proc.info['cpu_percent']:.2f}%",
f"{proc.info['memory_percent']:.2f}%"
])
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass

return processes

def main():

print("=== Мониторинг системы ===")


print(f"\nЗагрузка CPU: {get_cpu_usage()}%")


print("\nИспользование памяти:")
for key, value in get_memory_usage().items():
print(f"{key}: {value}")


print("\nТоп процессов по использованию CPU:")
top_processes = get_top_processes()
print(tabulate(top_processes,
headers=['PID', 'Название', 'CPU %', 'Память %'],
tablefmt='grid'))

if __name__ == '__main__':
main()
👍2
Autobase

Это инструмент, разработанный для автоматизации развёртывания и управления PostgreSQL-кластерами с использованием Ansible. Он поддерживает широкий набор функций, включая настройку репликации, автоматизацию резервного копирования с помощью инструментов, таких как pgBackRest и WAL-G, мониторинг состояния кластеров, а также настройку высокодоступной инфраструктуры (HA).

Проект упрощает настройку PostgreSQL и снижает вероятность ошибок, обеспечивая удобные плейбуки для типичных задач. Его можно использовать как для новых установок, так и для работы с существующими конфигурациями.

https://github.com/vitabaks/autobase
👍1
YouPlot — это утилита командной строки для визуализации данных. Она поддерживает построение графиков без зависимости от Python или сложных библиотек. Инструмент прост в использовании, легковесен и подходит для быстрого создания графиков прямо из терминала. Поддерживает разные типы диаграмм, включая линейные, столбчатые и точечные.

https://github.com/red-data-tools/YouPlot
Мониторинг и оптимизация дискового пространства в Linux


Мониторинг использования:

• Проверить свободное место:

df -h


• Размер директории:

du -sh /путь/к/директории


• Топ-10 крупных папок:

du -ah /путь | sort -rh | head -n 10


• Найти большие файлы (>1ГБ):

find / -type f -size +1G 2>/dev/null



Очистка места:

• Удалить старые логи:

find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;


• Очистить кэш:

sudo apt-get clean
sudo dnf clean all


• Удалить временные файлы:

sudo rm -rf /tmp/* /var/tmp/*


• Удалить старые ядра:

sudo apt-get autoremove --purge



Автоматизация:

• Добавить в crontab задачу для регулярной очистки логов:

0 3 * * 7 find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;



Оптимизация:

• Перенос крупных папок:

mv /большая/папка /mnt/новый_диск
ln -s /mnt/новый_диск /большая/папка


• Сжатие логов:

gzip /var/log/*.log


• Удаление дублированных файлов:

fdupes -r /путь



Полезные утилиты:

• ncdu — анализ диска:

sudo apt install ncdu && ncdu /


• iotop — мониторинг операций с файлами:

iotop


• fslint — поиск мусорных файлов:

sudo apt install fslint



Мониторинг в реальном времени:

• Свободное место:

df -h


• Загрузка диска процессами:

iotop


• Отслеживание изменений в директории:

inotifywait -m /путь
👍2
Шпаргалка по скриптам Bash

Основы написания скриптов на Bash
Условные операторы
Циклы Bash
Арифметические операторы
Арифметические условные операторы
Операторы сравнения строк
👍3