Linux Skill - Освой Linux c нуля до DevOps – Telegram
Linux Skill - Освой Linux c нуля до DevOps
11.2K subscribers
54 photos
103 videos
482 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

📩 По всем вопросам: @chorapov

РКН https://vk.cc/cMUwm4
Download Telegram
🎯 Почему твой Nmap работает медленно: трюки ускорения

Эй, сканер сетей!

Устал ждать, пока Nmap просканирует сеть? Я тоже постоянно забываю нужные ключи и лезу в заметки. Собрал рабочую шпаргалку с трюками ускорения — сохраняй и используй.

Базовое сканирование

Быстрый скан портов до 1024:
nmap 192.168.1.1
nmap 192.168.1.1 192.168.2.1
nmap 192.168.1.1-254
nmap 192.168.1.0/24


Полное сканирование всех 65535 портов:
nmap 192.168.1.1 -p-


Скан хоста, игнорирующего ping:
nmap 192.168.1.1 -Pn


Техники сканирования

nmap 192.168.1.1 -sS  # TCP SYN (по умолчанию)
nmap 192.168.1.1 -sT # TCP connect
nmap 192.168.1.1 -sU # UDP сканирование

# Полное TCP+UDP (очень долго!)
nmap 192.168.1.1 -sS -sU -p-


Поиск живых хостов

Обнаружение без сканирования портов:
nmap 192.168.1.1/24 -sn


ARP-сканирование в локалке (в разы быстрее!):
nmap 192.168.1.1/24 -PR


Просто список IP без проверки:
nmap 192.168.1.1-15 -sL


Определение сервисов

Быстрая проверка версий (1 порт = 1 строка):
nmap 192.168.1.1 -sV


Полный анализ (ОС, версии, скрипты, traceroute):
nmap 192.168.1.1 -A


🚀 Трюк для ускорения в 10 раз

Вместо долгого полного сканирования — сначала найди открытые порты, потом анализируй только их:

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1


Использование:
./nmap.sh 192.168.1.1


Скорость сканирования

-T0  # paranoid (паранойдный)
-T1 # sneaky (хитрый)
-T2 # polite (вежливый)
-T3 # normal (обычный, по умолчанию)
-T4 # aggressive (для локалки)
-T5 # insane (безумный)


💡 Совет: в локальной сети смело используй -T4, для внешних хостов — -T3 или ниже.

Итог: правильные ключи = экономия времени. Особенно скрипт с двухэтапным сканированием — реально ускоряет работу в разы.
____________________

Дополнительный материал:
🧠 - Путешествие по Виртуальным Интерфейсам и Канальному Уровню в Linux: От Туннелей до Мостов
🧠 - История AppArmor: Как Linux Стал Крепостью Безопасности
🧠 - Linux Mastery: Быстрое создание пакетов файлов для тестирования

#Linux_Mastery #nmap #security #pentesting #networking #linux
👍15🔥3
Media is too big
VIEW IN TELEGRAM
🔥 Kubernetes обязателен для DevOps в 2025. Вот почему

Привет, будущий мастер оркестрации!

Kubernetes стал стандартом для средних и крупных компаний. Без него — никуда. Автор за 100 минут проводит от основ до запуска первого приложения в кластере. Практика на реальном проекте!

📹 Таймкоды:
00:00 — Почему K8s стал стандартом
01:10 — Контейнеризация vs традиционный деплой
03:50 — K8s vs Docker Swarm: кто победил
07:59 — Кому подходит курс
09:40 — Проект: сокращатель ссылок
15:03 — Настройка окружения
18:42 — Установка Kubernetes
23:10 — macOS: Homebrew + Minikube
29:39 — Linux: пошаговая установка
33:23 — Windows: Hyper-V setup
43:07 — Pod — основа всего
45:02 — Services: постоянный доступ
55:07 — Императивный vs Декларативный
01:00:52 — YAML: основы синтаксиса
01:12:08 — Первая конфигурация Pod
01:29:06 — NodePort Service
01:38:50 — Запуск и проверка
01:44:20 — Жизненный цикл Pod

🚀 Результат:
За 1.5 часа запустишь приложение в Kubernetes, поймёшь основные концепции и будешь готов к работе с K8s в продакшене.


🌐 Источник: YouTube - PurpleSchool | Anton Larichev
____________________

Дополнительный материал:
🧠 - SELinux: От Секретного Проекта до Корпоративного Стража
🧠 - Linux Mastery: Настройка разрешений каталогов с помощью chmod
🧠 - Разгадываем тайны архитектуры: Что такое i686 в Ubuntu

#Linux_youtube #kubernetes #k8s #docker #devops #video #yaml
👍11
📊 Мониторинг без боли: Prometheus + Grafana одной командой

Привет, строитель мониторинга!

Prometheus проще Zabbix'а в разы — никаких агентов, баз данных, сложных конфигов. 10 минут и у тебя работающий мониторинг с красивыми графиками. Держи готовую шпаргалку.

Установка Docker

# curl https://get.docker.com | bash -


Подготовка файлов

# mkdir ~/prometheus && cd ~/prometheus
# touch docker-compose.yml


Docker-compose конфиг

Создай файл docker-compose.yml:
version: '3.9'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}

services:

prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
container_name: prometheus
hostname: prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
expose:
- 9090
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring

node-exporter:
image: prom/node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
container_name: exporter
hostname: exporter
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
expose:
- 9100
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring

grafana:
image: grafana/grafana
user: root
depends_on:
- prometheus
ports:
- 3000:3000
volumes:
- ./grafana:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
container_name: grafana
hostname: grafana
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring


Конфиг Prometheus

Создай файл prometheus.yml:
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
scrape_timeout: 5s
static_configs:
- targets: ['localhost:9090']

- job_name: 'node-local'
scrape_interval: 5s
static_configs:
- targets: ['node-exporter:9100']


Запуск всего стека

# docker-compose up -d


Настройка Grafana

1. Открой http://твой-ip:3000
2. Логин: admin / admin
3. Connections → Data sources → Add Prometheus
4. URL: http://prometheus:9090
5. Dashboards → New → Import
6. Введи ID: 1860 (готовый дашборд для Node Exporter)

Добавление удалённого сервера

На удалённом сервере запусти exporter:
# docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" \
prom/node-exporter:latest --path.rootfs=/host

# Проверка
# ss -tulnp | grep 9100


Добавь в prometheus.yml:
 - job_name: 'node-remote'
scrape_interval: 5s
static_configs:
- targets: ['10.20.1.56:9100']


Перезапусти:
# docker compose restart


💡 Результат: полноценный мониторинг с графиками CPU, RAM, диска, сети. Всё за 10 минут без танцев с бубном!

❗️ Важно: в проде закрой порты файрволом — оставь доступ только нужным IP.
____________________

Дополнительный материал:
🧠 - Мастерство Управления Правами в Linux: От Новичка до Профи
🧠 - Максимизируйте безопасность с минимальными разрешениями в Linux
🧠 - От Slackware до Pacman: Путешествие Систем Управления Пакетами в Linux

#Linux_Mastery #мониторинг #prometheus #devops #grafana #docker
👍10🔥3
🐳 Почему ты не можешь просто скопировать файл из Docker образа

Привет, укротитель контейнеров!

Знакомая боль: нужен один файл из Docker образа, но запускать контейнер не хочется. Docker почему-то не даёт простого решения. Рассказываю рабочий способ и показываю инструмент для анализа образов.

Извлекаем файл из образа

Скачиваем образ и создаём контейнер БЕЗ запуска:
# docker pull nginx:latest
# docker create --name nginx nginx:latest


Теперь копируем нужный файл:
# docker cp nginx:/docker-entrypoint.d/30-tune-worker-processes.sh ~/


