🤔 Как настраивать графики на панели графаны?
Настройка графиков на панели Grafana позволяет визуализировать данные из подключенных источников в удобной и наглядной форме.
1⃣Создание новой панели (Panel)
Откройте существующий дашборд или создайте новый: Перейдите в раздел Dashboards → New Dashboard.
Нажмите Add new panel для добавления панели.
2⃣Выбор источника данных
В интерфейсе панели в разделе Query выберите источник данных (Data Source) из выпадающего списка. Например, Prometheus, InfluxDB, MySQL, Elasticsearch. Подключение источника данных настраивается через Configuration → Data Sources.
3⃣Написание запроса для графика
Каждый источник данных имеет свой язык запросов. Примеры:
Prometheus
MySQL
Elasticsearch: Используйте Lucene или Elasticsearch Query DSL.
4⃣Настройка визуализации
В разделе Visualization выберите тип графика: Time series (график по времени). Bar chart (столбчатая диаграмма). Gauge (гейдж/индикатор). Table (таблица). Pie chart (круговая диаграмма, доступна через плагин).
Настройте параметры визуализации: Линии, точки, области (lines, points, fill). Цвета линий, область графика. Подписи данных.
5⃣Форматирование данных
В разделе Transform: Преобразуйте данные (группировка, сортировка, вычисления). Добавьте фильтры или агрегируйте данные. В разделе Overrides: Настройте специфичные параметры для отдельных рядов данных (цвета, форматы отображения).
6⃣Настройка временного интервала
Выберите временной диапазон панели в правом верхнем углу дашборда: Например, последние 5 минут, 1 час, 24 часа. Установите параметры временного сдвига, если нужно отображать данные за конкретный период.
7⃣Настройка подписей и описаний
В разделе Panel settings: Укажите название панели. Добавьте описание для контекста.
8⃣Сохранение дашборда
Нажмите Save dashboard. Укажите имя дашборда и добавьте теги (опционально) для удобного поиска.
🚩Полезные фишки
🟠Панели Variables
Позволяют создавать динамические фильтры. Например, добавьте переменную для выбора имени хоста:
🟠Плагины визуализации
Установите дополнительные плагины из Grafana Marketplace (например, Pie Chart, Worldmap Panel).
Ставь 👍 и забирай 📚 Базу знаний
Настройка графиков на панели Grafana позволяет визуализировать данные из подключенных источников в удобной и наглядной форме.
1⃣Создание новой панели (Panel)
Откройте существующий дашборд или создайте новый: Перейдите в раздел Dashboards → New Dashboard.
Нажмите Add new panel для добавления панели.
2⃣Выбор источника данных
В интерфейсе панели в разделе Query выберите источник данных (Data Source) из выпадающего списка. Например, Prometheus, InfluxDB, MySQL, Elasticsearch. Подключение источника данных настраивается через Configuration → Data Sources.
3⃣Написание запроса для графика
Каждый источник данных имеет свой язык запросов. Примеры:
Prometheus
rate(http_requests_total[5m])
MySQL
SELECT time, value FROM metrics WHERE time > NOW() - INTERVAL 1 HOUR;
Elasticsearch: Используйте Lucene или Elasticsearch Query DSL.
4⃣Настройка визуализации
В разделе Visualization выберите тип графика: Time series (график по времени). Bar chart (столбчатая диаграмма). Gauge (гейдж/индикатор). Table (таблица). Pie chart (круговая диаграмма, доступна через плагин).
Настройте параметры визуализации: Линии, точки, области (lines, points, fill). Цвета линий, область графика. Подписи данных.
5⃣Форматирование данных
В разделе Transform: Преобразуйте данные (группировка, сортировка, вычисления). Добавьте фильтры или агрегируйте данные. В разделе Overrides: Настройте специфичные параметры для отдельных рядов данных (цвета, форматы отображения).
6⃣Настройка временного интервала
Выберите временной диапазон панели в правом верхнем углу дашборда: Например, последние 5 минут, 1 час, 24 часа. Установите параметры временного сдвига, если нужно отображать данные за конкретный период.
7⃣Настройка подписей и описаний
В разделе Panel settings: Укажите название панели. Добавьте описание для контекста.
8⃣Сохранение дашборда
Нажмите Save dashboard. Укажите имя дашборда и добавьте теги (опционально) для удобного поиска.
🚩Полезные фишки
🟠Панели Variables
Позволяют создавать динамические фильтры. Например, добавьте переменную для выбора имени хоста:
label_values(node_cpu_seconds_total, instance)
🟠Плагины визуализации
Установите дополнительные плагины из Grafana Marketplace (например, Pie Chart, Worldmap Panel).
Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Как решать проблему, если ваш коллега удалил /usr/bin/chmod, и нет ОС-донора?
- Если chmod удалён, изменить права файла невозможно стандартным способом.
- Возможные варианты:
- Найти бинарник chmod в другой директории (например, в /bin, /sbin, /usr/local/bin).
- Использовать busybox chmod, если busybox установлен.
- Если есть root-доступ — попробовать выполнить через python, perl или bash:
- python -c 'import os; os.chmod("file", 0o755)'
- Или через find с -exec (если chmod встроен туда).
- В крайнем случае — смонтировать диск на другой системе (если физически возможно).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Если chmod удалён, изменить права файла невозможно стандартным способом.
- Возможные варианты:
- Найти бинарник chmod в другой директории (например, в /bin, /sbin, /usr/local/bin).
- Использовать busybox chmod, если busybox установлен.
- Если есть root-доступ — попробовать выполнить через python, perl или bash:
- python -c 'import os; os.chmod("file", 0o755)'
- Или через find с -exec (если chmod встроен туда).
- В крайнем случае — смонтировать диск на другой системе (если физически возможно).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1🤔1
🤔 Какие виды метрик в Prometheus знаешь?
В Prometheus есть 4 типа метрик, которые используются для мониторинга и сбора данных.
🚩Counter (Счетчик) – только увеличивается
Используется для подсчета событий, ошибок, запросов
Значение только увеличивается (нельзя уменьшить)
Как вывести количество запросов за последние 5 минут
Пример экспозиции в приложении
🚩Gauge (Измеритель) – может расти и уменьшаться
Используется для измерения текущего состояния (температура, RAM, CPU)
Значение может расти и уменьшаться
Как вывести среднюю загрузку CPU за 5 минут
Пример экспозиции в коде
🚩Histogram (Гистограмма) – распределение значений
Используется для измерения длительности, размера запросов
Делит данные по диапазонам (buckets)
Как вычислить среднее время отклика
Пример в коде
🚩Summary (Сводка) – квантильные метрики
Показывает среднее, медиану, квантильное распределение
Используется для измерения задержек, времени отклика
Пример в коде:
Ставь 👍 и забирай 📚 Базу знаний
В Prometheus есть 4 типа метрик, которые используются для мониторинга и сбора данных.
🚩Counter (Счетчик) – только увеличивается
Используется для подсчета событий, ошибок, запросов
Значение только увеличивается (нельзя уменьшить)
promql
http_requests_total
Как вывести количество запросов за последние 5 минут
promql
rate(http_requests_total[5m])
Пример экспозиции в приложении
go
httpRequests := prometheus.NewCounter(
prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Total number of HTTP requests",
})
🚩Gauge (Измеритель) – может расти и уменьшаться
Используется для измерения текущего состояния (температура, RAM, CPU)
Значение может расти и уменьшаться
promql
node_memory_usage_bytes
Как вывести среднюю загрузку CPU за 5 минут
promql
avg(node_cpu_seconds_total)
Пример экспозиции в коде
go
cpuUsage := prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "cpu_usage_percentage",
Help: "Current CPU usage",
})
🚩Histogram (Гистограмма) – распределение значений
Используется для измерения длительности, размера запросов
Делит данные по диапазонам (buckets)
promql
http_request_duration_seconds_bucket
Как вычислить среднее время отклика
promql
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
Пример в коде
go
requestDuration := prometheus.NewHistogram(
prometheus.HistogramOpts{
Name: "http_request_duration_seconds",
Help: "Histogram of response time for HTTP requests",
Buckets: prometheus.DefBuckets,
})
🚩Summary (Сводка) – квантильные метрики
Показывает среднее, медиану, квантильное распределение
Используется для измерения задержек, времени отклика
promql
http_request_duration_seconds{quantile="0.99"}
Пример в коде:
go
requestSummary := prometheus.NewSummary(
prometheus.SummaryOpts{
Name: "http_request_duration_seconds",
Help: "Summary of response time for HTTP requests",
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
})
Ставь 👍 и забирай 📚 Базу знаний
🤔 На скольких хостах по умолчанию Ansible позволяет одновременно выполнять сценарии?
По умолчанию Ansible запускает задачи на 5 хостах одновременно (forks = 5). Это значение можно изменить в ansible.cfg или через флаг --forks.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥4👍1
🤔 Что такое лямбда выражение в Phyton?
В Python лямбда-выражение — это анонимная (безымянная) функция, создаваемая с помощью ключевого слова
Синтаксис
🚩Примеры
Простая лямбда-функция
Эквивалентно обычной функции
Лямбда внутри
Лямбда внутри
Ставь 👍 и забирай 📚 Базу знаний
В Python лямбда-выражение — это анонимная (безымянная) функция, создаваемая с помощью ключевого слова
lambda. Синтаксис
lambda аргументы: выражение
🚩Примеры
Простая лямбда-функция
add = lambda x, y: x + y
print(add(3, 5)) # Выведет: 8
Эквивалентно обычной функции
def add(x, y):
return x + y
Лямбда внутри
map()nums = [1, 2, 3, 4]
squares = list(map(lambda x: x ** 2, nums))
print(squares) # [1, 4, 9, 16]
Лямбда внутри
sorted()words = ["apple", "banana", "kiwi"]
sorted_words = sorted(words, key=lambda w: len(w))
print(sorted_words) # ['kiwi', 'apple', 'banana']
Ставь 👍 и забирай 📚 Базу знаний
🤔 За счёт чего Redis такой быстрый?
Redis быстрый потому что:
- работает целиком в оперативной памяти;
- все операции — однотредовые, без блокировок;
- использует простые структуры данных (строки, списки, хеши);
- оптимизирован на уровне сетевого стека и сериализации.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Redis быстрый потому что:
- работает целиком в оперативной памяти;
- все операции — однотредовые, без блокировок;
- использует простые структуры данных (строки, списки, хеши);
- оптимизирован на уровне сетевого стека и сериализации.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍6🔥1
🤔 Что такое нормализация баз данных?
Нормализация баз данных - это процесс организации данных в базе данных для минимизации избыточности данных и обеспечения их целостности. Цель нормализации - структурировать таблицы таким образом, чтобы устранить аномалии обновления, вставки и удаления данных. Нормализация достигается путем разбиения больших таблиц на более мелкие, связанных между собой отношениями, что упрощает управление данными и делает их более логически связанными.
🚩Зачем нужна нормализация
🟠Устранение избыточности данных
Нормализация позволяет минимизировать дублирование данных, что экономит пространство и упрощает управление базой данных.
🟠Обеспечение целостности данных
Нормализация помогает поддерживать целостность данных, обеспечивая правильное и единообразное хранение данных.
🟠Упрощение структуры базы данных
Разделение данных на логические таблицы делает структуру базы данных более понятной и удобной для использования.
🟠Избежание аномалий данных
Нормализация предотвращает возникновение аномалий при обновлении, вставке и удалении данных.
🚩Основные формы нормализации
🟠Первая нормальная форма (1NF)
Удаление повторяющихся групп в таблице. Каждый столбец должен содержать только атомарные (неделимые) значения. Все записи в таблице должны быть уникальными.
🟠Вторая нормальная форма (2NF)
Таблица должна быть в 1NF. Удаление частичной функциональной зависимости: каждый неключевой атрибут должен быть полностью зависим от первичного ключа.
🟠Третья нормальная форма (3NF)
Таблица должна быть в 2NF. Удаление транзитивной зависимости: все неключевые атрибуты должны быть напрямую зависимы от первичного ключа, а не от других неключевых атрибутов.
🟠Бойс-Кодд нормальная форма (BCNF)
Усиление 3NF: каждая детерминанта должна быть кандидатом на ключ, что означает, что в любой нетривиальной функциональной зависимости X -> Y, X должно быть суперключом.
🟠Четвертая нормальная форма (4NF)
Таблица должна быть в BCNF. Устранение многозначных зависимостей: таблица не должна содержать многозначных зависимостей, когда один атрибут зависит от нескольких значений другого атрибута.
🟠Пятая нормальная форма (5NF)
Таблица должна быть в 4NF. Устранение соединительных зависимостей: данные должны быть разбиты так, чтобы каждая зависимость сохранялась.
🚩Примеры применения нормализации
🟠Первая нормальная форма
Если у вас есть таблица с повторяющимися группами, такими как несколько телефонных номеров для одного клиента, вы создаете отдельную таблицу для телефонов и связываете ее с таблицей клиентов.
🟠Вторая нормальная форма
Если у вас есть таблица заказов с колонками "номер заказа", "название товара" и "цена товара", вы можете создать отдельные таблицы для заказов и товаров, чтобы цена товара зависела только от товара, а не от комбинации заказа и товара.
🟠Третья нормальная форма
Если у вас есть таблица сотрудников с колонками "идентификатор сотрудника", "название отдела" и "имя начальника отдела", вы можете создать отдельные таблицы для сотрудников и отделов, чтобы имя начальника отдела зависело только от отдела, а не от сотрудника.
Ставь 👍 и забирай 📚 Базу знаний
Нормализация баз данных - это процесс организации данных в базе данных для минимизации избыточности данных и обеспечения их целостности. Цель нормализации - структурировать таблицы таким образом, чтобы устранить аномалии обновления, вставки и удаления данных. Нормализация достигается путем разбиения больших таблиц на более мелкие, связанных между собой отношениями, что упрощает управление данными и делает их более логически связанными.
🚩Зачем нужна нормализация
🟠Устранение избыточности данных
Нормализация позволяет минимизировать дублирование данных, что экономит пространство и упрощает управление базой данных.
🟠Обеспечение целостности данных
Нормализация помогает поддерживать целостность данных, обеспечивая правильное и единообразное хранение данных.
🟠Упрощение структуры базы данных
Разделение данных на логические таблицы делает структуру базы данных более понятной и удобной для использования.
🟠Избежание аномалий данных
Нормализация предотвращает возникновение аномалий при обновлении, вставке и удалении данных.
🚩Основные формы нормализации
🟠Первая нормальная форма (1NF)
Удаление повторяющихся групп в таблице. Каждый столбец должен содержать только атомарные (неделимые) значения. Все записи в таблице должны быть уникальными.
🟠Вторая нормальная форма (2NF)
Таблица должна быть в 1NF. Удаление частичной функциональной зависимости: каждый неключевой атрибут должен быть полностью зависим от первичного ключа.
🟠Третья нормальная форма (3NF)
Таблица должна быть в 2NF. Удаление транзитивной зависимости: все неключевые атрибуты должны быть напрямую зависимы от первичного ключа, а не от других неключевых атрибутов.
🟠Бойс-Кодд нормальная форма (BCNF)
Усиление 3NF: каждая детерминанта должна быть кандидатом на ключ, что означает, что в любой нетривиальной функциональной зависимости X -> Y, X должно быть суперключом.
🟠Четвертая нормальная форма (4NF)
Таблица должна быть в BCNF. Устранение многозначных зависимостей: таблица не должна содержать многозначных зависимостей, когда один атрибут зависит от нескольких значений другого атрибута.
🟠Пятая нормальная форма (5NF)
Таблица должна быть в 4NF. Устранение соединительных зависимостей: данные должны быть разбиты так, чтобы каждая зависимость сохранялась.
🚩Примеры применения нормализации
🟠Первая нормальная форма
Если у вас есть таблица с повторяющимися группами, такими как несколько телефонных номеров для одного клиента, вы создаете отдельную таблицу для телефонов и связываете ее с таблицей клиентов.
🟠Вторая нормальная форма
Если у вас есть таблица заказов с колонками "номер заказа", "название товара" и "цена товара", вы можете создать отдельные таблицы для заказов и товаров, чтобы цена товара зависела только от товара, а не от комбинации заказа и товара.
🟠Третья нормальная форма
Если у вас есть таблица сотрудников с колонками "идентификатор сотрудника", "название отдела" и "имя начальника отдела", вы можете создать отдельные таблицы для сотрудников и отделов, чтобы имя начальника отдела зависело только от отдела, а не от сотрудника.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Чем отличается list от dict?
list — это упорядоченная коллекция, доступ к элементам которой осуществляется по числовому индексу. Она используется, когда важен порядок и нужен последовательный доступ. dict — это ассоциативная коллекция, где доступ происходит по уникальному ключу. Списки удобны для хранения последовательностей данных, словари — для хранения пар "ключ:значение" и быстрого поиска по ключу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
list — это упорядоченная коллекция, доступ к элементам которой осуществляется по числовому индексу. Она используется, когда важен порядок и нужен последовательный доступ. dict — это ассоциативная коллекция, где доступ происходит по уникальному ключу. Списки удобны для хранения последовательностей данных, словари — для хранения пар "ключ:значение" и быстрого поиска по ключу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3
🤔 Какая может быть проблема если вы подключаетесь к серверу через ssh а вам приходят тикеты, что другие пользователи не могут подключиться по ssh по одной и той же учётной записи
Если вы можете подключиться к серверу по SSH, но другие пользователи, использующие ту же учетную запись, не могут, возможны следующие причины:
🟠Проблема с ограничением количества подключений
В файле конфигурации SSH (
Открываем конфигурацию SSH
Проверяем параметры
Решение
Увеличьте
Перезапустите SSH:
🟠Файл .ssh/authorized_keys имеет неверные права
Если у вас ключевая авторизация, возможно, права на файлы
На сервере выполните:
Если права не
🟠Ограничение по IP (DenyUsers, AllowUsers, TCP Wrappers)
Конфигурация SSH может блокировать подключения для определенных IP или пользователей.
Откройте
Проверьте
🟠Закончились доступные PTY (псевдотерминалы)
Если исчерпан лимит доступных PTY, новые сессии не смогут открываться.
Запустите
Если там слишком много открытых сессий, попробуйте очистить:
или увеличьте лимит в
Ставь 👍 и забирай 📚 Базу знаний
Если вы можете подключиться к серверу по SSH, но другие пользователи, использующие ту же учетную запись, не могут, возможны следующие причины:
🟠Проблема с ограничением количества подключений
В файле конфигурации SSH (
/etc/ssh/sshd_config) могут быть ограничения на число одновременных подключений. Открываем конфигурацию SSH
sudo nano /etc/ssh/sshd_config
Проверяем параметры
MaxSessions 1
MaxStartups 10:30:60
Решение
Увеличьте
MaxSessions, например: MaxSessions 10
Перезапустите SSH:
sudo systemctl restart sshd
🟠Файл .ssh/authorized_keys имеет неверные права
Если у вас ключевая авторизация, возможно, права на файлы
.ssh/authorized_keys нарушены. На сервере выполните:
ls -l ~/.ssh/authorized_keys
Если права не
600, исправьте chmod 600 ~/.ssh/authorized_keys
🟠Ограничение по IP (DenyUsers, AllowUsers, TCP Wrappers)
Конфигурация SSH может блокировать подключения для определенных IP или пользователей.
Откройте
/etc/ssh/sshd_config и проверьте параметры DenyUsers user1
AllowUsers admin
Проверьте
/etc/hosts.deny и /etc/hosts.allow cat /etc/hosts.deny
cat /etc/hosts.allow
🟠Закончились доступные PTY (псевдотерминалы)
Если исчерпан лимит доступных PTY, новые сессии не смогут открываться.
Запустите
ls /dev/pts
Если там слишком много открытых сессий, попробуйте очистить:
pkill -u user
или увеличьте лимит в
/etc/security/limits.conf * hard nproc 1024
* soft nproc 1024
Ставь 👍 и забирай 📚 Базу знаний
👍2
Завтра последний день!
Успей купить пожизненный easyoffer PRO - по цене 1 года
Покупаешь один раз — пользуешься всю жизнь.
👉 Акция до 31 марта: https://easyoffer.ru/pro
Успей купить пожизненный easyoffer PRO - по цене 1 года
Покупаешь один раз — пользуешься всю жизнь.
👉 Акция до 31 марта: https://easyoffer.ru/pro
💊3
🤔 Шифруется ли state file?
По умолчанию локальный state file не шифруется, если вы не настроили это явно. Если используется удалённое хранилище (например, S3, Azure Blob), можно настроить:
- Шифрование на уровне хранилища (например, AWS KMS).
- Шифрование ключей в backend конфигурации.
- Использование gpg или sops для ручного шифрования, если нужно.
Для чувствительных данных (например, паролей в переменных) рекомендуется использовать sensitive = true.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
По умолчанию локальный state file не шифруется, если вы не настроили это явно. Если используется удалённое хранилище (например, S3, Azure Blob), можно настроить:
- Шифрование на уровне хранилища (например, AWS KMS).
- Шифрование ключей в backend конфигурации.
- Использование gpg или sops для ручного шифрования, если нужно.
Для чувствительных данных (например, паролей в переменных) рекомендуется использовать sensitive = true.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Чем отличается образ от контейнера?
Образ (Image) – это шаблон, из которого создаются контейнеры.
Контейнер (Container) – это запущенный экземпляр образа.
🚩Что такое образ (Image)?
Образ – это неизменяемый шаблон с установленным ПО
Содержит все файлы, библиотеки и зависимости
Может храниться в реестре (Docker Hub, GitHub Container Registry, ECR)
Пример списка образов
Пример создания образа через
🚩Что такое контейнер (Container)?
Контейнер – это запущенный экземпляр образа
Может изменять файлы и состояние, но это не сохраняется в образе
Изолирован, но использует ядро ОС хоста
Пример списка контейнеров
Пример остановки контейнера
Ставь 👍 и забирай 📚 Базу знаний
Образ (Image) – это шаблон, из которого создаются контейнеры.
Контейнер (Container) – это запущенный экземпляр образа.
🚩Что такое образ (Image)?
Образ – это неизменяемый шаблон с установленным ПО
Содержит все файлы, библиотеки и зависимости
Может храниться в реестре (Docker Hub, GitHub Container Registry, ECR)
docker pull nginx:latest
Пример списка образов
docker images
Пример создания образа через
DockerfileFROM ubuntu:latest
RUN apt update && apt install -y nginx
CMD ["nginx", "-g", "daemon off;"]
docker build -t my-nginx .
🚩Что такое контейнер (Container)?
Контейнер – это запущенный экземпляр образа
Может изменять файлы и состояние, но это не сохраняется в образе
Изолирован, но использует ядро ОС хоста
docker run -d --name web -p 80:80 nginx
Пример списка контейнеров
docker ps
Пример остановки контейнера
docker stop web
Ставь 👍 и забирай 📚 Базу знаний
👍1💊1
🤔 Что такое tfstate?
tfstate — это файл состояния Terraform, который:
- Хранит информацию о текущем состоянии ресурсов инфраструктуры.
- Нужен для сопоставления реального состояния с конфигурацией.
- Используется для определения что изменить, создать или удалить при следующем apply.
Этот файл — центральный источник правды для Terraform.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
tfstate — это файл состояния Terraform, который:
- Хранит информацию о текущем состоянии ресурсов инфраструктуры.
- Нужен для сопоставления реального состояния с конфигурацией.
- Используется для определения что изменить, создать или удалить при следующем apply.
Этот файл — центральный источник правды для Terraform.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 Что сейчас больше используется ингресс класс в ингрессе или указывается ингресс контроллер непосредственно в апликейшене?
Сейчас стандартом является использование
🚩Что лучше использовать?
🟠`ingressClassName` (новый метод, Kubernetes 1.19+)
Современный, удобный, поддерживается официально
Работает с
Можно управлять через CRD (
🟠Аннотация `kubernetes.io/ingress.class` (старый метод, deprecated с 1.18)
Все еще работает, но устарела
Нельзя контролировать
🚩Как правильно указывать `ingressClassName`?
1⃣Настраиваем
2⃣Используем
🚩Старый способ (не рекомендуется, но все еще встречается)
Раньше использовали аннотацию
Ставь 👍 и забирай 📚 Базу знаний
Сейчас стандартом является использование
ingressClassName, а аннотации kubernetes.io/ingress.class считаются устаревшими (deprecated). 🚩Что лучше использовать?
🟠`ingressClassName` (новый метод, Kubernetes 1.19+)
Современный, удобный, поддерживается официально
Работает с
IngressClass ресурсами Можно управлять через CRD (
IngressClass) 🟠Аннотация `kubernetes.io/ingress.class` (старый метод, deprecated с 1.18)
Все еще работает, но устарела
Нельзя контролировать
IngressClass через CRD 🚩Как правильно указывать `ingressClassName`?
1⃣Настраиваем
IngressClass (если нужно) yaml
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: nginx
spec:
controller: k8s.io/ingress-nginx
2⃣Используем
ingressClassName в Ingressyaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
🚩Старый способ (не рекомендуется, но все еще встречается)
Раньше использовали аннотацию
kubernetes.io/ingress.class yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
Ставь 👍 и забирай 📚 Базу знаний
🤔 Удалил файлы, но место не очищается, в чём дело?
Обычно это связано с тем, что:
- Файлы всё ещё используются (открыты каким-то процессом). Даже если файл удалён, пока он открыт, диск не освобождается.
- Журналы или базы данных могут продолжать записывать в старые дескрипторы.
- Посмотреть, кто использует удалённые файлы, можно с помощью lsof или fuser.
Решение — перезапустить процесс, который удерживает удалённый файл.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Обычно это связано с тем, что:
- Файлы всё ещё используются (открыты каким-то процессом). Даже если файл удалён, пока он открыт, диск не освобождается.
- Журналы или базы данных могут продолжать записывать в старые дескрипторы.
- Посмотреть, кто использует удалённые файлы, можно с помощью lsof или fuser.
Решение — перезапустить процесс, который удерживает удалённый файл.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как бы построить выделение ресурсов, балансировку, нагрузку и всю масштабированность?
Чтобы система работала стабильно и эффективно, нужно правильно распределять ресурсы, балансировать нагрузку и масштабировать сервисы.
🚩Основные компоненты
Выделение ресурсов - CPU, RAM, диски, сеть
Балансировка нагрузки равномерное распределение трафика
Горизонтальное и вертикальное масштабирование
Авто-масштабировани – динамическое добавление/удаление мощностей
🟠Выделение ресурсов (CPU, RAM, Диск, Сеть)
В виртуализированных средах (Kubernetes, Docker, AWS, KVM, ESXi) выделение ресурсов настраивается через лимиты и квоты.
🟠Балансировка нагрузки
Балансировка уменьшает нагрузку на один сервер и равномерно распределяет запросы.
Пример терраформа для AWS ALB
🟠Масштабирование (Горизонтальное и Вертикальное)
Горизонтальное масштабирование (добавление новых инстансов)
Kubernetes Horizontal Pod Autoscaler (HPA)
🟠Авто-масштабирование (AWS/GCP/Kubernetes)
AWS Auto Scaling Group
Ставь 👍 и забирай 📚 Базу знаний
Чтобы система работала стабильно и эффективно, нужно правильно распределять ресурсы, балансировать нагрузку и масштабировать сервисы.
🚩Основные компоненты
Выделение ресурсов - CPU, RAM, диски, сеть
Балансировка нагрузки равномерное распределение трафика
Горизонтальное и вертикальное масштабирование
Авто-масштабировани – динамическое добавление/удаление мощностей
🟠Выделение ресурсов (CPU, RAM, Диск, Сеть)
В виртуализированных средах (Kubernetes, Docker, AWS, KVM, ESXi) выделение ресурсов настраивается через лимиты и квоты.
yaml
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: my-app:latest
resources:
requests:
cpu: "500m" # Минимально 0.5 CPU
memory: "256Mi" # Минимально 256MB RAM
limits:
cpu: "1000m" # Максимально 1 CPU
memory: "512Mi" # Максимально 512MB RAM
🟠Балансировка нагрузки
Балансировка уменьшает нагрузку на один сервер и равномерно распределяет запросы.
nginx
upstream backend {
server app1:5000;
server app2:5000;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
Пример терраформа для AWS ALB
hcl
resource "aws_lb" "example" {
name = "my-load-balancer"
internal = false
load_balancer_type = "application"
security_groups = [aws_security_group.lb_sg.id]
}
🟠Масштабирование (Горизонтальное и Вертикальное)
Горизонтальное масштабирование (добавление новых инстансов)
Kubernetes Horizontal Pod Autoscaler (HPA)
yaml
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
🟠Авто-масштабирование (AWS/GCP/Kubernetes)
AWS Auto Scaling Group
hcl
resource "aws_autoscaling_group" "example" {
min_size = 2
max_size = 10
desired_capacity = 2
launch_configuration = aws_launch_configuration.example.name
}
Ставь 👍 и забирай 📚 Базу знаний
💊1
🤔 Что такое гипервизор?
Гипервизор — это программный или аппаратный слой, позволяющий запускать несколько операционных систем (виртуальных машин) на одной физической машине. Бывает двух типов: на уровне железа и в ОС.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Гипервизор — это программный или аппаратный слой, позволяющий запускать несколько операционных систем (виртуальных машин) на одной физической машине. Бывает двух типов: на уровне железа и в ОС.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 При попытке создания файла на диске на linux ошибка что места нет проверяете место есть с чем это может быть связано
Если при создании файла в Linux появляется ошибка, что места нет, но
🚩Закончились inodes
Inodes – это структуры, которые хранят метаданные о файлах. Даже если есть свободное место, но inodes кончились, новые файлы создать нельзя.
Найти каталоги с множеством маленьких файлов:
🚩Ограничение дискового квотирования (quota)
В системе могут быть настроены дисковые квоты, которые ограничивают использование диска для пользователя или группы.
🚩Заполнен раздел `/var`, `/tmp` или `/home`
В системе может быть несколько дисковых разделов (
🚩Файловая система смонтирована в режиме `read-only`
Если файловая система перешла в режим «только для чтения» (read-only) из-за ошибки или сбоя, запись на неё невозможна.
Если файловая система смонтирована с `ro`, значит, запись запрещена. Перемонтировать диск:
Проверить диск на ошибки:
Ставь 👍 и забирай 📚 Базу знаний
Если при создании файла в Linux появляется ошибка, что места нет, но
df -h показывает свободное место, проблема может быть в следующем: 🚩Закончились inodes
Inodes – это структуры, которые хранят метаданные о файлах. Даже если есть свободное место, но inodes кончились, новые файлы создать нельзя.
df -i
Найти каталоги с множеством маленьких файлов:
find /path -xdev -type f | wc -l # Количество файлов в каталоге
🚩Ограничение дискового квотирования (quota)
В системе могут быть настроены дисковые квоты, которые ограничивают использование диска для пользователя или группы.
quota -v
🚩Заполнен раздел `/var`, `/tmp` или `/home`
В системе может быть несколько дисковых разделов (
/, /var, /home и т. д.). Если один из них заполнен, в него нельзя записывать файлы. df -hT
🚩Файловая система смонтирована в режиме `read-only`
Если файловая система перешла в режим «только для чтения» (read-only) из-за ошибки или сбоя, запись на неё невозможна.
mount | grep ' ro,'
Если файловая система смонтирована с `ro`, значит, запись запрещена. Перемонтировать диск:
mount -o remount,rw /path
Проверить диск на ошибки:
dmesg | tail -20 # Лог ошибок
fsck /dev/sdX # Проверка диска
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Что даёт DevOps как концепция?
DevOps объединяет разработку и эксплуатацию в единый цикл поставки ПО. Он обеспечивает:
- автоматизацию процессов (CI/CD),
- стабильность и контроль версий,
- ускорение вывода продукта на рынок,
- мониторинг и обратную связь.
Цель — улучшить качество и скорость релизов за счёт совместной культуры и инструментов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
DevOps объединяет разработку и эксплуатацию в единый цикл поставки ПО. Он обеспечивает:
- автоматизацию процессов (CI/CD),
- стабильность и контроль версий,
- ускорение вывода продукта на рынок,
- мониторинг и обратную связь.
Цель — улучшить качество и скорость релизов за счёт совместной культуры и инструментов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2🔥1
🤔 Что такое IaC?
Это практика управления и настройки IT-инфраструктуры (серверов, сетей, баз данных и других ресурсов) с помощью кода, а не вручную через консоли или графические интерфейсы.
🚩Зачем нужен IaC?
🟠Автоматизация
вместо ручной настройки серверов вы пишете код, который делает это автоматически.
🟠Консистентность
одинаковая среда на всех серверах, исключение человеческих ошибок.
🟠Быстрое развертывание
развернуть инфраструктуру можно за минуты.
🟠Легкость в откате
если что-то пошло не так, можно быстро вернуть предыдущее состояние.
🟠Масштабируемость
легко добавить новые серверы или ресурсы при увеличении нагрузки.
🚩Как работает IaC?
С помощью IaC вы описываете всю инфраструктуру в коде (например, в YAML, JSON, HCL и др.), а затем используете инструменты для автоматического развертывания.
🚩Основные инструменты IaC
🟠Terraform
универсальный инструмент для облаков (AWS, Azure, GCP и др.).
🟠Ansible
удобен для настройки серверов (конфигурации ПО).
🟠Puppet / Chef
похожи на Ansible, но требуют агента на серверах.
🟠CloudFormation
инструмент от AWS для управления ресурсами.
Ставь 👍 и забирай 📚 Базу знаний
Это практика управления и настройки IT-инфраструктуры (серверов, сетей, баз данных и других ресурсов) с помощью кода, а не вручную через консоли или графические интерфейсы.
🚩Зачем нужен IaC?
🟠Автоматизация
вместо ручной настройки серверов вы пишете код, который делает это автоматически.
🟠Консистентность
одинаковая среда на всех серверах, исключение человеческих ошибок.
🟠Быстрое развертывание
развернуть инфраструктуру можно за минуты.
🟠Легкость в откате
если что-то пошло не так, можно быстро вернуть предыдущее состояние.
🟠Масштабируемость
легко добавить новые серверы или ресурсы при увеличении нагрузки.
🚩Как работает IaC?
С помощью IaC вы описываете всю инфраструктуру в коде (например, в YAML, JSON, HCL и др.), а затем используете инструменты для автоматического развертывания.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}🚩Основные инструменты IaC
🟠Terraform
универсальный инструмент для облаков (AWS, Azure, GCP и др.).
🟠Ansible
удобен для настройки серверов (конфигурации ПО).
🟠Puppet / Chef
похожи на Ansible, но требуют агента на серверах.
🟠CloudFormation
инструмент от AWS для управления ресурсами.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Как работает лоадбалансер в облаке?
- Создаётся внешнее IP.
- Проксирует входящий трафик к NodePort сервисам.
- Использует healthcheck, может поддерживать sticky sessions.
- Под капотом — реализация у облачного провайдера (AWS ALB, GCP LB, Azure LB).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Создаётся внешнее IP.
- Проксирует входящий трафик к NodePort сервисам.
- Использует healthcheck, может поддерживать sticky sessions.
- Под капотом — реализация у облачного провайдера (AWS ALB, GCP LB, Azure LB).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊2