Архив метки: Software

GNU Coreutils 9.4 уже выпущен, и это его новые возможности.

GNU Coreutils

Coreutils — это программный пакет, разработанный проектом GNU, который содержит несколько основных инструментов, таких как cat, ls и rm, необходимых для Unix-подобных операционных систем.

Новая версия GNU Coreutils 9.4 уже выпущена ипоставляется с различными улучшениями производительности, изменение поведения, исправления ошибок и многое другое. В этом выпуске освещаются изменения, внесенные в cp -v и mv -v, а также тот факт, что время безотказной работы теперь поддерживает Android и многое другое.

Те, кто не знает о пакете Coreutils, должны знать, что это Это комбинация трех предыдущих пакетов.: файловые утилиты (fileutils), утилиты интерпретатора команд (shellutils) и утилиты обработки текста (textutils).



Читать

Оптимизация производительности баз данных PostgreSQL

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




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




Ниже перечислю этапы, по которым вам следует пройтись, чтобы понять причины проблемы.




1. Смотрим, что было сделано раньше.




Для этого у вашего приложения должен быть Git. Заходим в него и смотрим, что было сделано ранее. Какие вы делали миграции, какие настройки меняли.




И желательно, чтобы основной файл конфигурации БД postgresql.conf также был в гите. Тогда вы сможете в том числе контролировать и изменение настроек базы.




Конечно, вы должны взять за правило — не делать никаких изменений в базе напрямую, а всё проводить через гит и миграции.




Особенно если речь идёт об изменениях структуры базы данных, добавлении обработчиков, пользовательских функций, процедур. Эти работы должны делать скрипты, которые, в свою очередь, должны версионироваться.




2. Смотрим, что происходит в операционной системе.




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




Надеюсь, база данных у вас установлена на Linux-машине. Если нет, то советую подумать о переезде на Linux.




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




3. Проверяем оборудование.




Опять же, если в операционной системе вы ничего не меняли, у вас уже стоит Linux, стоит обратить внимание на оборудование. Сегодня некоторые производители железа грешат качеством и нельзя надеяться на то, что память или жёсткий диск не выйдут из строя в самый неподходящий момент. Поэтому, первое на что советую обратить внимание:




htop




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




iostat –dx




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




Помните, что расходы по оптимизации запросов или кода приложения не окупятся, если у вас присутствуют проблемы с оборудованием.




4. Установите систему мониторинга.




Попробуйте установить систему мониторинга Percona https://www.percona.com/software/database-tools/percona-monitoring-and-management. Её интерфейс показан на картинке выше. Она бесплатная и позволит вам быстро оценить динамику нагрузки на сервер и покажет все главные показатели работы сервера.




5. Проанализируйте файловое хранилище.




Запустите команду:




iostat –x




Посмотрите на колонки с постфиксов _await. Они говорят вам о показателе f/s latency. Если показатель больше 50 мс без нагрузки, то стоит задуматься. Если более 100 — то стоить предпринимать срочные меры.




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




6. Анализируем pg_stat_activity.




Итак, мы проверили сервера, оборудование, ничего необычного не нашли. Переходим непосредственно к тюнингу базы.




Первое, что приходит на ум — представление pg_stat_activity.




Сначала проверьте в настройках базы параметр track_activity_query_size, по умолчанию он выставлен на 1024. Увеличьте его как минимум в 2-3 раза, в большинстве случаев его не хватает.




Теперь ищем, какая активность у нас происходит в базе. Может всё гораздо проще и кто-то запустил сложный запрос и вам стоит остановить этот скрипт. Смотрим активные запросы длительностью более 5 секунд:




SELECT now() - query_start as "runtime", usename, datname, wait_event, state, query FROM pg_stat_activity WHERE now() - query_start > '5 seconds'::interval and state='active' ORDER BY runtime DESC;




Также могут вызвать подозрения запросы с состоянием «idle». А ещё хуже с состоянием «idle in transaction».




Такие запросы можно остановить следующими командами:




SELECT pg_cancel_backend(procpid);




SELECT pg_terminate_backend(procpid);




Первый остановит активные запросы, второй с типом idle.




Теперь стоит посмотреть, есть ли у вас зависшие трансакции. Выполняем запрос:




SELECT pid, xact_start, now() - xact_start AS duration FROM pg_stat_activity WHERE state LIKE '%transaction%' ORDER BY 3 DESC;




Помните, трансакции должны выполняться моментально. Из ответа смотрите на duration. Если трансакция висит несколько минут, а тем более часов, значит, приложение повело себя некорректно, оставив трансакцию незавершённой. А это влияет на репликацию, на работу VACUUM, WAL.




7. Анализируем pg_stat_statements.




Если раньше мы проверяли активные запросы, то теперь самое время проанализировать то, что было раньше. В этом нам поможет представление pg_stat_statements. Но обычно по умолчанию оно отключено, нам следует его активировать. Для этого в конфиге базы вставляем следующую строчку:




shared_preload_libraries = 'pg_stat_statements'




Затем в текущем сеансе работы с базой, запускаем команду:




create extension pg_stat_statements;




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




С помощью него вы можете получить статистику по уже выполненным запросам.




Например, мы можем получить запросы с максимальной загрузкой процессора такой командой:




SELECT substring(query, 1, 50) AS short_query, round(total_time::numeric, 2) AS total_time, calls, rows, round(total_time::numeric / calls, 2) AS avg_time, round((100 * total_time / sum(total_time::numeric) OVER ())::numeric, 2) AS percentage_cpu FROM pg_stat_statements ORDER BY total_time DESC LIMIT 20;




А максимально долгие запросы — вот такой:




SELECT substring(query, 1, 100) AS short_query, round(total_time::numeric, 2) AS total_time, calls, rows, round(total_time::numeric / calls, 2) AS avg_time, round((100 * total_time / sum(total_time::numeric) OVER ())::numeric, 2) AS percentage_cpu FROM pg_stat_statements ORDER BY avg_time DESC LIMIT 20;




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




8. Работаем с представлением pg_stat_user_tables




Таблица pg_stat_user_tables — ключевое конкурентное преимущество по сравнению с другими БД. С помощью неё мы, например, получить информацию о последовательном чтении с диска:




SELECT schemaname, relname, seq_scan, seq_tup_read, seq_tup_read / seq_scan AS avg, idx_scan FROM pg_stat_user_tables WHERE seq_scan > 0 ORDER BY seq_tup_read DESC LIMIT 25;




В верхней части таблиц будут как раз те самые операции, которые читали данные с диска. Если у таблицы больше 2000 записей, то такие операции должны производиться по индексу, а не с диска. Т.е. вы получите в первую очередь те запросы, которые вам потребуется оптимизировать.




Также вам следует посмотреть кеширование этих таблиц по представлению pg_statio_user_tables.




В этом вам помогут колонки heap_blks… и idx_blks…




9. Настраиваем память для PostgreSQL.




В зависимости от настроек сервера, настройки у вас будут примерно следующими:




effective_cache_size - 2/3 RAM
shared_buffers = RAM/4
temp_buffers = 256MB
work_mem = RAM/32
maintenance_work_mem = RAM/16




Но я рекомендую пользоваться специальными конфигураторами:




http://pgconfigurator.cybertec.at/ — продвинутый конфигуратор от Cybertec.




https://pgtune.leopard.in.ua/ — онлайн версия классического конфигуратора pgtune.




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




10. Настраиваем дисковую подсистему.




Если вам ничего больше ничего не помогло, то в крайнем случае вы можете выставить следующие настройки:




fsync=off
full_page_writes=off
synchronous_commit=off




Но в этом случае вы потеряете в надёжности хранения данных. Но если у вас PostgreSQL не является единственной системой по обработке данных и база асинхронно копируется в аналитические системы, то с такими настройками можно жить. Так как они снижают нагрузку на диск. Немного поясню по данным параметрам:




fsync – данные журнала принудительно сбрасываются на диск с кеша ОС.




full_page_write – 4КБ ОС и 8КБ Postgres.




synchronous_commit – транзакция завершается только когда данные фактически сброшены на диск.




checkpoint_completion_target – чем ближе к единице тем менее резкими будут скачки I/O при операциях checkpoint.




Ещё есть effective_io_concurrency – по количеству дисков и random_page_cost – отношение рандомного чтения к последовательному.




Впрямую на производительность не влияют, но могут существенно влиять на работу оптимизатора.




11. Настраиваем оптимизатор.