Или выгружаем весь образ:
# docker export nginx -o ~/nginx-docker.tar.gz


Dive — рентген для образов

Утилита показывает слои образа и что в каждом слое изменилось. Запускаем прямо в Docker:

# docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock \
wagoodman/dive nginx:latest


Создаём alias для удобства:
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"


Теперь просто:
# dive nginx:latest


Проверка раздутости образа

Вместо docker build используй dive build — получишь анализ эффективности сборки:
# dive build -t myapp:latest .


Dive покажет:
- Размер каждого слоя
- Что добавилось/удалилось
- Efficiency Score образа
- Wasted Space (лишнее место)

💡 Фишка: встрой проверку в CI/CD — автоматически отлавливай неоптимальные образы.

Итог: Docker создан для изоляции, поэтому прямого доступа к файлам нет. Но способы есть — используй их правильно.
____________________

Дополнительный материал:
🧠 - Linux Essentials: Понимание относительных и абсолютных путей к файлам
🧠 - Открытие Rancher: Путешествие от Стартапа до Лидера в Контейнеризации
🧠 - Осваиваем Docker: Искусство Сборки Образов и Управления Сетью

#Linux_Mastery #docker #devops #containers #optimization
👍15
Media is too big
VIEW IN TELEGRAM
🚨 Всем раздал kubectl? Как не потерять кластер

Привет, хранитель кластера!

Дал разработчикам полный доступ к K8s и теперь не спишь ночами? Александр Кузьмин из КРОК показывает, как правильно настроить RBAC и интегрировать Kubernetes с Active Directory. От теории до практики!

📹 Таймкоды:
00:20 — Почему важно разграничивать доступ
02:49 — Опасности полного доступа
04:46 — RBAC: основы и принципы
07:58 — Создание ролей и привязок
11:31 — Способы аутентификации
12:12 — Клиентские сертификаты
13:40 — Автоматизация через Ansible
15:41 — LDAP-интеграция
16:22 — Dex: простое решение
18:28 — Как работает аутентификация
24:02 — Keycloak: enterprise-вариант
28:19 — Сравнение подходов
31:40 — Работа с несколькими LDAP

🚀 Итог:
Правильная настройка доступа = спокойный сон админа!


🌐 Источник: YouTube - КРОК
____________________

Дополнительный материал:
🧠 - От RPM до Snap: Путешествие через эволюцию систем управления пакетами
🧠 - Linux Deep Dive: Разбираемся с UID и группами
🧠 - Как использовать команду basename для упрощения ваших скриптов Bash

#Linux_youtube #kubernetes #rbac #ldap #security #authentication #vide
👍7
Вопрос из теста Linux Essentials Certification: Which of the following commands can be used to view a file and do search operations within it while viewing the contents? / Какая из следующих команд может быть использована для просмотра файла и выполнения
Anonymous Quiz
14%
see
41%
less
29%
grep
4%
report
11%
find
👍10👎1
Вопрос из теста Linux Essentials Certification: Which of the following can be used to access the command line? / Что из следующего может быть использовано для доступа к командной строке?
Anonymous Quiz
1%
BIOS
93%
Terminal
1%
Firefox
1%
XWindow
3%
xargs
👍4👀1
🔐 Забудь про Nginx для тестов: вот решение проще

Эй, мастер быстрых решений!

Знаешь трюк с HTTP сервером на Python для передачи файлов? А что если нужен HTTPS для тестов, но лень возиться с Nginx? Показываю способ поднять защищённый сервер за минуту.

Классика для HTTP

# python3 -m http.server 8000


## Апгрейд до HTTPS

Генерируем самоподписный сертификат:
# openssl req -new -x509 -keyout localhost.pem -out localhost.pem -days 365 -nodes


Создаём файл webserver.py:
import http.server, ssl

server_address = ('172.20.0.210', 8000)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,server_side=True,certfile='localhost.pem',ssl_version=ssl.PROTOCOL_TLSv1_2)
httpd.serve_forever()


Запускаем HTTPS сервер:
# python3 webserver.py


Проверяем:
# Открываем в браузере
https://172.20.0.210:8000


Что получаем:
- Полноценный HTTPS сервер для тестов
- Файловый браузер по умолчанию
- Или веб-страница, если есть index.html
- Никаких конфигов и лишней возни

💡 Где пригодится:
- Тестирование приложений, требующих HTTPS
- Быстрая передача файлов по защищённому каналу
- Временный сервер для демо
- Проверка SSL/TLS настроек

Совет: сохрани скрипт в /usr/local/bin/ и используй как команду для быстрого запуска HTTPS где угодно.
____________________

Дополнительный материал:
🧠 - Открываем тайны Linux: Почему скрыть файлы от пользователя root невозможно?
🧠 - Как Создать Идеальный Dockerfile: Секреты Эффективности и Лаконичности
🧠 - Ускоряем YouTube и обходим блокировки на Linux: Ваше руководство

#Linux_Mastery #webserver #python #https #quickfix #sysadmin
👍14🔥3
🔍 Как объединить логи всех контейнеров в одном месте

Привет, укротитель логов!

Вчера в комментах подсказали инструмент logdy — теперь смотрю все логи через браузер. Один бинарник, никаких зависимостей. Показываю все режимы работы.

Установка за 10 секунд

# curl https://logdy.dev/install.sh | sh


## Простой режим — один лог

# tail -f /var/log/syslog | logdy --ui-ip=0.0.0.0


Или так:
# logdy --ui-ip=0.0.0.0 follow /var/log/syslog


Открывай http://твой-ip:8080 — логи в браузере!

Логи Docker контейнера

# docker logs 761965fa13b2 --follow | logdy --ui-ip=0.0.0.0


Объединение нескольких контейнеров

Запускаем logdy в режиме сокетов:
# logdy --ui-ip=0.0.0.0 socket 8123 8124


Направляем логи каждого контейнера:
# docker logs d20339949095 --follow | logdy forward 8123
# docker logs 761965fa13b2 --follow | logdy forward 8124


Теперь все логи в одном интерфейсе с фильтрацией по источнику!

Для локальной разработки

# node app.js | logdy


В VS Code: Ctrl+Shift+P → "Simple Browser: Show" → http://localhost:8080

API режим с токеном

Запускаем с API:
# logdy --ui-ip=0.0.0.0 --api-key=secrettoken


Отправляем логи через curl:
curl --location --request POST 'http://1.2.3.4:8080/api/log' \
--header 'Authorization: Bearer secrettoken' \
--header 'Content-Type: application/json' \
--data '{"logs": [{"log": "this is a log message as a string" }],"source":"machine identifier"}'


Режим stdin для пайпов

# logdy stdin


Фишки logdy:
- Парсит JSON логи автоматически
- Разбивает на колонки
- Фильтрация и поиск в реальном времени
- Защита паролем через ключи запуска
- Экспорт логов

💡 Где выручает:
- Отладка микросервисов
- Мониторинг нескольких контейнеров
- Быстрый просмотр логов без SSH
- Демо для заказчика

Итог: один инструмент покрывает 90% задач с логами. Особенно круто для Docker-окружения.
____________________

Дополнительный материал:
🧠 - Путешествие LXD: Как Контейнеры LXD Переопределили Виртуализацию
🧠 - Удаление файлов и каталогов без стресса
🧠 - Создание Docker Образов и Магия Сетей: От Одиночных Узлов до Docker Swarm

#Linux_Mastery #logs #devops #docker #monitoring #tools
👍9🔥7
🔧 История команд исчезает? Вот решение

Привет, хранитель команд!

Бесит, когда нужная команда не сохранилась в history? На всех своих серверах первым делом настраиваю правильное хранение истории. Делюсь проверенными настройками для ~/.bashrc.

Мгновенное сохранение команд

PROMPT_COMMAND='history -a'