join_collapse_limit – сколько перестановок имеет смысл делать для поиска оптимального плана запроса. Интересный параметр. По умолчанию установлено 10, может имеет смысл повысить его в 10-20 раз.




default_statistics_target — число записей просматриваемых при сборе статистики по таблицам. Чем больше, тем тяжелее собрать статистику. Статистика нужна, к примеру для определения «плотности» данных.




online_analyze - включает немедленное обновление статистики
online_analyze.enable = on
online_analyze.table_type = "all"
geqo – включает генетическую оптимизацию запросов
enable_bitmapscan = on
enable_hashagg = on
enable_hashjoin = on
enable_indexscan = on
enable_indexonlyscan = on
enable_material = on
enable_mergejoin = on
enable_nestloop = on
enable_seqscan = on
enable_sort = on
enable_tidscan = on




12. Оптимизируем запросы.




Итак, вы нашли тяжёлые запросы, делаем по ним explain или analyze и первое на что вам следует обратить внимание — на следующие фразы:




— Seq Scan — значит, что запрос делается через последовательный перебор строк таблицы.




— Nested Loops — соединение с вложенными циклами.




Например, вас может насторожить следующий ответ базы:




Seq Scan ON test (cost=0.00..40.00 ROWS=20)




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




Также если Seq Scan по таблице, где rows более нескольких тысяч и при этом есть FILTER – в этом случае явно нужно посмотреть на поля в FILTER и найти подходящий индекс. Если не нашли – бинго, то одну из проблем вы решили.




Подробно описывать оптимизацию запросов я описывать не буду, это тема отдельной статьи.




Логика чтения плана запроса проста:




1) Смотрим на самый большой cost оператора




2) Это Seq Scan или nested loops?




3) Смотрим следующий по стоимости оператор




Оптимизация чаще всего заканчивается либо добавлением индекса, либо упрощением запроса (разбиением на части, использованием вложенных таблиц и т.п.), либо обновлением статистики, как это ни странно.




Для чтения планов рекомендую использовать следующий сервис:





https://tatiyants.com/pev




Что если проблема воспроизводится на проде?




В этом случае, вам надо воспользоваться параметром auto_explain. Он позволяет складировать ответ оптимизатора в одной папке. Включается следующим параметром:




session_preload_libraries = 'auto_explain'
auto_explain.log_min_duration = '3s‘
auto_explain.log_analyze = true




Теперь нам понадобится файлы вывести в красивом виде. В этом нам поможет pgBadger. Генерирует красивый html, но в настройках «можно утонуть».





https://github.com/darold/pgbadger




Вот так выглядит самая простая настройка:




pgbadger -j 4 -p '%t [%p]:[%l-1]' /var/log/postgresql/postgresql-9.6-main.log -o bad.html




На Prod auto_explain лучше не включать, или включать в крайнем случае и на короткое время. В случаях, если у вас нет просадки по ресурсам.




Стоит выделить наиболее часто встречающиеся ошибки:




  • Поиск по базе с использованием LIKE ‘%spoon%’. В этом случае надо подумать о переносе поиска в ElasticSearch. Или использовать FULL TEXT SEARCH.



  • Не внедрена система кэширования. Тогда стоит посмотреть на эту технологию: https://github.com/ohmu/pgmemcache. После скачивания и установки проделываем следующее:




shared_preload_libraries = ‘pgmemcache’
CREATE EXTENSION pgmemcache;
memcache_server_add('hostname:port'::TEXT)




Использование:




memcache_add(key::TEXT, value::TEXT)
newval = memcache_decr(key::TEXT)
memcache_delete(key::TEXT)




Если нужно кэширование внутри СУБД или временную таблицу в памяти. Но часто удобно использовать одну ORM или фреймворк имеет ограничения, или просто нужно оперативно заменить таблицу на inmemory KV хранилище.




— PostgreSQL используется в качестве OLAP. Самый простой вариант — быстро перенести данные в columnstore. https://github.com/citusdata/cstore_fdw




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




Источник: https://sergeyem.ru/blog/68



2023-09-09T02:47:51
Software

MX Service Manager: новый инструмент в MX Linux 23

MX Service Manager: новый инструмент в MX Linux 23

MX Service Manager: новый инструмент в MX Linux 23