Команда сохраняется сразу после ввода, а не при выходе из сессии.

Метки времени для команд

export HISTTIMEFORMAT='%F %T '

Теперь видно когда выполнялась команда: 2024-09-25 16:39:30

Увеличение размера истории

export HISTSIZE=10000

Вместо дефолтных 500 команд — храним 10000. Хватает с запасом.

Исключение мусорных команд

export HISTIGNORE="ls:history:w:htop:pwd:top:iftop"

Эти команды не засоряют историю.

Пробел = команда не сохраняется

export HISTCONTROL=ignorespace

Поставил пробел перед командой — она не попадёт в историю.

Применение настроек

# source ~/.bashrc


Проверка параметров

# export | grep -i hist


Для всех пользователей

Создай файл /etc/profile.d/history.sh с этими настройками — применится для всех.

Поиск по истории

Быстрый поиск: Ctrl+R и начинай вводить команду. Повторное Ctrl+R — следующее совпадение.

Мой способ через grep:
# history | grep 'apt install'


⚠️ Опасный подвох HISTIGNORE

История из жизни: htop в исключениях → перезагрузил сервер командой reboot → зашёл обратно → запустил htop → закрыл → нажал стрелку вверх для повтора → там reboot (htop не сохранился!) → Enter на автомате → сервер ушёл в ребут 🤦

Мораль: осторожнее с исключениями и стрелкой вверх!

💡 Итог: правильная настройка history экономит часы при поиске той самой команды, которую вводил месяц назад.
____________________

Дополнительный материал:
🧠 - Btrfs: Революция Файловых Систем в Мире Linux
🧠 - Станьте мастером привилегий в Linux: Всё о sudo и su
🧠 - Docker Swarm & GitLab: Ускоряем Деплой Проектов с Шифрованием Секретов

#Linux_Mastery #linux #terminal #bash #productivity #sysadmin
👍23🔥2
SS: находим атакующих за 30 секунд

Эй, ловец сетевых пакетов!

Netstat устарел, в новых дистрибутивах его нет. Пора привыкать к SS. Делюсь рабочими командами и трюком, как запомнить ключи через слово "тулуп".

Базовые команды SS

Все открытые порты (запомни как "тулуп"):
# ss -tulnp


Проверка unix-сокетов:
# ss -l | grep .sock


Все unix-сокеты (но вывод перегружен):
# ss -ax


Активные соединения

# ss -ntu


Поиск атакующих — практика

Подсчёт соединений с каждого IP:
# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | \
cut -d: -f1 | sort | uniq -c | sort -n | sed 's/^[ \t]*//'


Только IP с более 30 соединениями:
# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | \
cut -d: -f1 | sort | uniq -c | sort -n | sed 's/^[ \t]*//' | \
awk '{if ($1 > 30) print$2}'


Общее количество активных соединений:
# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | wc -l


Все соединения (не только активные):
# ss -ntua


Применение на практике

Получил список подозрительных IP? Отправляй их в:
- fail2ban
- ipset
- nftables

И блокируй атакующих автоматически!

Минус SS: в узком терминале вывод расползается. Приходится разворачивать окно на весь экран, в отличие от компактного netstat.

Лайфхак: "tulnp" = "тулуп". Глупо звучит, но реально помогает запомнить ключи навсегда.

💡 Итог: SS неудобнее netstat визуально, но работает быстрее и есть везде по умолчанию. Пора переучиваться.
____________________

Дополнительный материал:
🧠 - От Knoppix до MX Linux: Путешествие Debian-базированных Дистрибутивов
🧠 - Управление файлами и каталогами как профи
🧠 - Ваш путеводитель по командам Adduser и Addgroup в Linux

#Linux_Mastery #linux #terminal #networking #security #ddos
👍22
Media is too big
VIEW IN TELEGRAM
🔥 Как я ускорил поиск с 10 секунд до миллисекунд

Привет, цифровой архитектор!

Твой поиск по базе тормозит как трактор в болоте? Пользователи ждут результаты вечность, а ты не знаешь, как это починить? Сейчас покажу реальное решение.

📍 Таймкоды видео:
00:00 — Введение в Elasticsearch
02:05 — Почему обычный поиск тормозит
05:49 — Основные понятия: индексы, документы, запросы
07:09 — Установка через Docker
08:23 — Базовые команды GET, PUT, POST
10:51 — Добавление и обновление документов
14:19 — Настройка поиска и ранжирование
18:29 — Реальный пример: веб-приложение на Spring Boot
25:43 — Тестирование и результаты

🚀 Попробуй настроить у себя и сравни скорость!

🌐 Источник: https://youtu.be/vxE1aGTEnbE?si=1tTdg2QASMGfF6f_
____________________

Дополнительный материал:
🧠 - От простого до грандиозного: Путешествие Kubernetes в мире контейнеризации
🧠 - Linux Mastery: Управление разрешениями каталогов с помощью chmod
🧠 - Станьте мастером управления пользователями и группами в Linux с помощью команд adduser и addgroup

#Linux_youtube #Elasticsearch #DevOps #Search #Docker #Performance #Database
🔥3
Вопрос из теста Linux Essentials Certification: How could one search for the file foo.txt under the directory /home? | Как можно найти файл foo.txt в директории /home?
Anonymous Quiz
43%
find /home -name foo.txt
16%
find /home -file foo.txt
6%
search /home -file foo.txt
7%
search /home foo.txt
28%
find /home foo.txt
👍9👎2
Вопрос из теста Linux Essentials Certification: You have a program called /user/bin/foo. You wish to create a symbolic link, /home/user/bin/foo, that points to it. Which command will do this task?
Anonymous Quiz
21%
ln --symlink /home/user/foo /user/bin/foo
10%
ln /user/bin/foo /home/user/foo
60%
ln -s /user/bin/foo /home/user/foo
3%
ln -sys /home/user/foo /user/bin/foo
6%
ln /home/user/foo /user/bin/foo
👎23👍7
Что делает эта команда?

adduser --disabled-login [OPTIONS] user


Не гугли — напиши в комментах 👇

#linux #bash #useradd #devops #вопрос
👍4👀2
Media is too big
VIEW IN TELEGRAM
🔧 Устанавливаем полноценный Linux на MacBook с M1

Можно ли жить на Linux, если у тебя MacBook с Apple Silicon?
Автор проверяет это вживую: Fedora AArch64, KDE, Steam, Docker, OBS — всё на голом железе без виртуалок.

👨‍💻 Что в видео:
— Установка Linux с нуля на Mac M1
— Автомонтирование, Steam, Docker, OBS
— Что работает, что нет (Thunderbolt, USB 4, Touch ID)
— Настройки для игр, DevOps и реального использования

🌐 Источник: https://www.youtube.com/live/riKVQjbO-nU?si=8bOjeM8RVXdX88A2

#linux #macbook #fedora #asahi #arm64 #devops
👍8🔥4
🔥 Fstab блокирует загрузку? Переходи на systemd

Привет, мастер монтирования!

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

👉 Показываю, как systemd заменяет fstab и почему это лучше

#Linux_Mastery #systemd #mount #linux #devops #storage
👍7👀4
Что делает эта команда?

ar [OPTIONS] archive_name member_files


Не гугли — напиши в комментах 👇

#linux #bash #useradd #devops #вопрос
👍5
Media is too big
VIEW IN TELEGRAM
📉 Диагностика производительности в Linux: с чего начать?

Если top, iotop, perf, uptime и vmstat вызывают только лёгкую тревогу, а не понимание — это видео для тебя.

Разбираем, как анализировать ресурсы, собирать метрики, строить флеймграфы и не ловить фантомные баги при помощи методики Брендона Грега.

🌐 Источник: https://www.youtube.com/watch?v=bGqdRyXWPP0

#linux #performance #diagnostics #devops #monitoring
👍11