Без сомнения, Debian GNU / Linux Это один из самых популярных, используемых и стабильных материнских дистрибутивов в мире. Linuxverse. По этой причине многие из его дочерних дистрибутивов (производных) оказываются столь же замечательными и полезными. Однако не для всех из них обычно характерно наличие собственной посылочной службы, т.е. надежная коллекция собственных инструментов. Кроме того, оригинальные и инновационные функции, а также специальные конфигурации или настройки, которые действительно делают его достойным внимания сообщества Linux.

Таким образом, хорошим примером этого случая обычно является дистрибутивы antiX и MX. В их число входит солидная и постоянно растущая коллекция проприетарных инструментов, которые в случае MX Linux обычно называются MX. Инструменты (Инструменты MX). И сегодня, 7 сентября 2023 года, они анонсировали еще один полезный инструмент, который дополняет указанную коллекцию, имя которой «Менеджер службы MX», то знакомству с ним мы посвятим эту своевременную публикацию.



Читать

Примеры запросов к метрикам Prometheus

Данную инструкцию можно использовать как шпаргалку для работы с Prometheus в части, касающейся выборки данных (использование PromQL). Мы попробуем описать процесс получения данных, а также будут приведены примеры извлечения наиболее значимых показателей.




Синтаксис запросов




Рассмотрим синтаксис некоторых функций, которые мы будем использовать в нашей инструкции. Проверять все наши запросы можно в веб-интерфейсе прометеуса на странице /graph.




irate или rate




В Prometheus значения для счетчиков всегда возрастают, но как правило, нам нужно знать изменение значения за определенный момент времени. Запрос будет выглядеть так:




irate(<запрос на выборку метрики>[интервал времени, на протяжении которого происходят изменения метрики])




avg by




Среднее значение по условию, например:




avg by (instance)




… среднее для каждого инстанса.




avg_over_time




Среднее значение всех значений для метрик в указанном интервале.




avg_over_time(<запрос на выборку метрики>[интервал])




sum




Функция суммирует полученные результаты:




sum(<запрос на получение значений>)




time




Отображает время в формате UNIX TIME.




time()




count




Считает количество значений:




count(<запрос на получение значений>)




Вместе с by значения могут фильтроваться:




count(<запрос на получение значений>) by (<по какому показателю>)




Арифметические операции




1. С полученными числовыми данными можно выполнять различные математические операции. Например, если мы получим значения времени в секундах, то можно его перевести в часы:




<полученное время> / 60




Или наоборот




<полученное время> * 60




2. Полученный остаток от процентного показателя вычистяется по формуле:




100 - <полученный процент>




Системная информация




Для начала рассмотрим примеры получения общих системных показателей.




Время работы системы (uptime)




Расчет ведется относительно показателя node_boot_time_seconds (время последнего включения системы).




1. Общее время для всех узлов:




sum(time() - node_boot_time_seconds{})




sum(time() - node_boot_time_seconds{}) / 60




* первый запрос в секундах, второй — в минутах.




2. Для некоторых узлов:




sum(time() - node_boot_time_seconds{instance=~"192.168.0.15:9100|192.168.0.20:9100"})




* в данном примере мы получим сумму значений для узлов 192.168.0.15 и 192.168.0.20.




3. Для всех узлов по отдельности:




time() - node_boot_time_seconds{}




* данный запрос выведет на экран несколько значений для каждого из узлов.




Температура




Данная метрика поддерживается не всем оборудованием или средствами виртуализации.




1. Для всех нод:




node_hwmon_temp_celsius




2. Для конкретных:




node_hwmon_temp_celsius{instance=~'192.168.0.15:9100|192.168.0.20:9100'}




Процессор




Для получения нужных нам показателей будем использовать метрику node_cpu_seconds_total.




Количество процессоров




1. Общее количество всех процессоров всех узлов:




sum(count(node_cpu_seconds_total{mode='system'}) by (cpu))




2. Для некоторых инстансов:




sum(count(node_cpu_seconds_total{instance=~'192.168.0.15:9100|192.168.0.20:9100',mode='system'}) by (cpu))




* для 192.168.0.15 и 192.168.0.20.




3. По отдельности:




count(node_cpu_seconds_total{mode='system'}) by (instance)




Нагрузка




1. На все ядра всех узлов:




(irate(node_cpu_seconds_total{job="node_exporter_clients",mode="idle"}[5m])) * 100




100 - ((irate(node_cpu_seconds_total{job="node_exporter_clients",mode="idle"}[5m])) * 100)




* первый запрос для отображения процента свободного процессорного времени, второй — процент утилизации.




Пример ответа:




{cpu="0", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.6000000238418579
{cpu="0", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.9999999403953552
{cpu="1", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.6000000238418579
{cpu="1", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 1.5999999642372131
{cpu="2", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.8000000193715096
{cpu="2", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.8000001311302185
{cpu="3", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 1.0000000149011612
{cpu="3", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.6000000238418579
{cpu="4", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.19999999552965164
{cpu="4", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.2000001072883606
{cpu="5", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.40000002831220627
{cpu="5", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.3999999165534973
{cpu="6", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.6000000238418579
{cpu="6", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.2000001072883606
{cpu="7", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.19999999552965164
{cpu="7", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.3999999165534973




2. Средняя величина по ядрам для всех узлов:




avg by (instance)(irate(node_cpu_seconds_total{job="node_exporter_clients",mode="idle"}[5m])) * 100




100 - (avg by (instance)(irate(node_cpu_seconds_total{job="node_exporter_clients",mode="idle"}[5m])) * 100)




* первый запрос для отображения процента свободного процессорного времени, второй — процент утилизации.




Пример ответа:




{instance="192.168.0.15:9100"} 0.7999999960884452
{instance="192.168.0.20:9100"} 0.9500000253319598




3. Средняя величина по ядрам для конкретного узла:




avg by (instance)(irate(node_cpu_seconds_total{instance="192.168.0.15:9100",job="node_exporter_clients",mode="idle"}[5m])) * 100




100 - (avg by (instance)(irate(node_cpu_seconds_total{instance="192.168.0.15:9100",job="node_exporter_clients",mode="idle"}[5m])) * 100)




* первый запрос для отображения процента свободного процессорного времени, второй — процент утилизации.




Пример ответа:




{instance="192.168.0.15:9100"} 1.100000003352747




Время ожидания




Запрос показывает значение в процентном эквиваленте для времени ожидания процессора. На практике, идеально, когда он равен нулю.




1. Среднее значение за 30 минут для всех узлов:




avg(irate(node_cpu_seconds_total{mode="iowait"}[30m])) * 100




2. Для конкретного узла:




avg(irate(node_cpu_seconds_total{instance=~"192.168.0.15:9100|192.168.0.20:9100",mode="iowait"}[30m])) * 100




3. Отдельно по каждой ноде:




irate(node_cpu_seconds_total{mode="iowait"}[30m]) * 100




Оперативная память




Для наших запросов мы будем использовать метрики:




  • node_memory_MemTotal_bytes.



  • node_memory_MemFree_bytes.



  • node_memory_Cached_bytes.



  • node_memory_Buffers_bytes.




Рассмотрим примеры.




Объем памяти




1. Для всех узлов:




sum(node_memory_MemTotal_bytes{})




2. Для некоторых:




sum(node_memory_MemTotal_bytes{instance=~"192.168.0.15:9100|192.168.0.20:9100"})




3. По отдельности:




node_memory_MemTotal_bytes{}




Использование памяти




1. Свободно:




100 * (1 - ((avg_over_time(node_memory_MemFree_bytes[5m]) + avg_over_time(node_memory_Cached_bytes[5m]) + avg_over_time(node_memory_Buffers_bytes[5m])) / avg_over_time(node_memory_MemTotal_bytes[5m])))




2. Занято:




100 * ((avg_over_time(node_memory_MemFree_bytes[5m]) + avg_over_time(node_memory_Cached_bytes[5m]) + avg_over_time(node_memory_Buffers_bytes[5m])) / avg_over_time(node_memory_MemTotal_bytes[5m]))




Пример ответа:




{instance="192.168.0.15:9100", job="node_exporter_clients"} 41.96494651116369
{instance="192.168.0.20:9100", job="node_exporter_clients"} 10.573695601658944




Сеть




Мы будем использовать метрики:




  • node_network_receive_bytes_total



  • node_network_transmit_bytes_total




Примеры ниже.




Передача данных




1. Входящий трафик за последние 5 минут:




rate(node_network_receive_bytes_total[5m]) * 8 / 1024 / 1024




2. Иcходящий трафик за последние 5 минут:




rate(node_network_transmit_bytes_total[5m]) * 8 / 1024 / 1024




Дисковый накопитель




Используемые метрики:




  • node_filesystem_size_bytes.



  • node_filesystem_avail_bytes.



  • node_filesystem_free_bytes.



  • node_disk_read_bytes_total.



  • node_disk_written_bytes_total.




Переходим к примерам.




Объемы




1. Объем разделов:




node_filesystem_size_bytes{instance=~'192.168.0.15:9100|192.168.0.20:9100',fstype=~"ext4|xfs"}




node_filesystem_size_bytes{fstype=~"ext4|xfs"}




* для конкретных нод или всех.




2. Объем доступного пространства:




node_filesystem_avail_bytes {fstype=~"ext4|xfs"}




3. Объем в процентах.




Используется:




1 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"})




Свободно:




node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"}




Нагрузка




1. Чтение в килобайтах:




rate(node_disk_read_bytes_total{instance="Server10:9100", device="sda"}[5m]) / 1024




irate(node_disk_read_bytes_total{}[30m]) / 1024




* для конкретного сервера / диска и для всех серверов и всех дисков.




2. Запись в килобайтах:




rate(node_disk_written_bytes_total{instance="Server10:9100", device="sda"}[5m]) / 1024




irate(node_disk_written_bytes_total{}[30m]) / 1024




* для конкретного сервера / диска и для всех серверов и всех дисков.




Источник: https://www.dmosk.ru/miniinstruktions.php?mini=prometheus-request



2023-09-04T23:27:41
Software

Различные типы программного обеспечения с примерами

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

 

Что такое программное обеспечение?

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

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

 

Типы программного обеспечения с примерами:

Ниже приведены типы программного обеспечения с примерами:

1. Программное обеспечение операционной системы:

  • Операционная система (OS) управляет аппаратными ресурсами и предоставляет пользовательский интерфейс. Это основа, на которой работает другое программное обеспечение.
  • Примеры: Microsoft Windows, macOS, Linux, Android, iOS.
  • Применение: Windows предоставляет удобный интерфейс для выполнения задач, в то время как Linux предпочтительнее для серверных приложений из-за его стабильности и настраиваемости.

2. Application Software:

  • Прикладное программное обеспечение служит конкретным целям для конечных пользователей, таким как производительность, развлечения, общение и многое другое.
  • Примеры: Пакет Microsoft Office (Word, Excel, PowerPoint), Adobe Photoshop, Spotify, Zoom.
  • Применение: Пакет Microsoft Office помогает в создании документов и управлении ими, в то время как Spotify предлагает потоковую передачу музыки.

3. Служебное программное обеспечение:

  • Служебное программное обеспечение повышает производительность компьютера, его безопасность и управление за счет выполнения задач технического обслуживания.
  • Примеры: антивирусное программное обеспечение (Norton, McAfee), очистка диска, программное обеспечение для резервного копирования.
  • Применение: Антивирусное программное обеспечение защищает системы от вредоносных программ, в то время как программное обеспечение для резервного копирования обеспечивает сохранение данных.

4. Программное обеспечение для программирования:

  • Программное обеспечение помогает разработчикам в создании, отладке и управлении кодом.
  • Примеры: Интегрированные среды разработки (IDE), такие как Visual Studio и Eclipse.
  • Применение: IDE предоставляют всеобъемлющую среду для написания, тестирования и отладки кода.

5. Системное программное обеспечение:

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

6. Встроенное программное обеспечение:

  • Встроенное программное обеспечение предназначено для конкретного оборудования и часто выполняет специализированные функции.
  • Примеры: Встроенное программное обеспечение в устройствах Интернета вещей и системах управления двигателем автомобиля.
  • Применение: Встроенное программное обеспечение обеспечивает питание интеллектуальных устройств и управляет критически важными системами, такими как двигатели.

7. Программное обеспечение с открытым исходным кодом:

  • Программное обеспечение с открытым исходным кодом разрабатывается совместно, и его исходный код доступен для общественности, способствуя инновациям, ориентированным на сообщество.
  • Примеры: ядро Linux, Mozilla Firefox, LibreOffice.
  • Применение: Программное обеспечение с открытым исходным кодом обеспечивает прозрачность и позволяет настраивать, что делает его ценным для различных приложений.

8. Несвободное программное обеспечение:

  • Проприетарное программное обеспечение разрабатывается и принадлежит компаниям, для использования которых часто требуются лицензии.
  • Примеры: Microsoft Windows (коммерческие версии), Adobe Creative Suite.
  • Применение: Проприетарное программное обеспечение широко используется для бизнес-приложений, дизайна и редактирования мультимедиа.

10. Бесплатная программа:

  • Freeware — это программное обеспечение, доступное бесплатно, но может не предоставлять пользователям полных прав на исходный код.
  • Примеры: Очиститель, бесплатный антивирус Avast.
  • Применение: Бесплатная программа предлагает базовую функциональность без финансовых затрат.

11. Условно-бесплатное:

  • Условно-бесплатное программное обеспечение обычно распространяется изначально бесплатно, но требует оплаты за расширенные функции или дальнейшее использование.
  • Примеры: WinRAR, WinZip.
  • Применение: Условно-бесплатное позволяет пользователям опробовать программное обеспечение перед совершением покупки.

 

Заключение

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

 

Часто задаваемые вопросы, связанные с различными типами программного обеспечения с примерами

Ниже обсуждаются некоторые часто задаваемые вопросы, связанные с различными типами программного обеспечения с примерами:

1. Не могли бы вы привести примеры прикладного программного обеспечения?

Примерами прикладного программного обеспечения являются Microsoft Word, Adobe Photoshop, Spotify и Zoom.

2. Что такое системное программное обеспечение?

Системное программное обеспечение отвечает за управление аппаратными ресурсами и предоставление платформы для запуска приложений.

3. Можете ли вы привести несколько примеров системного программного обеспечения?

Примеры системного программного обеспечения включают операционные системы, такие как Windows, macOS и Linux, а также драйверы устройств и встроенное программное обеспечение.

4. Что отличает программное обеспечение с открытым исходным кодом от проприетарного программного обеспечения?

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



2023-09-02T19:24:52
Программное обеспечение

Как проверить файлы журнала VLC

Устранение неполадок с воспроизведением видео в VLC? Вот как вы можете проверить файлы журнала VLC.

Во время просмотра ваших любимых видео на VLC вы можете столкнуться с проблемами, связанными с кодеками, временными метками, воспроизведением видео и многим другим.

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

В отличие от Linux, VLC не сохраняет журналы автоматически, и после закрытия все журналы автоматически удаляются, поэтому вам придется сохранять их вручную.

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

 

Только проверяйте и сохраняйте журналы VLC

Хотя это звучит сложно, это самый простой метод, который не только позволяет сохранять журналы, но и позволяет читать их, не сохраняя в файл.

Сначала перейдите в меню Tools на верхней панели меню и выберите выбрать Messages, в качестве альтернативы вы также можете нажать Ctrl + M, чтобы сохранить тот же эффект:

Как проверить файлы журнала VLC

 

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

Здесь у вас есть два варианта: вы можете либо только читать журналы, либо также сохранять их.

Как только вы нажмете на Messages, вы увидите вкладку для детализации, поэтому давайте посмотрим на эффект от множества доступных вам опций детализации.

  • Errors: При этом будут записаны только сообщения об ошибках
  • Warnings: Он завершит работу с сообщениями об ошибках и предупреждениями
  • Debug: Этот уровень будет включать ошибки, предупреждения и сообщения отладки

 

После выбора подходящего параметра детализации вскоре вы увидите журналы, связанные с выбранным параметром.

Как проверить файлы журнала VLC

 

Как вы можете видеть, когда мы выбираем опцию debug, она также включает журналы предупреждений.

Чтобы сохранить журналы, нажмите кнопку Save as..., и откроется файловый менеджер, оттуда выберите, где вы можете сохранить файл, и дайте ему соответствующее имя:

Как проверить файлы журнала VLC

 

И теперь вы можете открыть файл журнала с помощью любого текстового редактора:

Как проверить файлы журнала VLC

 

Отсюда вы можете определить виновника, вызывающего ошибки.



2023-09-01T05:53:38
Программное обеспечение