<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Вороний блог | Linux и IT</title><subtitle>Меня зовут Иван Чёрный, я автор статей и владелец сайта r4ven.me - Вороний блог.</subtitle><author><name>Вороний блог | Linux и IT</name></author><id>https://teletype.in/atom/r4ven_me</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/r4ven_me?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/r4ven_me?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-06-24T03:23:45.668Z</updated><entry><id>r4ven_me:linux-quiz-21-25</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/linux-quiz-21-25?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Linux викторина №21-25: что делает команда/скрипт на изображении?</title><published>2024-12-02T17:33:00.362Z</published><updated>2024-12-02T17:33:00.362Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/45/d0/45d07084-2325-4851-8a0c-743b3e0a993a.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/51/dc/51dc0397-3517-42b4-81bb-dc3bad9391a1.png&quot;&gt;Пройти тест можно на моём сайте r4ven.me.</summary><content type="html">
  &lt;figure id=&quot;RGpj&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/51/dc/51dc0397-3517-42b4-81bb-dc3bad9391a1.png&quot; width=&quot;1024&quot; /&gt;
    &lt;figcaption&gt;Linux викторина №21-25: что делает команда/скрипт на изображении?&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section&gt;
    &lt;p id=&quot;ZY6G&quot;&gt;&lt;strong&gt;Пройти тест можно на моём сайте &lt;a href=&quot;https://r4ven.me/it-razdel/linux-quiz/linux-viktorina-21-25-chto-delaet-komanda-skript-na-izobrazhenii/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/linux-quiz/linux-viktorina-16-20-chto-delaet-kazhdaya-komanda-na-izobrazhenii/&quot; target=&quot;_blank&quot;&gt;.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;MLbi&quot;&gt;&lt;em&gt;Присоединяйтесь к нашему каналу в телеграм: &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат: &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</content></entry><entry><id>r4ven_me:proverit-skorost-vpn</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/proverit-skorost-vpn?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Быстрый способ проверить скорость VPN соединения с помощью SSH</title><published>2024-11-29T18:09:24.482Z</published><updated>2024-11-29T18:09:24.482Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/18/e1/18e149a3-14ef-4d2c-a584-ca52aa9f98fd.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ed/fe/edfe36de-98e5-41cc-952a-72778b2d304e.png&quot;&gt;Исходный сайт представленного материала: r4ven.me</summary><content type="html">
  &lt;figure id=&quot;b9Zo&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ed/fe/edfe36de-98e5-41cc-952a-72778b2d304e.png&quot; width=&quot;1024&quot; /&gt;
    &lt;figcaption&gt;Быстрый способ проверить скорость VPN соединения с помощью SSH&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Fo2R&quot;&gt;Исходный сайт представленного материала: &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/bystryj-sposob-proverit-skorost-vpn-soedineniya-s-pomoshhyu-ssh/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;ffwB&quot;&gt;Приветствую!&lt;/h3&gt;
  &lt;p id=&quot;PMKV&quot;&gt;Короткая заметка про то, как проверить скорость Download/Upload с помощью SSH в Linux. Подобная диагностика бывает полезна при анализе проблем, связанных с передачей данных по защищенным каналам связи, таким как &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/vpn-tehnologiya-dlya-obespecheniya-bezopasnogo-setevogo-vzaimodejstviya/&quot; target=&quot;_blank&quot;&gt;VPN&lt;/a&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;LxYv&quot;&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;giln&quot;&gt;Демонстрация из статьи выполнялась в среде дистрибутива &lt;strong&gt;Linux Mint Debian Edition 6&lt;/strong&gt; (Debian 12). Все аналогичным образом будет работать и в других &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/distributiv-linux/&quot; target=&quot;_blank&quot;&gt;дистрибутивах Linux&lt;/a&gt;.&lt;/p&gt;
  &lt;figure id=&quot;vX1s&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3c/52/3c522e06-3ef2-4a0e-8589-5d18905e71a5.png&quot; width=&quot;705&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;chZK&quot;&gt;Подготовка&lt;/h2&gt;
  &lt;p id=&quot;MYfP&quot;&gt;Для работы нам понадобятся:&lt;/p&gt;
  &lt;ul id=&quot;huhU&quot;&gt;
    &lt;li id=&quot;QyEk&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/zametki/ssh-bezopasnoe-podklyuchenie-k-udalyonnym-hostam-vvedenie/&quot; target=&quot;_blank&quot;&gt;доступ к удаленному серверу по SSH;&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;twlx&quot;&gt;утилита контроля &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-perenapravlenie-vvoda-i-vyvoda/&quot; target=&quot;_blank&quot;&gt;пайплайнов&lt;/a&gt; – &lt;code&gt;pv&lt;/code&gt; (pipeviewer);&lt;/li&gt;
    &lt;li id=&quot;QWoj&quot;&gt;утилита низкоуровневой передачи данных – &lt;code&gt;dd&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;QK9V&quot;&gt;утилита &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-vyvod-i-chtenie-soderzhimogo-komandy-echo-cat-less/&quot; target=&quot;_blank&quot;&gt;вывода содержимого&lt;/a&gt; – &lt;code&gt;cat&lt;/code&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;JyCZ&quot;&gt;Из списка выше доустановить потребуется лишь утилиту &lt;code&gt;pv&lt;/code&gt; (крайне полезная вещь). Она есть в стандартных &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/repozitorij-programmnogo-obespecheniya/&quot; target=&quot;_blank&quot;&gt;репозиториях&lt;/a&gt;:&lt;/p&gt;
  &lt;pre id=&quot;4SPQ&quot;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install pv&lt;/pre&gt;
  &lt;figure id=&quot;O4Lf&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-52.png&quot; width=&quot;1237&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;lmyi&quot;&gt;Проверка скорости&lt;/h2&gt;
  &lt;blockquote id=&quot;gk67&quot;&gt;Сразу стоит отметить, что скорость передачи данных может зависеть от:пропускной способности сети;производительности CPU, так как SSH использует шифрование;настроек SSH, таких как алгоритмы шифрования.&lt;/blockquote&gt;
  &lt;p id=&quot;YqVl&quot;&gt;В моем примере для подключения используется имя пользователя на удаленном сервере – &lt;strong&gt;ivan&lt;/strong&gt; и адрес хоста – &lt;strong&gt;vpn.r4ven.me&lt;/strong&gt; (можно указать IP). Замените эти значения в командах на свои.&lt;/p&gt;
  &lt;p id=&quot;yoxo&quot;&gt;Отключите VPN и проверьте скорость download с помощью команды:&lt;/p&gt;
  &lt;p id=&quot;ao9z&quot;&gt;Будьте осторожны с командой &lt;code&gt;dd&lt;/code&gt;! Чтобы случайно не перезаписать важные данные.&lt;/p&gt;
  &lt;pre id=&quot;42Yn&quot;&gt;ssh ivan@vpn.r4ven.me dd if=/dev/zero bs=1M count=1024 | pv | cat &amp;gt; /dev/null&lt;/pre&gt;
  &lt;figure id=&quot;rst3&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-53.png&quot; width=&quot;1329&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;wuiK&quot;&gt;Для остановки проверки используйте сочетание клавиш &lt;code&gt;Ctrl+c&lt;/code&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;eBH4&quot;&gt;И теперь скорость upload:&lt;/p&gt;
  &lt;pre id=&quot;C0vn&quot;&gt;dd if=/dev/zero bs=1M count=1024 | pv | ssh ivan@vpn.r4ven.me &amp;#x27;cat &amp;gt; /dev/null&amp;#x27;&lt;/pre&gt;
  &lt;figure id=&quot;ZdqG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-54.png&quot; width=&quot;1324&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2Mi3&quot;&gt;Затем включите VPN и выполните обе команды снова. Если без туннелирования трафика скорость значительно выше, значит факторы, влияющие на скорость передачи данных на самом сервере, где развернут VPN. Если скорость низкая в обоих случаях, вероятно дело в канале до сервера.&lt;/p&gt;
  &lt;h2 id=&quot;EZVE&quot;&gt;Что вообще делают эти команды&lt;/h2&gt;
  &lt;h3 id=&quot;1gUJ&quot;&gt;1-я команда (Download)&lt;/h3&gt;
  &lt;ul id=&quot;Kkse&quot;&gt;
    &lt;li id=&quot;EdkI&quot;&gt;&lt;code&gt;ssh ivan@vpn.r4ven.me dd if=/dev/zero bs=1M count=1024&lt;/code&gt; – генерирует поток нулевых данных (из &lt;code&gt;/dev/zero&lt;/code&gt;) на удалённом сервере с помощью утилиты &lt;code&gt;dd&lt;/code&gt; размером 1 ГБ (1024 блока по 1 МБ) и отправляет их через SSH-соединение;&lt;/li&gt;
    &lt;li id=&quot;xp63&quot;&gt;&lt;code&gt;| pv&lt;/code&gt; – на локальной машине с помощью &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-perenapravlenie-vvoda-i-vyvoda/&quot; target=&quot;_blank&quot;&gt;механизма перенаправления&lt;/a&gt; измеряет скорость получения по SSH данных;&lt;/li&gt;
    &lt;li id=&quot;TaT5&quot;&gt;&lt;code&gt;| cat &amp;gt; /dev/null&lt;/code&gt; – перенаправляет поток данных, проходящий через &lt;code&gt;pv&lt;/code&gt; в псевдоустройство (черную дыру), исключая нагрузку на диск.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;1R8G&quot;&gt;2-я команда (Upload)&lt;/h3&gt;
  &lt;ul id=&quot;tSNc&quot;&gt;
    &lt;li id=&quot;qNv0&quot;&gt;&lt;code&gt;dd if=/dev/zero bs=1M count=1024&lt;/code&gt; – генерирует поток нулевых данных (&lt;code&gt;/dev/zero&lt;/code&gt;) на локальной машине также с помощью утилиты &lt;code&gt;dd&lt;/code&gt; (1 ГБ);&lt;/li&gt;
    &lt;li id=&quot;gWxk&quot;&gt;&lt;code&gt;| pv&lt;/code&gt; – измеряет скорость передачи данных;&lt;/li&gt;
    &lt;li id=&quot;hH7M&quot;&gt;&lt;code&gt;| ssh ivan@vpn.r4ven.me &amp;#x27;cat &amp;gt; /dev/null&amp;#x27;&lt;/code&gt; – передает данные через SSH на удалённый сервер также в черную дыру.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;FuT1&quot;&gt;Таким образом выполняется синтетическая проверка, которая просто утилизирует канал не создавая при этом никаких файлов.&lt;/p&gt;
  &lt;h2 id=&quot;ZlLR&quot;&gt;Если при включенном VPN маршрут до удаленного сервера идет не через туннель&lt;/h2&gt;
  &lt;p id=&quot;W8CL&quot;&gt;В такой ситуации попробуйте временно добавить маршрут вручную, а после проведения проверок удалить. &lt;strong&gt;Но только если удаленный сервер – это не сам сервер VPN!&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;UTcD&quot;&gt;Вот пример команд:&lt;/p&gt;
  &lt;pre id=&quot;HOWf&quot;&gt;# проверка маршрута
ip route get &amp;lt;IP_address&amp;gt;

# добавление маршрута через серетвой интерфейс tun0
ip route add &amp;lt;IP_address&amp;gt; dev tun0

# удаление добавленного ранее маршрута
ip route del &amp;lt;IP_address&amp;gt; dev tun0&lt;/pre&gt;
  &lt;p id=&quot;i9Os&quot;&gt;Где &lt;code&gt;&amp;lt;IP_address&amp;gt;&lt;/code&gt; – IP адрес сервера, а &lt;code&gt;tun0&lt;/code&gt; – это виртуальный сетевой интерфейс вашего туннельного соединения на локальной машине. Замените значения на свои. Узнать их можно с помощью команд:&lt;/p&gt;
  &lt;pre id=&quot;MDwc&quot;&gt;# ip адрес
ping -c1 vpn.r4ven.me | head -1 | awk -F&amp;#x27;[()]&amp;#x27; &amp;#x27;{print $2}&amp;#x27;

# список интерфейсов
ip address&lt;/pre&gt;
  &lt;h2 id=&quot;nsRs&quot;&gt;На почитать&lt;/h2&gt;
  &lt;ul id=&quot;oPsU&quot;&gt;
    &lt;li id=&quot;7weL&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/zametki/ssh-bezopasnoe-podklyuchenie-k-udalyonnym-hostam-vvedenie/&quot; target=&quot;_blank&quot;&gt;SSH – Безопасное подключение к удалённым хостам: введение | Вороний блог&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;l64I&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-perenapravlenie-vvoda-i-vyvoda/&quot; target=&quot;_blank&quot;&gt;Командная строка Linux, перенаправление ввода и вывода: операторы “&amp;gt;”, “&amp;lt;“, “|”&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;luZx&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/podnimaem-openconnect-ssl-vpn-server-ocserv-v-docker-dlya-vnutrennih-proektov/&quot; target=&quot;_blank&quot;&gt;Поднимаем OpenConnect SSL VPN сервер (ocserv) в docker для внутренних проектов | Вороний блог&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;xWvB&quot;&gt;&lt;a href=&quot;https://habr.com/ru/articles/65384/&quot; target=&quot;_blank&quot;&gt;pv — маленькая, но очень полезная утилита | Habr&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;2LsD&quot;&gt;&lt;a href=&quot;https://manpages.ubuntu.com/manpages/xenial/man1/pv.1.html&quot; target=&quot;_blank&quot;&gt;Мануал утилиты pv | ubuntu.com (EN)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>r4ven_me:tmux-ustanovka-i-kastomizaciya</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/tmux-ustanovka-i-kastomizaciya?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Tmux – установка и кастомизация + Nord theme</title><published>2024-11-26T08:32:05.747Z</published><updated>2024-11-26T08:32:05.747Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/0b/c7/0bc77a04-32af-4527-a7d6-f430bbd36423.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/92/7b/927b7302-83a2-4f56-bfdf-f190f795cb5b.png&quot;&gt;Исходный сайт представленного материала: r4ven.me</summary><content type="html">
  &lt;figure id=&quot;La8v&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/92/7b/927b7302-83a2-4f56-bfdf-f190f795cb5b.png&quot; width=&quot;1024&quot; /&gt;
    &lt;figcaption&gt;Tmux – установка и кастомизация + Nord theme&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;pJUg&quot;&gt;Исходный сайт представленного материала: &lt;a href=&quot;https://r4ven.me/it-razdel/poleznoe-po/tmux-ustanovka-i-kastomizaciya-nord-theme/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;niUj&quot;&gt;Приветствую!&lt;/h3&gt;
  &lt;p id=&quot;hss0&quot;&gt;В &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/terminalnyj-multipleksor/&quot; target=&quot;_blank&quot;&gt;прошлой заметке&lt;/a&gt;📝 мы говорили про терминальные мультиплексоры и какие задачи они выполняют. В сегодняшней статье я продемонстрирую установку и кастомизацию самого популярного инструмента из данной категории – &lt;strong&gt;Tmux&lt;/strong&gt;🪟. Как обычно, уже все &lt;s&gt;выстрадано&lt;/s&gt; настроено, и для повторения подобного у вас, необходимо будет выполнить всего несколько команд🧑‍💻.&lt;/p&gt;
  &lt;blockquote id=&quot;PEXT&quot;&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;mfbm&quot;&gt;Демонстрация, приведенная в данной статье выполнялась в среде дистрибутива &lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/nativnoe-obnovlenie-s-linux-mint-21-3-do-linux-mint-22/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Linux Mint 22&lt;/strong&gt;&lt;/a&gt; с &lt;strong&gt;Tmux&lt;/strong&gt; версии &lt;strong&gt;3.4&lt;/strong&gt;✍️.&lt;/p&gt;
  &lt;figure id=&quot;lJML&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/89/26/8926dd1a-5b3f-4532-a027-704cd8877641.png&quot; width=&quot;711&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;hiTJ&quot;&gt;Предисловие&lt;/h2&gt;
  &lt;p id=&quot;0i9w&quot;&gt;Я очень люблю тему &lt;a href=&quot;https://r4ven.me/tag/nord-theme/&quot; target=&quot;_blank&quot;&gt;Nord&lt;/a&gt;❄️ от разработчиков Arcticicestudio⛄️ и предпочитаю оформлять свою систему и приложения в этой палитре😌. Tmux не стал исключением, поэтому для корректного и гармоничного отображения конфигурации, как у меня вам понадобятся:&lt;/p&gt;
  &lt;ol id=&quot;aeeN&quot;&gt;
    &lt;li id=&quot;GWXg&quot;&gt;Любой моноширный иконочный &lt;strong&gt;Powerline&lt;/strong&gt; &lt;strong&gt;шрифт&lt;/strong&gt;⚡️.&lt;/li&gt;
    &lt;ul id=&quot;9Rpu&quot;&gt;
      &lt;li id=&quot;1lS4&quot;&gt;&lt;em&gt;Например из проекта &lt;a href=&quot;https://www.nerdfonts.com/&quot; target=&quot;_blank&quot;&gt;Nerd fonts&lt;/a&gt;. Я предпочитаю шрифт &lt;a href=&quot;https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/Hack.zip&quot; target=&quot;_blank&quot;&gt;Hack Nerd Font Mono&lt;/a&gt;. Шрифт необходимо поместить по пути &lt;code&gt;/usr/share/fonts/&lt;/code&gt; либо отдельно для пользователя в &lt;code&gt;~/.local/share/fonts/&lt;/code&gt; и применить его к терминалу.&lt;/em&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;PKpu&quot;&gt;Любой &lt;strong&gt;эмулятор терминал&lt;/strong&gt;🧑‍💻, с поддержкой TrueColor и темы Nord.&lt;/li&gt;
    &lt;ul id=&quot;Wy6P&quot;&gt;
      &lt;li id=&quot;aVlG&quot;&gt;&lt;em&gt;Например &lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/kastomizaciya-linux-mint-20-nord-theme/#%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB_Gnome&quot; target=&quot;_blank&quot;&gt;Gnome-terminal&lt;/a&gt; или &lt;a href=&quot;https://r4ven.me/it-razdel/poleznoe-po/guake-vypadayushhij-drop-down-terminal/&quot; target=&quot;_blank&quot;&gt;выпадающий (drop-down) терминал – Guake&lt;/a&gt;. По моему опыту, данная тема есть под любой популярный эмулятор терминала;&lt;/em&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;K5qs&quot;&gt;(Опционально) &lt;strong&gt;Консольный редактор&lt;/strong&gt;📝 с темой Nord.&lt;/li&gt;
    &lt;ul id=&quot;xkyX&quot;&gt;
      &lt;li id=&quot;MBIo&quot;&gt;&lt;em&gt;Например &lt;a href=&quot;https://r4ven.me/it-razdel/poleznoe-po/neovim-ustanovka-i-nastrojka-redaktora-koda-s-elementami-ide-vsego-v-neskolko-komand/&quot; target=&quot;_blank&quot;&gt;Vim/Neovim&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;Qtky&quot;&gt;(Опционально) Интерактивная &lt;strong&gt;командная оболочка&lt;/strong&gt;💻.&lt;/li&gt;
    &lt;ul id=&quot;5B63&quot;&gt;
      &lt;li id=&quot;dWaJ&quot;&gt;&lt;em&gt;Например &lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/zsh-interaktivnaya-komandnaya-obolochka-dlya-linux-oh-my-zsh/&quot; target=&quot;_blank&quot;&gt;Zsh + Oh-My-Zsh&lt;/a&gt; с темой &lt;strong&gt;agnoster&lt;/strong&gt;.&lt;/em&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;zjfp&quot;&gt;Для тех, кто только знакомится с Tmux кратко перечислю его сущности🧐:&lt;/p&gt;
  &lt;ul id=&quot;pl9G&quot;&gt;
    &lt;li id=&quot;4xjO&quot;&gt;&lt;strong&gt;Сессия (session)&lt;/strong&gt; – основная единица работы, содержащая окна и панели;&lt;/li&gt;
    &lt;li id=&quot;SXYp&quot;&gt;&lt;strong&gt;Окно (window)&lt;/strong&gt; – отдельный терминал в сессии;&lt;/li&gt;
    &lt;li id=&quot;uvbU&quot;&gt;&lt;strong&gt;Панель (pane)&lt;/strong&gt; – разделение окна на несколько терминалов (панелей);&lt;/li&gt;
    &lt;li id=&quot;pQTH&quot;&gt;&lt;strong&gt;Команды (command)&lt;/strong&gt; – инструкции для управления &lt;code&gt;tmux&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;2R5p&quot;&gt;&lt;strong&gt;Клавиша префикса (prefix)&lt;/strong&gt; – клавиша для активации команд (по умолчанию &lt;code&gt;Ctrl-b&lt;/code&gt;);&lt;/li&gt;
    &lt;li id=&quot;FgFR&quot;&gt;&lt;strong&gt;Состояние (state)&lt;/strong&gt; – активные и неактивные окна и панели;&lt;/li&gt;
    &lt;li id=&quot;57f8&quot;&gt;&lt;strong&gt;Конфигурация (config)&lt;/strong&gt; – настройки tmux, например в файле &lt;code&gt;~/.tmux.conf&lt;/code&gt; или &lt;code&gt;~/.config/tmux/tmux.conf&lt;/code&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;DBAN&quot;&gt;Можем приступать к установке.&lt;/p&gt;
  &lt;h2 id=&quot;6Khq&quot;&gt;Установка Tmux&lt;/h2&gt;
  &lt;figure id=&quot;2RTM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-49.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;3lpQ&quot;&gt;Tmux почти всегда есть в стандартных репозиториях, а во многих &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/distributiv-linux/&quot; target=&quot;_blank&quot;&gt;дистрибутивах&lt;/a&gt; Linux он даже предустановлен👌.&lt;/p&gt;
  &lt;p id=&quot;g8md&quot;&gt;Открываем терминал и выполняем:&lt;/p&gt;
  &lt;pre id=&quot;IhW7&quot;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y curl git xclip tmux&lt;/pre&gt;
  &lt;ul id=&quot;10rM&quot;&gt;
    &lt;li id=&quot;j73o&quot;&gt;&lt;code&gt;curl&lt;/code&gt; – утилита для взаимодействия с web (понадобится для скачивания конфига);&lt;/li&gt;
    &lt;li id=&quot;Mh1m&quot;&gt;&lt;code&gt;git&lt;/code&gt; – система контроля версий и одноименная утилита для работы с git &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/repozitorij-programmnogo-obespecheniya/&quot; target=&quot;_blank&quot;&gt;репозиториями&lt;/a&gt; (нужна для установки сторонних плагинов);&lt;/li&gt;
    &lt;li id=&quot;RUXy&quot;&gt;&lt;code&gt;xclip&lt;/code&gt; – утилита управления буфером обмена в &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/okruzhenie-rabochego-stola/&quot; target=&quot;_blank&quot;&gt;desktop&lt;/a&gt; системах Xorg, обычно предустановлена (если выполняете установку tmux на системе без gui, то ее можно не устанавливать);&lt;/li&gt;
    &lt;li id=&quot;34aK&quot;&gt;&lt;code&gt;tmux&lt;/code&gt; – сам терминальный мультиплексор;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;qWRs&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-46.png&quot; width=&quot;1163&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;el38&quot;&gt;Скачивание конфига и запуск&lt;/h2&gt;
  &lt;p id=&quot;UAOn&quot;&gt;Теперь воспользуемся утилитой &lt;code&gt;curl&lt;/code&gt;, чтобы скачать файл конфигурации Tmux с моего &lt;a href=&quot;https://github.com/r4ven-me/dots/blob/main/.config/tmux/tmux.conf&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;😇 репозитория:&lt;/p&gt;
  &lt;pre id=&quot;4nh6&quot;&gt;curl --create-dirs -fLo \
    ~/.config/tmux/tmux.conf \
    https://raw.githubusercontent.com/r4ven-me/dots/main/.config/tmux/tmux.conf&lt;/pre&gt;
  &lt;figure id=&quot;csLR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-45.png&quot; width=&quot;1184&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;LIem&quot;&gt;Осталось только запустить Tmux😳. Первый запуск займет некоторое время⏳, т.к. будут скачиваться менеджер плагинов и далее сами плагины с помощью этого менеджера.&lt;/p&gt;
  &lt;blockquote id=&quot;i0A9&quot;&gt;Конфигурация построена так, что при добавлении новых плагинов, во время запуска/перезапуска Tmux, они будут устанавливаться автоматически😌. Для установки плагинов вручную используйте &lt;code&gt;prefix+I&lt;/code&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;5BmL&quot;&gt;Для создания новой именованной сессии воспользуйтесь командой:&lt;/p&gt;
  &lt;pre id=&quot;yj5U&quot;&gt;tmux new -s Work&lt;/pre&gt;
  &lt;p id=&quot;Ubm9&quot;&gt;Где:&lt;/p&gt;
  &lt;ul id=&quot;foNh&quot;&gt;
    &lt;li id=&quot;QZCg&quot;&gt;&lt;code&gt;new&lt;/code&gt; – команда создания новой сессии;&lt;/li&gt;
    &lt;li id=&quot;UFa1&quot;&gt;&lt;code&gt;-s&lt;/code&gt; – ключ для указания имени сессии;&lt;/li&gt;
    &lt;li id=&quot;BnJZ&quot;&gt;&lt;code&gt;Work&lt;/code&gt; – произвольное имя сессии.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;yoFu&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-47.png&quot; width=&quot;1013&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Fzt1&quot;&gt;Должно получиться примерно так:&lt;/p&gt;
  &lt;figure id=&quot;YTCF&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-48.png&quot; width=&quot;1094&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;GxOf&quot;&gt;Все😃 настройка завершена! теперь можно активно пользоваться:&lt;/p&gt;
  &lt;figure id=&quot;4hGM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-50-1500x845.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;tbHd&quot;&gt;Понравился мой конфиг Neovim? Можете с легкостью создать аналогичный по статье: &lt;a href=&quot;https://r4ven.me/it-razdel/poleznoe-po/neovim-ustanovka-i-nastrojka-redaktora-koda-s-elementami-ide-vsego-v-neskolko-komand/&quot; target=&quot;_blank&quot;&gt;Neovim – Установка и настройка редактора кода с элементами IDE всего в несколько команд&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;figure id=&quot;yki0&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-38.png&quot; width=&quot;344&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;zg5v&quot;&gt;А если у вас широкий монитор, то вообще 🔥🔥🔥!&lt;/p&gt;
  &lt;figure id=&quot;eJvo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/13-33-09_23-11-2024.resized.png&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;В таком терминале и жить можно😎&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;yczd&quot;&gt;Для выхода из &lt;code&gt;tmux&lt;/code&gt; без закрытия сессий отправьте команду &lt;code&gt;dettach&lt;/code&gt; специальной горячей клавишей: сперва нажмите сочетание клавиш так называемого префикса, по умолчанию это &lt;code&gt;Ctrl+b&lt;/code&gt;, а затем сразу же клавишу &lt;code&gt;d&lt;/code&gt;, сокращенно: &lt;code&gt;prefix+d&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;AWiB&quot;&gt;Да, такой стиль горячих клавиш у Tmux🤷‍♂️. Сперва нажимается клавиша &lt;code&gt;prefix&lt;/code&gt;, а затем клавиша действия/команды. К такому способу нужно привыкнуть. Клавишу &lt;code&gt;prefix&lt;/code&gt; можно изменить в конфигурации. Но делать это не рекомендуется, чтобы сохранить универсальность🫠.&lt;/p&gt;
  &lt;p id=&quot;6hq2&quot;&gt;Для возврата к запущенной сессии воспользуйтесь командой:&lt;/p&gt;
  &lt;pre id=&quot;lEOA&quot;&gt;tmux attach -t Work || tmux new -s Work&lt;/pre&gt;
  &lt;p id=&quot;Pbtp&quot;&gt;Где:&lt;/p&gt;
  &lt;ul id=&quot;ZvEZ&quot;&gt;
    &lt;li id=&quot;RyCX&quot;&gt;&lt;code&gt;attach&lt;/code&gt; – команда подключения к запущенной сессии;&lt;/li&gt;
    &lt;li id=&quot;zpN8&quot;&gt;&lt;code&gt;-t&lt;/code&gt; – ключ для указания тега/имени существующей сессии;&lt;/li&gt;
    &lt;li id=&quot;xPAv&quot;&gt;&lt;code&gt;Work&lt;/code&gt; – имя запущенной ранее нами сессии;&lt;/li&gt;
    &lt;li id=&quot;dE7W&quot;&gt;&lt;code&gt;||&lt;/code&gt; – логическое “или” в контексте оболочки, другими словами, параметр &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-kontrol-vypolneniya-komand/&quot; target=&quot;_blank&quot;&gt;контроля выполнения&lt;/a&gt;, который запустит следующую за ним команду в случае ошибки предыдущей.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;GlOX&quot;&gt;Рекомендую сразу же создать удобный alias для вашей &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/komandnyj-interpretator-ili-obolochka-shell/&quot; target=&quot;_blank&quot;&gt;оболочки&lt;/a&gt;:&lt;/p&gt;
  &lt;pre id=&quot;cP2A&quot;&gt;echo &amp;#x27;alias T=&amp;quot;tmux attach -t Work || tmux new -s Work&amp;quot;&amp;#x27; &amp;gt;&amp;gt; ~/.profile

source ~/.profile&lt;/pre&gt;
  &lt;p id=&quot;mSWi&quot;&gt;Замените &lt;code&gt;~/.profile&lt;/code&gt; на файл с параметрами подготовки вашего окружения оболочки при необходимости☝️.&lt;/p&gt;
  &lt;p id=&quot;fklO&quot;&gt;Теперь подключаться к существующей сессии с именем &lt;strong&gt;Work&lt;/strong&gt; можно просто по команде из одной буквы &lt;code&gt;T&lt;/code&gt;.&lt;/p&gt;
  &lt;h2 id=&quot;jjpF&quot;&gt;Описание конфигурации и обзор файла tmux.conf&lt;/h2&gt;
  &lt;h3 id=&quot;iUa0&quot;&gt;Что дополняет/изменяет данная конфигурация&lt;/h3&gt;
  &lt;p id=&quot;xGZv&quot;&gt;&lt;strong&gt;Общие настройки📖:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;wht7&quot;&gt;
    &lt;li id=&quot;pqjj&quot;&gt;включена поддержка 256 цветов: &lt;code&gt;screen-256color&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;Bo3f&quot;&gt;включена поддержка TrueColor для более точного отображения цветов;&lt;/li&gt;
    &lt;li id=&quot;DLq3&quot;&gt;окна нумеруются с 1, а не с 0 (&lt;code&gt;base-index 1&lt;/code&gt;);&lt;/li&gt;
    &lt;li id=&quot;MOIm&quot;&gt;панели в окнах тоже нумеруются с 1 (&lt;code&gt;pane-base-index 1&lt;/code&gt;);&lt;/li&gt;
    &lt;li id=&quot;UAno&quot;&gt;лимит буфера истории увеличен до 10,000 строк для прокрутки терминала;&lt;/li&gt;
    &lt;li id=&quot;eegb&quot;&gt;включена мышь! можно щелкать для выбора окон, прокручивать вывод, изменять размер панелей, менять их местами, также доступен вызов контекстного меню через ПКМ;&lt;/li&gt;
    &lt;li id=&quot;hcom&quot;&gt;включено автоматическое обновление заголовков окон терминала;&lt;/li&gt;
    &lt;li id=&quot;ddC0&quot;&gt;используются vi-стиль клавиш для работы в режиме копирования (&lt;code&gt;mode-keys vi&lt;/code&gt;) и взаимодействия с командами tmux (&lt;code&gt;status-keys vi&lt;/code&gt; вызывается &lt;code&gt;prefix+:&lt;/code&gt;);&lt;/li&gt;
    &lt;li id=&quot;R796&quot;&gt;установлена Zsh как оболочка по умолчанию (замените на свою, если используется иная);&lt;/li&gt;
    &lt;li id=&quot;XkB3&quot;&gt;установлена локаль &lt;code&gt;ru_RU.UTF-8&lt;/code&gt;, чтобы корректно отображать русские символы.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;VvJA&quot;&gt;&lt;strong&gt;Управление мышью🐁:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;LZcN&quot;&gt;
    &lt;li id=&quot;axqa&quot;&gt;Общие действия:&lt;/li&gt;
    &lt;ul id=&quot;ZOeA&quot;&gt;
      &lt;li id=&quot;L7DX&quot;&gt;двойной клик по строке статуса создает новое окно (&lt;code&gt;bind-key -n DoubleClick1Status new-window&lt;/code&gt;);&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;cIM0&quot;&gt;Если используется X11-сервер при работы с tmux:&lt;/li&gt;
    &lt;ul id=&quot;Svj2&quot;&gt;
      &lt;li id=&quot;Q65z&quot;&gt;средняя кнопка мыши вставляет текст из системного буфера обмена (используется &lt;code&gt;xclip&lt;/code&gt;);&lt;/li&gt;
      &lt;li id=&quot;VPjQ&quot;&gt;после выделения текста с помощью мыши копирует текст в буфер обмена без очистки выделения;&lt;/li&gt;
      &lt;li id=&quot;V5qj&quot;&gt;в режиме копирования(!) поддерживается выбор слова/строки по двойному/тройному клику:&lt;/li&gt;
      &lt;ul id=&quot;9ra7&quot;&gt;
        &lt;li id=&quot;absH&quot;&gt;двойной клик ЛКМ: выделяет слово, копирует его в буфер обмена;&lt;/li&gt;
        &lt;li id=&quot;I4Tp&quot;&gt;тройной клик ЛКМ: выделяет строку, копирует её в буфер обмена;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;li id=&quot;Vhx7&quot;&gt;нажатие ЛКМ в режиме копирования отменяет текущее выделение;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;JYZ8&quot;&gt;В других средах (если не используется X11):&lt;/li&gt;
    &lt;ul id=&quot;8IWZ&quot;&gt;
      &lt;li id=&quot;0PJg&quot;&gt;поведение схоже, но текст сохраняется только во внутренний буфер tmux, а не в системный.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;od0Y&quot;&gt;&lt;strong&gt;Клавиатурные сочетания🎹:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Zltt&quot;&gt;Немного расширены некоторые сочетания клавиш. Подробнее смотрите далее: &lt;a href=&quot;https://r4ven.me/it-razdel/poleznoe-po/tmux-ustanovka-i-kastomizaciya-nord-theme/#%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BE%D1%80%D1%8F%D1%87%D0%B8%D0%B5_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8_Tmux&quot; target=&quot;_blank&quot;&gt;Пункт 6. Кастомные горячие клавиши Tmux&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;bYkh&quot;&gt;&lt;strong&gt;Список плагинов📋:&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;KyFQ&quot;&gt;
    &lt;li id=&quot;KolZ&quot;&gt;&lt;code&gt;tmux-plugins/tpm&lt;/code&gt; – менеджер плагинов для tmux:&lt;/li&gt;
    &lt;ul id=&quot;oUUf&quot;&gt;
      &lt;li id=&quot;mSiM&quot;&gt;обеспечивает установку и управление другими плагинами;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;0rVX&quot;&gt;&lt;code&gt;tmux-plugins/tmux-sensible&lt;/code&gt; – устанавливает оптимальные настройки tmux по умолчанию;&lt;/li&gt;
    &lt;li id=&quot;Px2I&quot;&gt;&lt;code&gt;arcticicestudio/nord-tmux&lt;/code&gt; – устанавливает тему Nord для tmux;&lt;/li&gt;
    &lt;li id=&quot;Dq6t&quot;&gt;&lt;code&gt;tmux-plugins/tmux-resurrect&lt;/code&gt; – сохраняет состояние сессий (окна, панели, запущенные процессы) и позволяет восстанавливать сессии после перезапуска tmux;&lt;/li&gt;
    &lt;li id=&quot;EcvP&quot;&gt;&lt;code&gt;tmux-plugins/tmux-continuum&lt;/code&gt; – расширение для &lt;code&gt;tmux-resurrect&lt;/code&gt;:&lt;/li&gt;
    &lt;ul id=&quot;KbO0&quot;&gt;
      &lt;li id=&quot;a29e&quot;&gt;автоматически сохраняет сессии через заданные интервалы (60 минут);&lt;/li&gt;
      &lt;li id=&quot;ZMnE&quot;&gt;автоматически восстанавливает сессии при запуске tmux;&lt;/li&gt;
      &lt;li id=&quot;PNET&quot;&gt;активация с помощью юнита systemd:&lt;/li&gt;
      &lt;ul id=&quot;uxVO&quot;&gt;
        &lt;li id=&quot;nLC2&quot;&gt;см. &lt;code&gt;systemctl status --user tmux&lt;/code&gt;&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;CFQI&quot;&gt;&lt;strong&gt;Дополнительно📦:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;Mlag&quot;&gt;
    &lt;li id=&quot;gktc&quot;&gt;автоматическая установка tpm при первом запуске и проверка/установка новых плагинов при каждом запуске/перезапуске;&lt;/li&gt;
    &lt;li id=&quot;knlx&quot;&gt;очистка старых файлов сессий старше 3 дней (в &lt;code&gt;~/.local/share/tmux/resurrect/&lt;/code&gt;);&lt;/li&gt;
    &lt;li id=&quot;G04q&quot;&gt;используется система восстановления для Neovim через механизм сессий.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;Cse9&quot;&gt;Содержимое файла tmux.conf&lt;/h3&gt;
  &lt;p id=&quot;BP3p&quot;&gt;Дабы не делать из статьи полотно, последняя версия &lt;code&gt;tmux.conf&lt;/code&gt; также доступна в &lt;a href=&quot;https://github.com/r4ven-me/dots/blob/main/.config/tmux/tmux.conf&quot; target=&quot;_blank&quot;&gt;моем GitHub&lt;/a&gt;.&lt;/p&gt;
  &lt;h2 id=&quot;N00M&quot;&gt;Базовые горячие клавиши Tmux&lt;/h2&gt;
  &lt;p id=&quot;Elrs&quot;&gt;Ниже представлены частоиспользуемые базовые команды/сочетания клавиш tmux. Если планируете регулярно работать в среде tmux, то настоятельно рекомендую их запомнить🤯.&lt;/p&gt;
  &lt;p id=&quot;2Bxr&quot;&gt;&lt;strong&gt;Префикс❗️:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;PQJ2&quot;&gt;&lt;code&gt;Ctrl-b&lt;/code&gt; – prefix;&lt;/p&gt;
  &lt;p id=&quot;Ze9G&quot;&gt;&lt;strong&gt;Управление окнами (windows)&lt;/strong&gt;🪟:&lt;/p&gt;
  &lt;ul id=&quot;sWyv&quot;&gt;
    &lt;li id=&quot;Ic6z&quot;&gt;&lt;code&gt;prefix+c&lt;/code&gt; – создать новое окно (на статус панели выглядит, как вкладка);&lt;/li&gt;
    &lt;li id=&quot;VcDQ&quot;&gt;&lt;code&gt;prefix+w&lt;/code&gt; – показать список окон;&lt;/li&gt;
    &lt;li id=&quot;Wbyx&quot;&gt;&lt;code&gt;prefix+n&lt;/code&gt; – переключиться на следующее окно;&lt;/li&gt;
    &lt;li id=&quot;dmNq&quot;&gt;&lt;code&gt;prefix+p&lt;/code&gt; – переключиться на предыдущее окно;&lt;/li&gt;
    &lt;li id=&quot;wvo7&quot;&gt;&lt;code&gt;prefix+&amp;lt;номер&amp;gt;&lt;/code&gt; – перейти к окну с указанным номером (например, &lt;code&gt;ptefix+1&lt;/code&gt; – к первому окну);&lt;/li&gt;
    &lt;li id=&quot;BO7c&quot;&gt;&lt;code&gt;prefix+,&lt;/code&gt; – переименовать текущее окно.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;dsJQ&quot;&gt;&lt;strong&gt;Управление панелями (panes)&lt;/strong&gt;🎛:&lt;/p&gt;
  &lt;ul id=&quot;GAAf&quot;&gt;
    &lt;li id=&quot;Vo94&quot;&gt;&lt;code&gt;prefix+%&lt;/code&gt; – разделить окно на панели вертикально;&lt;/li&gt;
    &lt;li id=&quot;pJ7U&quot;&gt;&lt;code&gt;prefix+&amp;quot;&lt;/code&gt; – разделить окно на панели горизонтально;&lt;/li&gt;
    &lt;li id=&quot;Bdea&quot;&gt;&lt;code&gt;prefix+o&lt;/code&gt; – переключиться на следующую панель;&lt;/li&gt;
    &lt;li id=&quot;8ZU7&quot;&gt;&lt;code&gt;prefix+q&lt;/code&gt; – показать номера панелей (полезно для выбора);&lt;/li&gt;
    &lt;li id=&quot;FRiO&quot;&gt;&lt;code&gt;prefix+x&lt;/code&gt; – закрыть текущую панель;&lt;/li&gt;
    &lt;li id=&quot;SC0l&quot;&gt;&lt;code&gt;prefix+z&lt;/code&gt; – развернуть текущую панель на весь экран (и вернуть её обратно);&lt;/li&gt;
    &lt;li id=&quot;T6tb&quot;&gt;&lt;code&gt;prefix+{&lt;/code&gt; – переместить панель влево;&lt;/li&gt;
    &lt;li id=&quot;5AsA&quot;&gt;&lt;code&gt;prefix+}&lt;/code&gt; – переместить панель вправо;&lt;/li&gt;
    &lt;li id=&quot;Q5i9&quot;&gt;&lt;code&gt;prefix+!&lt;/code&gt; – вынести текущую панель в отдельное окно.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;SJMH&quot;&gt;&lt;strong&gt;Управление сессиями&lt;/strong&gt;📚:&lt;/p&gt;
  &lt;ul id=&quot;TFNF&quot;&gt;
    &lt;li id=&quot;cRb5&quot;&gt;&lt;code&gt;tmux new -s &amp;lt;имя&amp;gt;&lt;/code&gt; – создать новую сессию с именем;&lt;/li&gt;
    &lt;li id=&quot;pn8S&quot;&gt;&lt;code&gt;tmux ls&lt;/code&gt; – показать список сессий;&lt;/li&gt;
    &lt;li id=&quot;2YTy&quot;&gt;&lt;code&gt;tmux attach -t &amp;lt;имя&amp;gt;&lt;/code&gt; – подключиться к сессии;&lt;/li&gt;
    &lt;li id=&quot;AUhH&quot;&gt;&lt;code&gt;prefix+d&lt;/code&gt; – отсоединиться от текущей сессии.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;xopo&quot;&gt;&lt;strong&gt;Копирование и вставка&lt;/strong&gt;📋:&lt;/p&gt;
  &lt;ul id=&quot;0WtH&quot;&gt;
    &lt;li id=&quot;BbXO&quot;&gt;&lt;code&gt;prefix+[&lt;/code&gt; – войти в режим копирования;&lt;/li&gt;
    &lt;ul id=&quot;sEUp&quot;&gt;
      &lt;li id=&quot;MgFP&quot;&gt;&lt;strong&gt;Стрелки или PgUp/PgDn&lt;/strong&gt; – навигация по истории;&lt;/li&gt;
      &lt;li id=&quot;FTpq&quot;&gt;&lt;strong&gt;Пробел&lt;/strong&gt; – начать выделение текста;&lt;/li&gt;
      &lt;li id=&quot;mfXo&quot;&gt;&lt;strong&gt;Enter&lt;/strong&gt; – скопировать выделенный текст;&lt;/li&gt;
      &lt;li id=&quot;9aIB&quot;&gt;&lt;strong&gt;Esc&lt;/strong&gt; – отмена выделения;&lt;/li&gt;
      &lt;li id=&quot;W4mD&quot;&gt;&lt;strong&gt;q&lt;/strong&gt; – выход из режима копирования;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;lrrP&quot;&gt;&lt;code&gt;prefix+]&lt;/code&gt; – вставить скопированный текст.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;NfPR&quot;&gt;&lt;strong&gt;Дополнительно&lt;/strong&gt;📦:&lt;/p&gt;
  &lt;ul id=&quot;AmEp&quot;&gt;
    &lt;li id=&quot;ivJJ&quot;&gt;&lt;code&gt;prefix+t&lt;/code&gt; – показать часы;&lt;/li&gt;
    &lt;li id=&quot;ocgf&quot;&gt;&lt;code&gt;prefix+?&lt;/code&gt; – показать справку о всех комбинациях клавиш;&lt;/li&gt;
    &lt;li id=&quot;iw1q&quot;&gt;&lt;code&gt;prefix+s&lt;/code&gt; – показать список сессий.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;EK9F&quot;&gt;Кастомные горячие клавиши Tmux&lt;/h2&gt;
  &lt;p id=&quot;N6qf&quot;&gt;Добавленные/измененные команды/клавиши из моего конфига.&lt;/p&gt;
  &lt;p id=&quot;emB3&quot;&gt;&lt;strong&gt;Режим копирования и работа с буфером обмена&lt;/strong&gt;📝:&lt;/p&gt;
  &lt;ol id=&quot;Jrqs&quot;&gt;
    &lt;li id=&quot;tWK2&quot;&gt;&lt;code&gt;prefix+v&lt;/code&gt; – включает режим копирования (аналог &lt;code&gt;prefix+[&lt;/code&gt;);&lt;/li&gt;
    &lt;li id=&quot;bzUm&quot;&gt;&lt;code&gt;v&lt;/code&gt; (в режиме копирования) – начинает выделение текста;&lt;/li&gt;
    &lt;li id=&quot;6Qtm&quot;&gt;&lt;code&gt;Enter&lt;/code&gt; и &lt;code&gt;y&lt;/code&gt; (в режиме копирования, X11):&lt;/li&gt;
    &lt;ul id=&quot;ltsc&quot;&gt;
      &lt;li id=&quot;fVzS&quot;&gt;копирует выделенный текст в системный буфер обмена с помощью &lt;code&gt;xclip&lt;/code&gt;;&lt;/li&gt;
      &lt;li id=&quot;6lo4&quot;&gt;завершает режим копирования;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;EfhH&quot;&gt;&lt;code&gt;y&lt;/code&gt; (в режиме копирования, не X11):&lt;/li&gt;
    &lt;ul id=&quot;e7pG&quot;&gt;
      &lt;li id=&quot;97MS&quot;&gt;копирует выделение в буфер &lt;code&gt;tmux&lt;/code&gt;;&lt;/li&gt;
      &lt;li id=&quot;nh81&quot;&gt;завершает режим копирования;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;7lYL&quot;&gt;&lt;code&gt;p&lt;/code&gt; (в режиме копирования, X11):&lt;/li&gt;
    &lt;ul id=&quot;cIGW&quot;&gt;
      &lt;li id=&quot;2XBT&quot;&gt;завершает режим копирования;&lt;/li&gt;
      &lt;li id=&quot;6Fhl&quot;&gt;вставляет содержимое системного буфера обмена с помощью &lt;code&gt;xclip&lt;/code&gt;.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;TZgp&quot;&gt;&lt;code&gt;p&lt;/code&gt; (в режиме копирования, не X11):&lt;/li&gt;
    &lt;ul id=&quot;cJZi&quot;&gt;
      &lt;li id=&quot;zD6M&quot;&gt;завершает режим копирования;&lt;/li&gt;
      &lt;li id=&quot;Q5Ba&quot;&gt;вставляет содержимое буфера &lt;code&gt;tmux&lt;/code&gt;;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;RLH5&quot;&gt;&lt;code&gt;prefix+]&lt;/code&gt; и &lt;code&gt;prefix+P&lt;/code&gt; (в обычном режиме, X11):&lt;/li&gt;
    &lt;ul id=&quot;mHsU&quot;&gt;
      &lt;li id=&quot;V1FJ&quot;&gt;вставляет содержимое системного буфера обмена с помощью &lt;code&gt;xclip&lt;/code&gt;;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;ewHS&quot;&gt;&lt;code&gt;prefix+]&lt;/code&gt; и &lt;code&gt;prefix+P&lt;/code&gt; (в обычном режиме, не X11):&lt;/li&gt;
    &lt;ul id=&quot;yKaW&quot;&gt;
      &lt;li id=&quot;1J4J&quot;&gt;вставляет содержимое буфера &lt;code&gt;tmux&lt;/code&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;8cPW&quot;&gt;&lt;strong&gt;Навигация между панелями (в стиле vi)&lt;/strong&gt;🎛:&lt;/p&gt;
  &lt;ul id=&quot;SdIe&quot;&gt;
    &lt;li id=&quot;Xr7j&quot;&gt;&lt;code&gt;prefix+h&lt;/code&gt; – переключиться на панель слева;&lt;/li&gt;
    &lt;li id=&quot;bTAH&quot;&gt;&lt;code&gt;prefix+j&lt;/code&gt;– переключиться на панель снизу;&lt;/li&gt;
    &lt;li id=&quot;32wm&quot;&gt;&lt;code&gt;prefix+k&lt;/code&gt; – переключиться на панель сверху;&lt;/li&gt;
    &lt;li id=&quot;ANxx&quot;&gt;&lt;code&gt;prefix+l&lt;/code&gt; – переключиться на панель справа.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;gHzt&quot;&gt;&lt;strong&gt;Изменение размеров панелей (в стиле vi)🎛, клавишу команды можно нажимать многократно&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;vRLo&quot;&gt;
    &lt;li id=&quot;GanU&quot;&gt;&lt;code&gt;prefix+H&lt;/code&gt; – увеличить панель влево на 2 пикселя;&lt;/li&gt;
    &lt;li id=&quot;wZiU&quot;&gt;&lt;code&gt;prefix+J&lt;/code&gt; – увеличить панель вниз на 2 пикселя;&lt;/li&gt;
    &lt;li id=&quot;3EN9&quot;&gt;&lt;code&gt;prefix+K&lt;/code&gt; – увеличить панель вверх на 2 пикселя;&lt;/li&gt;
    &lt;li id=&quot;ntwW&quot;&gt;&lt;code&gt;prefix+L&lt;/code&gt; – увеличить панель вправо на 2 пикселя.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;tKvp&quot;&gt;&lt;strong&gt;Сохранение и восстановление среды через tmux-resurrect&lt;/strong&gt;💾:&lt;/p&gt;
  &lt;ol id=&quot;IgE9&quot;&gt;
    &lt;li id=&quot;j9z5&quot;&gt;&lt;code&gt;prefix+F5&lt;/code&gt;:&lt;/li&gt;
    &lt;ul id=&quot;suB9&quot;&gt;
      &lt;li id=&quot;QVgW&quot;&gt;сохраняет текущее состояние tmux с помощью &lt;code&gt;tmux-resurrect&lt;/code&gt;;&lt;/li&gt;
      &lt;li id=&quot;znHl&quot;&gt;перемещает последнюю сохранённую сессию в файл &lt;code&gt;~/.local/share/tmux/resurrect/main.txt&lt;/code&gt; для удобства восстановления;&lt;/li&gt;
      &lt;li id=&quot;mV1o&quot;&gt;показывает сообщение о ручном сохранении;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;tYPL&quot;&gt;&lt;code&gt;prefix+F6&lt;/code&gt;:&lt;/li&gt;
    &lt;ul id=&quot;E2Rm&quot;&gt;
      &lt;li id=&quot;Rjme&quot;&gt;загружает сохранённое состояние из файла &lt;code&gt;main.txt&lt;/code&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;h2 id=&quot;Uiiv&quot;&gt;Послесловие&lt;/h2&gt;
  &lt;p id=&quot;3d4l&quot;&gt;Фух😮‍💨. Сегодня в нашем арсенале Linux администратора появился еще один полезный инструмент🧑‍💻. С его помощью крайне удобно обслуживать системы📺, где нет графики, например на серверах, которые работают 24/7. Единожды запустили все необходимые утилиты и после просто подключаемся к запущенной сессии, с помощью короткого алиаса😌.&lt;/p&gt;
  &lt;p id=&quot;By68&quot;&gt;Обязательно подписывайтесь на наш &lt;a href=&quot;https://t.me/r4ven_me/&quot; target=&quot;_blank&quot;&gt;телеграм канал&lt;/a&gt;✈️, чтобы не пропустить новых публикаций на сайте🌐. А если у вас остались вопросы, то добавляйтесь в &lt;a href=&quot;https://t.me/r4ven_me_chat/&quot; target=&quot;_blank&quot;&gt;Вороний чат&lt;/a&gt;: у нас там дружелюбное микросообщество🐧🚶‍♂️🐧🚶‍♂️🐧🚶‍♂️.&lt;/p&gt;
  &lt;p id=&quot;8LTm&quot;&gt;Спасибо, что читаете😇. Желаю успехов в освоении новых инструментов, которые упрощают рутину и повышают эффективность💪.&lt;/p&gt;
  &lt;h2 id=&quot;h2qS&quot;&gt;Полезные материалы&lt;/h2&gt;
  &lt;ul id=&quot;e1xB&quot;&gt;
    &lt;li id=&quot;k7Z2&quot;&gt;&lt;a href=&quot;https://github.com/r4ven-me/dots/blob/main/.config/tmux/tmux.conf&quot; target=&quot;_blank&quot;&gt;Мой конфиг Tmux | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;lC7v&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/terminalnyj-multipleksor/&quot; target=&quot;_blank&quot;&gt;Словарик линуксоида: Терминальный мультиплексор | Вороний блог&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;E4CS&quot;&gt;&lt;a href=&quot;https://wiki.archlinux.org/title/Tmux&quot; target=&quot;_blank&quot;&gt;Tmux | ArchWiki&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;hqAy&quot;&gt;&lt;a href=&quot;https://github.com/tmux/tmux/wiki/Getting-Started&quot; target=&quot;_blank&quot;&gt;‘Getting started’ из оф. документации | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;iRxn&quot;&gt;&lt;a href=&quot;https://github.com/tmux-plugins/tpm&quot; target=&quot;_blank&quot;&gt;Плагин tpm | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;Rfsr&quot;&gt;&lt;a href=&quot;https://github.com/tmux-plugins/tmux-sensible&quot; target=&quot;_blank&quot;&gt;Плагин tmux-sensible | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;uNIC&quot;&gt;&lt;a href=&quot;https://github.com/nordtheme/tmux&quot; target=&quot;_blank&quot;&gt;Плагин nord-tmux | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;fBxy&quot;&gt;&lt;a href=&quot;https://github.com/tmux-plugins/tmux-resurrect&quot; target=&quot;_blank&quot;&gt;Плагин tmux-resurrect | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;1sSj&quot;&gt;&lt;a href=&quot;https://github.com/tmux-plugins/tmux-continuum&quot; target=&quot;_blank&quot;&gt;Плагин tmux-continuum | GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>r4ven_me:terminalnyj-multipleksor</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/terminalnyj-multipleksor?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Терминальный мультиплексор</title><published>2024-11-18T15:05:26.655Z</published><updated>2024-11-18T15:05:26.655Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/c3/13/c3132554-1d82-477e-81ac-dc7b0bd22a82.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/3b/da/3bda85e9-a50f-4479-8fa4-369f07bc39f2.png&quot;&gt;Исходный сайт представленного материала: r4ven.me</summary><content type="html">
  &lt;figure id=&quot;aOyE&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3b/da/3bda85e9-a50f-4479-8fa4-369f07bc39f2.png&quot; width=&quot;830&quot; /&gt;
    &lt;figcaption&gt;Терминальный мультиплексор&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;HLKe&quot;&gt;&lt;strong&gt;Исходный сайт представленного материала: &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/terminalnyj-multipleksor/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;nNnm&quot;&gt;Приветствую!&lt;/h3&gt;
  &lt;p id=&quot;HeNe&quot;&gt;Сегодня в &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/&quot; target=&quot;_blank&quot;&gt;словарике линуксоида&lt;/a&gt;🐧 &lt;strong&gt;терминальный мультиплексор&lt;/strong&gt; – инструмент, который очень часто используется в процессе администрирования Linux систем 🧑‍💻. Как обычно дадим определение термину, поговорим про популярные реализации терминальных мультиплексоров и конечно про их преимущества и недостатки🧐.&lt;/p&gt;
  &lt;blockquote id=&quot;yBfH&quot;&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;1Dy9&quot;&gt;Также обратите внимание, что этот теоретический пост📗 предшествует будущей статье по установке и настройке популярного мультиплексора &lt;strong&gt;Tmux&lt;/strong&gt;🪟.&lt;/p&gt;
  &lt;figure id=&quot;xopv&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/37/1c/371c5df2-ca73-4f5b-899e-4836756f449b.png&quot; width=&quot;562&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;ec3f&quot;&gt;Что такое терминальный мультиплексор?&lt;/h2&gt;
  &lt;figure id=&quot;QnMJ&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-44.png&quot; width=&quot;352&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;bPMS&quot;&gt;Терминальный мультиплексор (terminal multiplexer) — это инструмент, позволяющий пользователю управлять несколькими сессиями &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/emulyator-terminala/&quot; target=&quot;_blank&quot;&gt;терминала&lt;/a&gt; в одном окне. Он выполняет роль “менеджера окон” для консоли, позволяя запускать и переключаться между множеством процессов и &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/komandnyj-interpretator-ili-obolochka-shell/&quot; target=&quot;_blank&quot;&gt;оболочек&lt;/a&gt;, разделять экран на панели и (самое важное для меня) восстанавливать работу после разрыва соединения, например SSH. Управление происходит с помощью горячих клавиш🎹 и иногда мыши🐭.&lt;/p&gt;
  &lt;p id=&quot;kSyK&quot;&gt;В общем, незаменимый инструмент для продвинутых пользователей Linux😎.&lt;/p&gt;
  &lt;h2 id=&quot;uGJR&quot;&gt;Краткая история&lt;/h2&gt;
  &lt;p id=&quot;O2la&quot;&gt;Идея управления несколькими терминальными сессиями возникла вместе с развитием многозадачности в &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/operacionnaya-sistema-unix/&quot; target=&quot;_blank&quot;&gt;Unix-подобных системах&lt;/a&gt;. Первым популярным инструментом для этих целей стал &lt;strong&gt;&lt;code&gt;screen&lt;/code&gt;&lt;/strong&gt; от проекта GNU, выпущенный в 1987 году. Он был прост в использовании и позволял восстановить сессии после разрыва связи🧐.&lt;/p&gt;
  &lt;p id=&quot;eSrG&quot;&gt;Со временем появились новые инструменты, которые предложили более современный функционал. Так в &lt;s&gt;верните мой&lt;/s&gt; 2007 году был выпущен &lt;strong&gt;tmux&lt;/strong&gt;🔥, который пришел из мира BSD и стал популярной альтернативой &lt;code&gt;screen&lt;/code&gt;, благодаря удобной настройке, расширяемости и поддержке сценариев.&lt;/p&gt;
  &lt;p id=&quot;9GTh&quot;&gt;В последние годы появились более современные реализации👀, такие, как &lt;strong&gt;Zellij&lt;/strong&gt; и &lt;strong&gt;Wezterm&lt;/strong&gt;, нацеленные на улучшение пользовательского опыта.&lt;/p&gt;
  &lt;h2 id=&quot;rDYL&quot;&gt;Популярные реализации, их плюсы и минусы&lt;/h2&gt;
  &lt;h3 id=&quot;Mob1&quot;&gt;&lt;strong&gt;GNU Screen&lt;/strong&gt;&lt;/h3&gt;
  &lt;figure id=&quot;YRt7&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-40.png&quot; width=&quot;1433&quot; /&gt;
    &lt;figcaption&gt;Источник: Habr&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;aNuP&quot;&gt;
    &lt;li id=&quot;1Fo4&quot;&gt;&lt;strong&gt;Написан на: &lt;/strong&gt;С;&lt;/li&gt;
    &lt;li id=&quot;nCst&quot;&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; GPL 3.0;&lt;/li&gt;
    &lt;li id=&quot;7ERf&quot;&gt;&lt;strong&gt;Плюсы:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;kteh&quot;&gt;
      &lt;li id=&quot;I2vW&quot;&gt;лёгкость установки (доступен практически во всех &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/repozitorij-programmnogo-obespecheniya/&quot; target=&quot;_blank&quot;&gt;репозиториях&lt;/a&gt;);&lt;/li&gt;
      &lt;li id=&quot;kubz&quot;&gt;простота конфигурации и работы;&lt;/li&gt;
      &lt;li id=&quot;FbTc&quot;&gt;проверенная временем стабильность.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;YOlM&quot;&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;MQFh&quot;&gt;
      &lt;li id=&quot;R8Ev&quot;&gt;ограниченный функционал по сравнению с современными аналогами;&lt;/li&gt;
      &lt;li id=&quot;fQjD&quot;&gt;несколько устаревший интерфейс, неудобство настройки горячих клавиш;&lt;/li&gt;
      &lt;li id=&quot;k8A9&quot;&gt;низкая активность разработки в последние годы.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;3ZB0&quot;&gt;&lt;strong&gt;Tmux&lt;/strong&gt;&lt;/h3&gt;
  &lt;figure id=&quot;Szg3&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-41.png&quot; width=&quot;1433&quot; /&gt;
    &lt;figcaption&gt;Источник: Habr&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;Xz1t&quot;&gt;А вот, как выглядит моя конфигурация Tmux, про которую я расскажу в будущей статье:&lt;/blockquote&gt;
  &lt;figure id=&quot;BdkC&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/tmux-e1731870090468-1500x869.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;riWA&quot;&gt;
    &lt;li id=&quot;9gss&quot;&gt;&lt;strong&gt;Написан на: &lt;/strong&gt;С;&lt;/li&gt;
    &lt;li id=&quot;GqHi&quot;&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; ISC (BSD);&lt;/li&gt;
    &lt;li id=&quot;0iDZ&quot;&gt;&lt;strong&gt;Плюсы:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;cQKs&quot;&gt;
      &lt;li id=&quot;mWJb&quot;&gt;гибкость настройки, возможность создавать сложные конфигурации;&lt;/li&gt;
      &lt;li id=&quot;xX0e&quot;&gt;активное сообщество и регулярные обновления;&lt;/li&gt;
      &lt;li id=&quot;oNud&quot;&gt;поддержка плагинов для расширения функциональности🤯;&lt;/li&gt;
      &lt;li id=&quot;YYmw&quot;&gt;улучшенное управление окнами и панелями.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;bGLM&quot;&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;hglW&quot;&gt;
      &lt;li id=&quot;uf6D&quot;&gt;кривая обучения для новичков (особенно настройка конфигурационного файла);&lt;/li&gt;
      &lt;li id=&quot;kupY&quot;&gt;некоторые функции требуют установки сторонних плагинов.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;qJQ2&quot;&gt;&lt;strong&gt;Zellij&lt;/strong&gt;&lt;/h3&gt;
  &lt;figure id=&quot;hGdJ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-42-1500x790.png&quot; width=&quot;1500&quot; /&gt;
    &lt;figcaption&gt;Источник: zellij.dev&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;nGzH&quot;&gt;
    &lt;li id=&quot;kgiO&quot;&gt;&lt;strong&gt;Написан на: &lt;/strong&gt;Rust;&lt;/li&gt;
    &lt;li id=&quot;jImo&quot;&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; MIT;&lt;/li&gt;
    &lt;li id=&quot;tpWv&quot;&gt;&lt;strong&gt;Плюсы:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;18dd&quot;&gt;
      &lt;li id=&quot;x6pS&quot;&gt;интуитивный интерфейс и продуманная система горячих клавиш;&lt;/li&gt;
      &lt;li id=&quot;7YP6&quot;&gt;расширенные возможности для работы с несколькими пользователями;&lt;/li&gt;
      &lt;li id=&quot;k9HI&quot;&gt;современный дизайн и активно развивающийся проект.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;hrYZ&quot;&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;PV0l&quot;&gt;
      &lt;li id=&quot;0Afx&quot;&gt;молодой инструмент, не такой стабильный, как &lt;code&gt;tmux&lt;/code&gt; или &lt;code&gt;screen&lt;/code&gt;;&lt;/li&gt;
      &lt;li id=&quot;OX7M&quot;&gt;меньшее количество плагинов и документации.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;UMex&quot;&gt;&lt;strong&gt;Wezterm&lt;/strong&gt;&lt;/h3&gt;
  &lt;figure id=&quot;Yb9H&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-43-1500x851.png&quot; width=&quot;1500&quot; /&gt;
    &lt;figcaption&gt;Источник: GitHub&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;oyf5&quot;&gt;
    &lt;li id=&quot;KYW4&quot;&gt;&lt;strong&gt;Написан на: &lt;/strong&gt;Rust;&lt;/li&gt;
    &lt;li id=&quot;sZyK&quot;&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; MIT;&lt;/li&gt;
    &lt;li id=&quot;dq6l&quot;&gt;&lt;strong&gt;Плюсы:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;eTle&quot;&gt;
      &lt;li id=&quot;x94l&quot;&gt;интеграция с современными терминалами и поддержка GPU-рендеринга;&lt;/li&gt;
      &lt;li id=&quot;h2P4&quot;&gt;расширенные возможности кастомизации интерфейса посредством Lua;&lt;/li&gt;
      &lt;li id=&quot;Iue3&quot;&gt;по сути является полноценным терминалом.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;uN0l&quot;&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;CEk6&quot;&gt;
      &lt;li id=&quot;tndG&quot;&gt;сложность настройки для начинающих;&lt;/li&gt;
      &lt;li id=&quot;Hbak&quot;&gt;менее популярный в сообществе инструмент, поэтому сложнее найти помощь.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;S3pR&quot;&gt;Заключение&lt;/h2&gt;
  &lt;p id=&quot;x7f1&quot;&gt;Выбор терминального мультиплексора зависит, конечно же, от ваших требований и вкусов🤷‍♂️.&lt;/p&gt;
  &lt;p id=&quot;Lehq&quot;&gt;Я предпочитаю работать в &lt;strong&gt;Tmux&lt;/strong&gt;, т.к. это был первый мультиплексор, с которым я познакомился😌. Еще конечно немаловажный фактор – это время и ресурсы, которые я потратил на настройку Tmux🤯, чтобы превратить его в идеальный для меня инструмент работы с консолью.&lt;/p&gt;
  &lt;p id=&quot;hHid&quot;&gt;Если вы часто находитесь в окне терминала, но еще не работали с терминальными мультиплексорами, рекомендую обратить на них внимание👍.&lt;/p&gt;
  &lt;p id=&quot;LDQz&quot;&gt;Подписывайтесь на &lt;strong&gt;Вороний блог&lt;/strong&gt; в телеграм: &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;@r4ven_me&lt;/a&gt;📱, чтобы не пропустить новые посты. Если возникли вопросы или желание пообщаться по теме – заглядывайте в наш чат там же: &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;@r4ven_me_chat&lt;/a&gt;💬. У нас вежливое микросообщество🤓.&lt;/p&gt;
  &lt;h2 id=&quot;geZB&quot;&gt;Полезные источники&lt;/h2&gt;
  &lt;ul id=&quot;U0nB&quot;&gt;
    &lt;li id=&quot;ZU7z&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Terminal_multiplexer&quot; target=&quot;_blank&quot;&gt;Терминальный мультиплексор | Википедия (EN)&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;qLzE&quot;&gt;&lt;a href=&quot;https://habr.com/ru/companies/otus/articles/646037/&quot; target=&quot;_blank&quot;&gt;Терминальные мультиплексоры | Habr&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;v02s&quot;&gt;&lt;a href=&quot;https://wiki.archlinux.org/title/GNU_Screen&quot; target=&quot;_blank&quot;&gt;GNU Screen | ArchWiki (EN)&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;2i83&quot;&gt;&lt;a href=&quot;https://wiki.archlinux.org/title/Tmux&quot; target=&quot;_blank&quot;&gt;Tmux | ArchWiki (EN)&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;sC0c&quot;&gt;&lt;a href=&quot;https://zellij.dev/&quot; target=&quot;_blank&quot;&gt;Zellij | Сайт проекта (EN)&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;90Ge&quot;&gt;&lt;a href=&quot;https://wezfurlong.org/wezterm/index.html&quot; target=&quot;_blank&quot;&gt;Wezterm | Сайт проекта (EN)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>r4ven_me:ansible-znakomstvo</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/ansible-znakomstvo?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Ansible – система управления конфигурациями: знакомство</title><published>2024-11-07T19:54:53.409Z</published><updated>2024-11-08T10:13:19.767Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/37/83/3783aeba-d547-4861-9ba5-32b1be0d8268.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/44/2f/442f0b73-4126-4a38-9182-9f2e297b4e30.png&quot;&gt;В этой заметке мы с вами познакомимся с популярной open source системой управления конфигурациями с говорящим названием – Ansible🎻. Выполним установку и настройку🛠, составим инвентаризацию📋, научимся запускать плейбуки🚀, поговорим про Ansible facts🗂, узнаем, что такое Ansible console🖥 и напишем playbook📝 который правит конфиг sshd и копирует файлы на сервер. Будет познавательно😉!</summary><content type="html">
  &lt;figure id=&quot;5E1S&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/44/2f/442f0b73-4126-4a38-9182-9f2e297b4e30.png&quot; width=&quot;1024&quot; /&gt;
    &lt;figcaption&gt;Ansible – система управления конфигурациями: знакомство&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;GF6O&quot;&gt;Исходный сайт представленного материала: &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/ansible-sistema-upravleniya-konfiguraciyami-znakomstvo/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;byxQ&quot;&gt;Приветствую!&lt;/h3&gt;
  &lt;p id=&quot;uUZs&quot;&gt;В этой заметке мы с вами познакомимся с популярной &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/otkrytoe-po/&quot; target=&quot;_blank&quot;&gt;open source&lt;/a&gt; системой &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/sistema-upravleniya-konfiguraciyami/&quot; target=&quot;_blank&quot;&gt;управления конфигурациями&lt;/a&gt; с говорящим названием – &lt;strong&gt;Ansible&lt;/strong&gt;🎻. Выполним установку и настройку🛠, составим инвентаризацию📋, научимся запускать плейбуки🚀, поговорим про Ansible facts🗂, узнаем, что такое Ansible console🖥 и напишем playbook📝 который правит конфиг sshd и копирует файлы на сервер. Будет познавательно😉!&lt;/p&gt;
  &lt;blockquote id=&quot;87je&quot;&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;figure id=&quot;wo6R&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a3/a0/a3a02582-38da-4db9-a154-e7f1ed22e8f1.png&quot; width=&quot;712&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;JLcp&quot;&gt;Предисловие&lt;/h2&gt;
  &lt;p id=&quot;DmKs&quot;&gt;Чтобы чуть лучше понимать суть происходящего, рекомендую прочитать мою &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/sistema-upravleniya-konfiguraciyami/&quot; target=&quot;_blank&quot;&gt;теоретическую заметку&lt;/a&gt;📝 про системы управления конфигурациями (Cofiguration Management, CM). В ней дано описание термина, какие виды существуют, а также коротко рассказано про популярные реализации подобных систем и их отличия.&lt;/p&gt;
  &lt;p id=&quot;EEl8&quot;&gt;Возвращаясь к Ansible, с его помощью можно автоматизировать конфигурацию серверов путем описания желаемого состояния в удобном формате &lt;strong&gt;yaml&lt;/strong&gt;. Стоит также отметить, что операции Ansible имеют свойство &lt;strong&gt;идемпотентности&lt;/strong&gt;🙄. Это означает, что, если вы запускаете плейбук или задачу несколько раз, состояние системы не изменится после первого успешного выполнения.&lt;/p&gt;
  &lt;p id=&quot;GmGE&quot;&gt;Ну и прежде, чем мы продолжим углубляться перечислю основные сущности данной CM📒:&lt;/p&gt;
  &lt;ul id=&quot;0Qkh&quot;&gt;
    &lt;li id=&quot;2xuK&quot;&gt;&lt;strong&gt;Control node&lt;/strong&gt; — управляющий сервер, на котором установлен Ansible и с которого запускаются команды и Playbooks с помощью SSH;&lt;/li&gt;
    &lt;li id=&quot;wcOw&quot;&gt;&lt;strong&gt;Managed nodes&lt;/strong&gt; — управляемые серверы, на которых Ansible выполняет задачи, не требуют установки Ansible на них;&lt;/li&gt;
    &lt;li id=&quot;xSGP&quot;&gt;&lt;strong&gt;Inventory file&lt;/strong&gt; — файл(ы) (обычно &lt;code&gt;inventory.yml&lt;/code&gt;), содержащий список управляемых узлов и их групп для логического объединения. В нем указываются IP-адреса, DNS имена, порты и пользовательские переменные;&lt;/li&gt;
    &lt;li id=&quot;dyJC&quot;&gt;&lt;strong&gt;Configuration file&lt;/strong&gt; — файл конфигурации Ansible (по умолчанию &lt;code&gt;ansible.cfg&lt;/code&gt;), где задаются настройки, например, путь к файлу инвентаря, параметры SSH и другие параметры, позволяющие настроить поведение Ansible под конкретные нужды;&lt;/li&gt;
    &lt;li id=&quot;ljRY&quot;&gt;&lt;strong&gt;Variables&lt;/strong&gt; — переменные, которые можно использовать для гибкой настройки задач и параметров. Переменные могут определяться на разных уровнях: в файле инвентаризации, плейбуке, ролях, командах и динамически собираться;&lt;/li&gt;
    &lt;li id=&quot;Ued6&quot;&gt;&lt;strong&gt;Playbook&lt;/strong&gt; — файл сценария в формате YAML, описывающий, какие задачи нужно выполнить на каких узлах;&lt;/li&gt;
    &lt;li id=&quot;0Uht&quot;&gt;&lt;strong&gt;Facts&lt;/strong&gt; (факты) — информация об управляемом сервере в виде системных переменных (например, тип и версия ОС, IP-адрес, версии пакетов и пр.), автоматически собираемая Ansible. Часто используются для описания условий выполнения задач (tasks);&lt;/li&gt;
    &lt;li id=&quot;eDB9&quot;&gt;&lt;strong&gt;Task &lt;/strong&gt;— отдельное задание, выполняемое на управляемом узле. Это атомарная инструкция (например, установка пакета), описанная с помощью Ansible module;&lt;/li&gt;
    &lt;li id=&quot;hA7A&quot;&gt;&lt;strong&gt;Module&lt;/strong&gt; — готовый модуль из библиотеки Ansible для выполнения конкретной задачи, например, копирование файла, управление сервисами, установка пакетов и пр.;&lt;/li&gt;
    &lt;li id=&quot;QGAG&quot;&gt;&lt;strong&gt;Handler&lt;/strong&gt; (обработчик) — задача, которая запускается только при изменении состояния (например, перезапуск сервиса), вызывается из задачи через параметр &lt;code&gt;notify&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;lFC7&quot;&gt;&lt;strong&gt;Template&lt;/strong&gt; — файл шаблона (в формате Jinja2), который позволяет, например, создавать динамические файлы конфигурации с использованием переменных и конструкций, свойственным языкам программирования (фильтры, циклы, условные выражения и т.д.), тут можно утонуть;&lt;/li&gt;
    &lt;li id=&quot;oGWY&quot;&gt;&lt;strong&gt;Role&lt;/strong&gt; — структура файлов и директорий для удобной организации задач, шаблонов, файлов переменных для Playbook. По сути, это плейбук, раздробленный на отдельные файлы/папки для большего удобства и наглядности;&lt;/li&gt;
    &lt;li id=&quot;tPD4&quot;&gt;&lt;strong&gt;Plugins&lt;/strong&gt; – дополнения Ansible, расширяющие его функционал.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;SWWy&quot;&gt;Установка Ansible в Debian / Ubuntu / Linux mint&lt;/h2&gt;
  &lt;p id=&quot;adBx&quot;&gt;Пример установки я буду показывать в среде &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/distributiv-linux/&quot; target=&quot;_blank&quot;&gt;дистрибутива&lt;/a&gt; Debian 12😎:&lt;/p&gt;
  &lt;figure id=&quot;GiMd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-17.png&quot; width=&quot;1144&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;V3zy&quot;&gt;Т.к. Ansible работает по &lt;strong&gt;push&lt;/strong&gt; принципу (т.е. все управление происходит с административного сервера), то и устанавливать его необходимо только на одной машине. На управляемых серверах понадобится установленный Python🐍 и доступ по SSH.&lt;/p&gt;
  &lt;blockquote id=&quot;YtQf&quot;&gt;Подробнее про использование и настройку SSH в Linux, в т.ч. и работу с ключами, читайте в отдельной инструкции: &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/ssh-bezopasnoe-podklyuchenie-k-udalyonnym-hostam-vvedenie/&quot; target=&quot;_blank&quot;&gt;SSH – Безопасное подключение к удалённым хостам: введение&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;2fj1&quot;&gt;Все необходимые пакеты Ansible есть в стандартных &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/repozitorij-programmnogo-obespecheniya/&quot; target=&quot;_blank&quot;&gt;репозиториях&lt;/a&gt;🗄. Поэтому просто открываем терминал и вводим команду:&lt;/p&gt;
  &lt;pre id=&quot;SMor&quot;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y ansible sshpass&lt;/pre&gt;
  &lt;figure id=&quot;jlfT&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image.png&quot; width=&quot;1302&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xBJt&quot;&gt;Также мы устанавливаем утилиту &lt;strong&gt;sshpass&lt;/strong&gt;, которая понадобится для передачи пароля при соответствующей SSH аутентификации, а также получение полномочий через &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-povyshenie-privilegij-komandy-su-sudo/&quot; target=&quot;_blank&quot;&gt;sudo&lt;/a&gt;💪.&lt;/p&gt;
  &lt;p id=&quot;lxAg&quot;&gt;Зависимостей много, поэтому установка займет некоторое время⏳.&lt;/p&gt;
  &lt;h2 id=&quot;ebmk&quot;&gt;Настройка Ansible – файл &lt;code&gt;ansible.cfg&lt;/code&gt;&lt;/h2&gt;
  &lt;p id=&quot;p4jl&quot;&gt;Переходим к начальной настройке. Для этого создаем необходимые директории и файл конфигурации. Открываем его любым текстовым редактором (я предпочитаю &lt;a href=&quot;https://r4ven.me/it-razdel/poleznoe-po/vim-konsolnyj-redaktor-znakomstvo/&quot; target=&quot;_blank&quot;&gt;vim/neovim&lt;/a&gt;)🧑‍💻:&lt;/p&gt;
  &lt;pre id=&quot;GrXu&quot;&gt;mkdir -p ~/ansible/{playbooks,roles,tmp}

nvim ~/ansible/ansible.cfg&lt;/pre&gt;
  &lt;figure id=&quot;cqoW&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-1.png&quot; width=&quot;1296&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vq8E&quot;&gt;И наполняем его:&lt;/p&gt;
  &lt;pre id=&quot;zSsc&quot;&gt;[defaults]
home = ~/ansible/                    ; основная директория Ansible
local_tmp = ~/ansible/tmp/           ; локальная временная директория для выполнения задач
inventory = ~/ansible/inventory.yml  ; путь к файлу инвентаря с перечнем хостов
playbook_dir = ~/ansible/playbooks/  ; директория, где хранятся плейбуки
roles_path = ~/ansible/roles/        ; директория, где Ansible ищет роли
remote_user = ivan                   ; пользователь, под которым Ansible подключается к хостам
become_method = sudo                 ; метод повышения прав (sudo, su)
become_user = root                   ; пользователь, от имени которого выполняются sudo команды
gather_facts = True                  ; собирать факты о системе перед выполнением задач
private_key_file = ~/ansible/id_ed25519  ; путь к приватному ключу для подключения по SSH
host_key_checking = False            ; отключает проверку ключей хоста SSH
fact_caching = jsonfile              ; кэширование фактов с использованием формата json
fact_caching_connection = ~/ansible/tmp/  ; путь для хранения кэшированных фактов&lt;/pre&gt;
  &lt;figure id=&quot;tAoR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-4.png&quot; width=&quot;1309&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;JlPn&quot;&gt;Понравился мой конфиг Neovim? Можете с легкостью создать аналогичный по статье: &lt;a href=&quot;https://r4ven.me/it-razdel/poleznoe-po/neovim-ustanovka-i-nastrojka-redaktora-koda-s-elementami-ide-vsego-v-neskolko-komand/&quot; target=&quot;_blank&quot;&gt;Neovim – Установка и настройка редактора кода с элементами IDE всего в несколько команд&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;figure id=&quot;cKc9&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-38.png&quot; width=&quot;344&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DZ9o&quot;&gt;Такой конфигурации достаточно, чтобы начать использовать Ansible👍. Этот файл определяет поведение Ansible по умолчанию, которое может быть переопределено в других местах: файлах инвентаризации, плейбуках, файлах переменных, командах или в других конфигах.&lt;/p&gt;
  &lt;p id=&quot;iBto&quot;&gt;Если есть потребность изучить все доступные параметры файла конфигурации🤓, то его можно сгенерировать такой командой:&lt;/p&gt;
  &lt;pre id=&quot;2eUZ&quot;&gt;ansible-config init --disabled &amp;gt; ~/ansible/ansible.cfg.example&lt;/pre&gt;
  &lt;p id=&quot;7QbS&quot;&gt;Файл хорошо прокомментирован🧐.&lt;/p&gt;
  &lt;blockquote id=&quot;TwZL&quot;&gt;Подробнее про процесс конфигурации смотрите на оф. сайте: &lt;a href=&quot;https://docs.ansible.com/ansible/latest/reference_appendices/config.html&quot; target=&quot;_blank&quot;&gt;Ansible Configuration Settings&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;4Yo1&quot;&gt;Также для удобства, рекомендую сразу добавить переменную окружения, указывающую на наш дефолтный файл конфига:&lt;/p&gt;
  &lt;pre id=&quot;XGTO&quot;&gt;export ANSIBLE_CONFIG=&amp;quot;$HOME/ansible/ansible.cfg&amp;quot;

# для создания переменной при входе в систему
echo &amp;#x27;export ANSIBLE_CONFIG=&amp;quot;$HOME/ansible/ansible.cfg&amp;quot;&amp;#x27; &amp;gt;&amp;gt; ~/.profile&lt;/pre&gt;
  &lt;figure id=&quot;LMnV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-3.png&quot; width=&quot;1297&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;dKRd&quot;&gt;Замените &lt;code&gt;~/.profile&lt;/code&gt; на файл загрузки окружения вашей оболочки. В моем случае используется &lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/zsh-interaktivnaya-komandnaya-obolochka-dlya-linux-oh-my-zsh/&quot; target=&quot;_blank&quot;&gt;интерактивная оболочка ZSH&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;k61i&quot;&gt;В таком случае можно будет пользоваться командами Ansible из любой директории без явного указания пути до файла с настройками😌.&lt;/p&gt;
  &lt;blockquote id=&quot;aqST&quot;&gt;Полный список доступных переменных окружения также смотрите в оф. доке: &lt;a href=&quot;https://docs.ansible.com/ansible/latest/reference_appendices/config.html#environment-variables&quot; target=&quot;_blank&quot;&gt;Environment Variables&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;h2 id=&quot;vjH3&quot;&gt;Инвентаризация – файл &lt;code&gt;inventory.yml&lt;/code&gt;&lt;/h2&gt;
  &lt;p id=&quot;PeUQ&quot;&gt;Переходим к инвентаризации хозяйства, которым будем управлять. Для этого создаем файл инвентаря:&lt;/p&gt;
  &lt;pre id=&quot;jxI1&quot;&gt;nvim ~/ansible/inventory.yml&lt;/pre&gt;
  &lt;figure id=&quot;pg4V&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-5.png&quot; width=&quot;1198&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ETpm&quot;&gt;И добавляем в него список наших серверов📋, которыми будем управлять. В моем примере 5 Linux серверов (&lt;strong&gt;3&lt;/strong&gt; – Debian, &lt;strong&gt;2&lt;/strong&gt; – Ubuntu):&lt;/p&gt;
  &lt;pre id=&quot;16n2&quot;&gt;## HOSTS
all:
  hosts:
    debian12-vpn:
      ansible_host: 192.168.122.93
      ansible_port: 22
      ansible_user: ivan
      ansible_ssh_private_key_file: ~/.ssh/id_ed25519
      project: vpn
    debian12-dns:
      ansible_host: 192.168.122.201
      ansible_port: 22
      ansible_user: ivan
      ansible_ssh_private_key_file: ~/.ssh/id_ed25519
      project: vpn
    debian12-monitoring:
      ansible_host: 192.168.122.30
      ansible_port: 22
      ansible_user: ivan
      ansible_ssh_private_key_file: ~/.ssh/id_ed25519
      project: monitor
    ubuntu22-storage:
      ansible_host: 192.168.122.5
      ansible_port: 22
      ansible_user: ivan
      ansible_ssh_private_key_file: ~/.ssh/id_ed25519
      # ansible_password: &amp;quot;Pa$$w0rD&amp;quot;
      project: storage
    ubuntu22-backup:
      ansible_host: 192.168.122.249
      ansible_port: 22
      ansible_user: ivan
      ansible_ssh_private_key_file: ~/.ssh/id_ed25519
      # ansible_become_password: &amp;quot;Pa$$w0rD&amp;quot;
      project: storage

## GROUPS
debian:
  hosts:
    debian12-vpn:
    debian12-dns:
    debian12-monitoring:
ubuntu:
  hosts:
    ubuntu22-storage:
    ubuntu22-backup:&lt;/pre&gt;
  &lt;p id=&quot;XKUT&quot;&gt;Не забудьте заменить параметры на свои 😉&lt;/p&gt;
  &lt;figure id=&quot;T2jU&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-2.png&quot; width=&quot;1298&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2ccd&quot;&gt;Сохраняем, закрываем.&lt;/p&gt;
  &lt;blockquote id=&quot;qsch&quot;&gt;Имейте в виду, что формат &lt;strong&gt;YAML&lt;/strong&gt; отступозависимый. Это значит, что отступы являются частью синтаксиса, и даже один неправильный пробел приведет к ошибке.&lt;/blockquote&gt;
  &lt;p id=&quot;fNiq&quot;&gt;Коротко опишу содержимое на примере сервера &lt;strong&gt;debian12-vpn&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;T399&quot;&gt;
    &lt;li id=&quot;USSl&quot;&gt;&lt;code&gt;debian12-vpn&lt;/code&gt; – произвольное имя хоста в файле инвентаризации;&lt;/li&gt;
    &lt;li id=&quot;cfTq&quot;&gt;&lt;code&gt;ansible_host: 192.168.122.93&lt;/code&gt; – адрес хоста (IP или DNS);&lt;/li&gt;
    &lt;li id=&quot;tqeu&quot;&gt;&lt;code&gt;ansible_port: 22&lt;/code&gt; – порт подключения SSH;&lt;/li&gt;
    &lt;li id=&quot;ZMEu&quot;&gt;&lt;code&gt;ansible_user: ivan&lt;/code&gt; – пользователь SSH, с помощью которого выполняется подключение;&lt;/li&gt;
    &lt;li id=&quot;qUVe&quot;&gt;&lt;code&gt;ansible_ssh_private_key_file: ~/.ssh/id_ed25519&lt;/code&gt; – путь до приватного SSH ключа (переопределяет значение из &lt;code&gt;ansible.cfg&lt;/code&gt;);&lt;/li&gt;
    &lt;ul id=&quot;SKo9&quot;&gt;
      &lt;li id=&quot;NYHQ&quot;&gt;Нежелательная альтернатива: &lt;code&gt;ansible_password&lt;/code&gt; – пароль подключения по SSH;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;vZtz&quot;&gt;&lt;code&gt;project: vpn&lt;/code&gt; – пользовательская переменная для данного хоста.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;0gFs&quot;&gt;Также обратите внимание, что после списка хостов идет список групп🖥🖥:&lt;/p&gt;
  &lt;ul id=&quot;E2dO&quot;&gt;
    &lt;li id=&quot;jlcx&quot;&gt;&lt;code&gt;debian&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;7KYU&quot;&gt;&lt;code&gt;ubuntu&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;GghL&quot;&gt;которые включают в себя хосты, разделенные по ОС (в моем случае). Группы также формируются произвольно, главное соблюдайте синтаксис.&lt;/p&gt;
  &lt;blockquote id=&quot;Uayw&quot;&gt;Весь список доступных параметров подключения для файла &lt;strong&gt;inventory&lt;/strong&gt; смотрите тут: &lt;a href=&quot;https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html#connecting-to-hosts-behavioral-inventory-parameters&quot; target=&quot;_blank&quot;&gt;Connecting to hosts: behavioral inventory parameters&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;Ptx0&quot;&gt;Наш файл инвентаря составлен, давайте посмотрим на его структуру такой командой:&lt;/p&gt;
  &lt;pre id=&quot;1cRo&quot;&gt;ansible-inventory --graph&lt;/pre&gt;
  &lt;figure id=&quot;6fOu&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-6.png&quot; width=&quot;1307&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ngXt&quot;&gt;Эта визуализация особенно полезна, если у вас большая инфраструктура из сотен серверов, разбитых на группы📊.&lt;/p&gt;
  &lt;h2 id=&quot;vczC&quot;&gt;Пишем первый плейбук: проверка доступности серверов с помощью модуля &lt;code&gt;ping&lt;/code&gt;&lt;/h2&gt;
  &lt;p id=&quot;C336&quot;&gt;В контексте Ansible модуль &lt;code&gt;ping&lt;/code&gt; не выполняет ping сервера в классическом понимании🤷‍♂️. Его задача произвести подключение к серверу по SSH, выполнить некоторые проверки (например наличие интерпретатора Python) и вернуть сообщение об успехе/ошибке👀.&lt;/p&gt;
  &lt;p id=&quot;HOH7&quot;&gt;Создаем файл плейбука в директории, которую мы обозначили в файле конфигурации:&lt;/p&gt;
  &lt;pre id=&quot;gNIk&quot;&gt;nvim ~/ansible/playbooks/ping.yml&lt;/pre&gt;
  &lt;figure id=&quot;pQQO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-10.png&quot; width=&quot;1208&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ZWPr&quot;&gt;В самом простом виде плейбук выглядит так:&lt;/p&gt;
  &lt;pre id=&quot;mX9O&quot;&gt;---

- name: Check connection

  hosts: all
  gather_facts: false
  tasks:
    - name: Ping
      ping:&lt;/pre&gt;
  &lt;figure id=&quot;87wh&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-11.png&quot; width=&quot;1163&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IgG5&quot;&gt;Где:&lt;/p&gt;
  &lt;ul id=&quot;0VWu&quot;&gt;
    &lt;li id=&quot;DKt5&quot;&gt;&lt;code&gt;hosts: all&lt;/code&gt; – список хостов, на которых требуется выполнить плейбук (в данном примере на всех);&lt;/li&gt;
    &lt;li id=&quot;DSgp&quot;&gt;&lt;code&gt;gather_facts: false&lt;/code&gt; – отключает сбор фактов (про них будет ниже);&lt;/li&gt;
    &lt;li id=&quot;Qpje&quot;&gt;&lt;code&gt;tasks&lt;/code&gt; – блок со списком задач, выполняемых на управляемых хостах, в данном случае одна задача: &lt;code&gt;ping&lt;/code&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;cwnP&quot;&gt;Сохраняем файл и запускаем плейбук:&lt;/p&gt;
  &lt;pre id=&quot;jPHB&quot;&gt;ansible-playbook ./ansible/playbooks/ping.yml&lt;/pre&gt;
  &lt;figure id=&quot;TMAo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-12-1500x681.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;nca6&quot;&gt;При использовании команды &lt;code&gt;ansible-playbook&lt;/code&gt; путь до плейбуков нужно указывать явно. Чтобы не делать этого каждый раз, для удобства можно создать короткую функцию и вызывать ее в консоли (смотрите &lt;a href=&quot;https://r4ven.me/?p=5422&amp;preview=true#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8E_%D0%B4%D0%BB%D1%8F_%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0_%D0%BF%D0%BB%D0%B5%D0%B9%D0%B1%D1%83%D0%BA%D0%BE%D0%B2&quot; target=&quot;_blank&quot;&gt;далее в статье&lt;/a&gt;).&lt;/blockquote&gt;
  &lt;p id=&quot;w53b&quot;&gt;В моем примере доступ до серверов настроен по ключам SSH. Поэтому проверка доступности выполнена успешно😎.&lt;/p&gt;
  &lt;figure id=&quot;5QF3&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-28.png&quot; width=&quot;432&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;X8sl&quot;&gt;Если вы используете пароль (что не рекомендуется)😳 можете задать его в файле &lt;code&gt;ansible.cfg&lt;/code&gt; (параметр &lt;code&gt;ansible_password&lt;/code&gt;) или передать интерактивно с помощью ключа &lt;code&gt;--ask-pass&lt;/code&gt; (для этого мы устанавливали пакет &lt;code&gt;sshpass&lt;/code&gt;):&lt;/p&gt;
  &lt;pre id=&quot;sQps&quot;&gt;ansible-playbook ./ansible/playbooks/ping.yml --ask-pass&lt;/pre&gt;
  &lt;p id=&quot;3I14&quot;&gt;В случае каких-либо ошибок, Ansible выведет страшного вида красные сообщения⛔️. Например, при недоступности хоста по SSH такое:&lt;/p&gt;
  &lt;figure id=&quot;pIZa&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-13-1500x672.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Y5zR&quot;&gt;Чтобы запустить плейбук на указанной группе серверов, можно их явно указать в команде через параметр &lt;code&gt;-l&lt;/code&gt; (limit):&lt;/p&gt;
  &lt;pre id=&quot;MvO3&quot;&gt;ansible-playbook ./ansible/playbooks/ping.yml -l ubuntu&lt;/pre&gt;
  &lt;figure id=&quot;abZw&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-14-1500x428.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;RlFU&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-34.png&quot; width=&quot;750&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NKfH&quot;&gt;Для запуска плейбука от имени привилегированного пользователя💪 добавьте ключ &lt;code&gt;-b&lt;/code&gt; (become). В моем примере модуль ping запуститься от имени root:&lt;/p&gt;
  &lt;pre id=&quot;uHDH&quot;&gt;ansible-playbook ./ansible/playbooks/ping.yml -b&lt;/pre&gt;
  &lt;figure id=&quot;AMLR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-17-1500x672.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;g60d&quot;&gt;В моей конфигурации серверов настроен беспарольный доступ к root через &lt;code&gt;sudo&lt;/code&gt; (т.к. у меня тестовый стенд🛠), поэтому все отработало корректно. Но если у вас доступ по паролю, его можно передать в файле &lt;code&gt;ansible.cfg&lt;/code&gt; (параметр &lt;code&gt;ansible_become_password&lt;/code&gt;, не рекомендуется) или ввести интерактивно, с помощью ключа &lt;code&gt;--ask-become-pass&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;UYXM&quot;&gt;ansible-playbook ./ansible/playbooks/ping.yml -b --ask-become-pass&lt;/pre&gt;
  &lt;p id=&quot;QGbV&quot;&gt;Ну а для безопасной автоматизации передачи паролей используется шифрование с помощью &lt;code&gt;ansible-vault&lt;/code&gt;, но это тема для отдельной статьи😉.&lt;/p&gt;
  &lt;figure id=&quot;BFmJ&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-35.png&quot; width=&quot;480&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;RlW9&quot;&gt;Если что, вот &lt;a href=&quot;https://docs.ansible.com/ansible/latest/collections/ansible/builtin/ping_module.html&quot; target=&quot;_blank&quot;&gt;документация по модулю ping&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;h2 id=&quot;W0sz&quot;&gt;Ansible facts – модули &lt;code&gt;setup&lt;/code&gt; и &lt;code&gt;debug&lt;/code&gt;&lt;/h2&gt;
  &lt;p id=&quot;DkSL&quot;&gt;Как уже ранее говорилось, факты Ansible (facts) – это информация об управляемом сервере в виде системных переменных, таких как тип и версия ОС, IP-адрес, версии пакетов и пр., автоматически собираемая Ansible во время выполнения плейбуков (если активирован флаг &lt;code&gt;gather_facts&lt;/code&gt;) и команд🤯.&lt;/p&gt;
  &lt;p id=&quot;BQQ3&quot;&gt;Давайте теперь соберем эти факты, чтобы понять, как они выглядят👨‍🏭. Для этого используется стандартный модуль &lt;strong&gt;setup&lt;/strong&gt;. Выполняем:&lt;/p&gt;
  &lt;pre id=&quot;pqlY&quot;&gt;ansible all -m setup&lt;/pre&gt;
  &lt;blockquote id=&quot;r6Wf&quot;&gt;&lt;code&gt;all&lt;/code&gt; – тут логично представляет всех хостов из файла инвентаря. Тут также можно указать любой хост отдельно, список хостов через запятую или группу.&lt;/blockquote&gt;
  &lt;p id=&quot;CZuY&quot;&gt;В зависимости от количества хостов, сбор фактов может занять какое-то время. В выводе команды вы увидите все собранные факты в формате json:&lt;/p&gt;
  &lt;figure id=&quot;hiuf&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-7.png&quot; width=&quot;1308&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;dGIZ&quot;&gt;Факты можно фильтровать, например так:&lt;/p&gt;
  &lt;pre id=&quot;HxGM&quot;&gt;ansible debian12-vpn -m setup -a &amp;#x27;filter=os_family,distribution_version&amp;#x27;&lt;/pre&gt;
  &lt;p id=&quot;q9AS&quot;&gt;Ранее в файле &lt;code&gt;ansible.cfg&lt;/code&gt; мы настроили кэширование фактов с помощью &lt;code&gt;fact_caching&lt;/code&gt;☝️.&lt;/p&gt;
  &lt;p id=&quot;6jk4&quot;&gt;Это значит, что собранные факты будут сохранятся в виде &lt;code&gt;json&lt;/code&gt; файлов во временной директории &lt;code&gt;~/ansible/tmp&lt;/code&gt;, которую мы также обозначили в файле конфига:&lt;/p&gt;
  &lt;pre id=&quot;tVFP&quot;&gt;ls -l ./ansible/tmp/&lt;/pre&gt;
  &lt;figure id=&quot;50I0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-8.png&quot; width=&quot;1300&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;15RM&quot;&gt;Часто необходимо получить значения только конкретных фактов или переменных. Это можно сделать с помощью модуля &lt;code&gt;debug&lt;/code&gt;🔨 в плейбуках или прямо в терминале.&lt;/p&gt;
  &lt;p id=&quot;Sa8G&quot;&gt;Вот пример получения информации об OS, объеме диска &lt;code&gt;/dev/sda1&lt;/code&gt;, переменной project и выводе shell команды на сервере &lt;strong&gt;debian12-vpn&lt;/strong&gt; в playbook:&lt;/p&gt;
  &lt;pre id=&quot;ft35&quot;&gt;nvim ./ansible/playbooks/debug.yml&lt;/pre&gt;
  &lt;pre id=&quot;HJJ6&quot;&gt;---

- name: Debug

  hosts: debian12-vpn
  gather_facts: true
  become: true

  tasks:

    - name: Debug 1
      debug:
        msg: &amp;quot;Example to use var: {{ ansible_facts.os_family }}&amp;quot;

    - name: Debug 2
      debug:
        var: ansible_facts.distribution_version

    - name: Debug 3
      debug:
        var: project

    - name: Shell 1
      shell:
        cmd: whoami
      register: user_name

    - name: Debug 4
      debug:
        var: user_name.stdout&lt;/pre&gt;
  &lt;p id=&quot;9G4o&quot;&gt;И запускаем:&lt;/p&gt;
  &lt;pre id=&quot;ECvi&quot;&gt;nvim ./ansible/playbooks/debug.yml&lt;/pre&gt;
  &lt;figure id=&quot;9pi7&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-39-1500x872.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5dEZ&quot;&gt;Просмотр фактов с помощью команд в терминале:&lt;/p&gt;
  &lt;blockquote id=&quot;2eEQ&quot;&gt;В этом случае факты будут взяты из кэша.&lt;/blockquote&gt;
  &lt;pre id=&quot;fpN9&quot;&gt;ansible debian12-vpn -m debug -a &amp;#x27;var=ansible_facts.os_family,ansible_facts.distribution_version&amp;#x27;

ansible debian12-vpn -m debug -a &amp;#x27;var=ansible_facts.devices.keys()&amp;#x27;

ansible debian12-vpn -m debug -a &amp;#x27;var=ansible_facts.devices.sda.partitions.sda1.size&amp;#x27;&lt;/pre&gt;
  &lt;figure id=&quot;L5MO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-9-1500x826.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;en2s&quot;&gt;Можно было заметить, что обращение к фактам происходит с помощью синтаксиса точки, как в Python (ansible написан на этом языке👌).&lt;/p&gt;
  &lt;blockquote id=&quot;DFZt&quot;&gt;Подборную инфу по сбору фактов также смотрите на оф сайте: &lt;a href=&quot;https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_vars_facts.html&quot; target=&quot;_blank&quot;&gt;Discovering variables: facts and magic variables&lt;/a&gt;. Инфа по модулю debug &lt;a href=&quot;https://docs.ansible.com/ansible/latest/collections/ansible/builtin/debug_module.html&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;h2 id=&quot;X6g8&quot;&gt;Выполнение shell команд в терминале на нескольких серверах одновременно&lt;/h2&gt;
  &lt;p id=&quot;SH9Z&quot;&gt;С помощью Ansible и стандартного модуля &lt;code&gt;shell&lt;/code&gt; можно выполнять удаленные команды сразу на множестве серверов🧑‍💻💻💻💻. Это очень удобно для дебага или выполнения простых операций.&lt;/p&gt;
  &lt;p id=&quot;Py6W&quot;&gt;Удаленная команда передается в кавычках с помощью ключа &lt;code&gt;-a&lt;/code&gt;. Например, вывести список сетевых интерфейсов их IP адресов:&lt;/p&gt;
  &lt;pre id=&quot;0XZK&quot;&gt;ansible all -m shell -a &amp;#x27;ip -br a&amp;#x27;&lt;/pre&gt;
  &lt;figure id=&quot;LAlY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-15-1500x674.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;bJwO&quot;&gt;Или выполнить команду из нашей &lt;a href=&quot;https://r4ven.me/it-razdel/linux-quiz/&quot; target=&quot;_blank&quot;&gt;Linux викторины&lt;/a&gt;🧐, которая выводит uptime сервера в формате &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/operacionnaya-sistema-unix/&quot; target=&quot;_blank&quot;&gt;Unix&lt;/a&gt; time:&lt;/p&gt;
  &lt;pre id=&quot;hafk&quot;&gt;ansible debian12-vpn,ubuntu22-storage -m shell -a &amp;#x27;date -d &amp;quot;$(uptime -s)&amp;quot; +%s&amp;#x27;&lt;/pre&gt;
  &lt;figure id=&quot;qtio&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-16-1500x247.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;S1Lh&quot;&gt;Для запуска команд от имени привилегированного пользователя также используется &lt;code&gt;-b&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;Wb71&quot;&gt;ansible all -m shell -a &amp;#x27;whoami&amp;#x27; -b&lt;/pre&gt;
  &lt;figure id=&quot;I7OS&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-18.png&quot; width=&quot;934&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;9YhH&quot;&gt;Что такое Ansible console&lt;/h2&gt;
  &lt;p id=&quot;iwZz&quot;&gt;В комплекте с Ansible идет такой полезные инструмент, как &lt;code&gt;ansible-console&lt;/code&gt;😏. Это интерактивная оболочка для выполнения команд на нескольких серверах. Похоже на команды модуля &lt;code&gt;shell&lt;/code&gt;, которые мы выполняли ранее, но способ взаимодействия немного другой:&lt;/p&gt;
  &lt;pre id=&quot;y7RD&quot;&gt;ansible-console

whoami&lt;/pre&gt;
  &lt;figure id=&quot;98kS&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-19.png&quot; width=&quot;1082&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;RR6R&quot;&gt;Для выхода введите &lt;code&gt;exit&lt;/code&gt; или нажмите сочетание клавиш &lt;code&gt;Ctrl+d&lt;/code&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;y12q&quot;&gt;Пример использования модуля &lt;code&gt;ping&lt;/code&gt; группы debian:&lt;/p&gt;
  &lt;pre id=&quot;bM2s&quot;&gt;ansible-console debian

ping&lt;/pre&gt;
  &lt;figure id=&quot;G1lv&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-20.png&quot; width=&quot;1186&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;poIW&quot;&gt;Просмотр фактов Ansible:&lt;/p&gt;
  &lt;pre id=&quot;cywS&quot;&gt;setup filter=ansible_hostname&lt;/pre&gt;
  &lt;figure id=&quot;cJ6b&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-21.png&quot; width=&quot;1192&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Nynn&quot;&gt;Для выполнения привилегированных команды, добавьте ключ &lt;code&gt;-b&lt;/code&gt; (но будьте осторожны!):&lt;/p&gt;
  &lt;pre id=&quot;Ao4y&quot;&gt;ansible-console debian -b

whoami&lt;/pre&gt;
  &lt;figure id=&quot;rbKH&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-22.png&quot; width=&quot;1188&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ipfC&quot;&gt;При выполнении удаленных команд &lt;code&gt;ansible-console&lt;/code&gt; по умолчанию используется модуль &lt;strong&gt;command&lt;/strong&gt;❗️. Он вызывает команды напрямую, поэтому некоторые &lt;code&gt;shell&lt;/code&gt; механизмы тут работать не будут. Для задействования shell укажите его явно:&lt;/p&gt;
  &lt;pre id=&quot;oDNV&quot;&gt;shell echo $HOME&lt;/pre&gt;
  &lt;figure id=&quot;bGUs&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-23.png&quot; width=&quot;1181&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Y7T6&quot;&gt;Документация Ansible прямо в терминале&lt;/h2&gt;
  &lt;p id=&quot;UFjr&quot;&gt;У Ansible очень хорошая документация (правда на английском🙄) и она доступна даже из консоли с помощью утилиты &lt;code&gt;ansible-doc&lt;/code&gt;. Например, чтобы посмотреть описание и примеры использования модуля &lt;strong&gt;systemd&lt;/strong&gt; выполните:&lt;/p&gt;
  &lt;pre id=&quot;lk7F&quot;&gt;ansible-doc systemd&lt;/pre&gt;
  &lt;figure id=&quot;qoLQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-24.png&quot; width=&quot;1175&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;eP9b&quot;&gt;Вы попадете в режим просмотра &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-vyvod-i-chtenie-soderzhimogo-komandy-echo-cat-less/&quot; target=&quot;_blank&quot;&gt;less&lt;/a&gt;. Обычно примеры использования модулей в плейбуках находятся внизу документации:&lt;/p&gt;
  &lt;figure id=&quot;BSui&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-25.png&quot; width=&quot;1178&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Q8vA&quot;&gt;Как по мне, это очень удобно!&lt;/p&gt;
  &lt;h2 id=&quot;eSTK&quot;&gt;Пример ansible playbook: правка конфига sshd и копирование SSH ключа&lt;/h2&gt;
  &lt;p id=&quot;xU9e&quot;&gt;В качестве практики напишем плейбук📝, который:&lt;/p&gt;
  &lt;ul id=&quot;9LWq&quot;&gt;
    &lt;li id=&quot;rRXX&quot;&gt;на всех серверах:&lt;/li&gt;
    &lt;ul id=&quot;PWjm&quot;&gt;
      &lt;li id=&quot;BY7M&quot;&gt;изменит номер порта подключения SSH;&lt;/li&gt;
      &lt;li id=&quot;sRHU&quot;&gt;отключит доступ по паролю на сервер по SSH;&lt;/li&gt;
      &lt;li id=&quot;n5Ju&quot;&gt;создаст директорию &lt;code&gt;~/.ssh&lt;/code&gt;, если она не существует;&lt;/li&gt;
      &lt;li id=&quot;ftb4&quot;&gt;добавить новый публичный ssh ключ для авторизации по ключу.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;2fP2&quot;&gt;на серверах, у которых переменная “project” равна “vpn”:&lt;/li&gt;
    &lt;ul id=&quot;erHZ&quot;&gt;
      &lt;li id=&quot;uuoh&quot;&gt;скопирует файл приватного ключа SSH с локальной машины в директорию пользователя на удаленных серверах.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;jeiV&quot;&gt;Генерируем новый ключ:&lt;/p&gt;
  &lt;pre id=&quot;uu9W&quot;&gt;ssh-keygen -t ed25519 -f ~/ansible/id_ed25519_new&lt;/pre&gt;
  &lt;figure id=&quot;hIip&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-27.png&quot; width=&quot;1183&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0vU7&quot;&gt;Создаем плейбук:&lt;/p&gt;
  &lt;pre id=&quot;c8PK&quot;&gt;nvim ./ansible/playbooks/sshd_config.yml&lt;/pre&gt;
  &lt;figure id=&quot;nAgd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-26.png&quot; width=&quot;1189&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;hONF&quot;&gt;Наполняем его:&lt;/p&gt;
  &lt;pre id=&quot;Uu4w&quot;&gt;---

- name: Config sshd service and copy private key   # имя/описание плейбука
  hosts: all                            # применять ко всем хостам
  gather_facts: false                   # не собирать факты (ускоряет выполнение)
  become: true                          # выполнять с повышением привилегий (sudo)
  force_handlers: true                  # выполнять обработчики даже в случае ошибки

  vars:
    - new_ssh_port: 4444                # новый номер порта SSH
    - user_name: &amp;quot;ivan&amp;quot;                 # имя пользователя, для которого добавляем SSH ключ
    - user_ssh_privkey: &amp;quot;/home/ivan/ansible/id_ed25519_new&amp;quot; # путь до приватного SSH ключа для пользователя
    - user_ssh_pubkey: &amp;quot;/home/ivan/ansible/id_ed25519_new.pub&amp;quot; # путь до публичного SSH ключа для пользователя

  tasks:
    - name: Change sshd port number
      lineinfile:
        path: /etc/ssh/sshd_config      # путь к файлу конфигурации SSH
        regexp: &amp;quot;^Port&amp;quot;                 # регулярное выражение для поиска строки с портом
        line: &amp;quot;Port {{ new_ssh_port }}&amp;quot; # изменить порт на значение из переменной
        backup: true                    # создать бэкап файла sshd_config перед изменением
      notify:
        - Restart sshd                  # обработчик для перезапуска SSH при изменении
      tags:
        - ssh_server                      # тег для возможности выборочного запуска задачи
    
    - name: Disable sshd password auth
      lineinfile:
        path: /etc/ssh/sshd_config      # путь к файлу конфигурации SSH
        regexp: &amp;#x27;^PasswordAuthentication yes&amp;#x27;  # регулярное выражение для поиска строки
        line: &amp;#x27;PasswordAuthentication no&amp;#x27;      # отключаем аутентификацию по паролю
      notify:
        - Restart sshd                  # обработчик для перезапуска SSH
      tags:
        - ssh_server                      # тег для задачи SSH сервера

    - name: Create ssh directory if it does not exist
      file:
        path: &amp;quot;/home/{{ user_name }}/.ssh/&amp;quot;  # путь к директории .ssh для пользователя
        state: directory               # создать директорию, если не существует
        owner: &amp;quot;{{ user_name }}&amp;quot;       # задать владельца
        group: &amp;quot;{{ user_name }}&amp;quot;       # задать группу
        mode: 0700                     # права доступа к директории
      tags:
        - ssh_client                   # тег для задач SSH клиента
    
    - name: Add user ssh public key
      lineinfile:
        path: &amp;quot;/home/{{ user_name }}/.ssh/authorized_keys&amp;quot;  # путь к файлу authorized_keys
        line: &amp;quot;{{ lookup(&amp;#x27;file&amp;#x27;, &amp;#x27;{{ user_ssh_pubkey }}&amp;#x27;) }}&amp;quot;  # в качестве добавляемой строки использовать содержимое файла публичного ключа
        owner: &amp;quot;{{ user_name }}&amp;quot;       # задать владельца
        group: &amp;quot;{{ user_name }}&amp;quot;       # задать группу
        mode: 0600                     # права доступа к файлу
        backup: true                   # создать бэкап файла перед изменением
        create: true                   # создать новый файл, если он не существует
      tags:
        - ssh_client                   # тег для задач SSH клиента

    - name: Copy user ssh private key
      copy:
        src: &amp;quot;{{ user_ssh_privkey }}&amp;quot;  # путь к файлу на локальной машине
        dest: &amp;quot;/home/{{ user_name }}/.ssh/&amp;quot;  # путь к директории на удаленном сервере, слэш обязателен
        owner: &amp;quot;{{ user_name }}&amp;quot;       # задать владельца
        group: &amp;quot;{{ user_name }}&amp;quot;       # задать группу
        mode: 0600                     # права доступа к файлу
        backup: true                   # создать бэкап файла перед изменением
      when: project == &amp;quot;vpn&amp;quot;           # выполнять только если у хоста переменная project = &amp;quot;vpn&amp;quot;
      tags:
        - ssh_client                   # тег для задач SSH клиента

  handlers:
    - name: Restart sshd
      systemd:
        name: sshd                     # название systemd сервиса SSH
        state: restarted               # перезапуск сервиса&lt;/pre&gt;
  &lt;p id=&quot;q2ml&quot;&gt;И запускаем:&lt;/p&gt;
  &lt;figure id=&quot;40aI&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-37.png&quot; width=&quot;289&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Ci1V&quot;&gt;&lt;strong&gt;ВНИМАНИЕ&lt;/strong&gt;❗️ Данный playbook &lt;strong&gt;меняет номер порта демона sshd&lt;/strong&gt; и &lt;strong&gt;отключает парольный доступ к серверу по SSH&lt;/strong&gt;. Крайне рекомендуется запускать необкатанные плейбуки в тестовых средах. Все действия вы выполняете на свой страх и ответственность. Я вас предупредил)&lt;/p&gt;
  &lt;pre id=&quot;rPNI&quot;&gt;ansible-playbook ./ansible/playbooks/sshd_config.yml&lt;/pre&gt;
  &lt;figure id=&quot;GYbo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-29-1500x1351.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vmdx&quot;&gt;Если все отработало корректно, то порт доступа SSH на удаленных серверах будет изменен. Не забудьте скорректировать номер порта в файле инвентаризации. Или верните старый номер порта подобной командой:&lt;/p&gt;
  &lt;pre id=&quot;yOCH&quot;&gt;ansible-playbook ./ansible/playbooks/sshd_config.yml -e &amp;#x27;ansible_port=4444&amp;#x27; -e &amp;#x27;new_ssh_port=22&amp;#x27;&lt;/pre&gt;
  &lt;p id=&quot;fUFP&quot;&gt;В ней переопределены переменная &lt;code&gt;ansible_port&lt;/code&gt; (из конфига &lt;code&gt;ansible.cfg&lt;/code&gt;), используемая для подключения к хостам, и кастомная переменная &lt;code&gt;new_ssh_port&lt;/code&gt; (из плейбука &lt;code&gt;sshd_config.yml&lt;/code&gt;), определяющая новый номер порта в плейбуке😶‍🌫️.&lt;/p&gt;
  &lt;p id=&quot;mYge&quot;&gt;На всякий случай повторю, что плейбук также добавляет наш новый публичный (&lt;code&gt;~/ansible/id_ed25519_new.pub&lt;/code&gt;) ключ на сервера.&lt;/p&gt;
  &lt;p id=&quot;upWw&quot;&gt;Возможно вы обратили внимание🧐, что в плейбуке используются теги🔖. С их помощью можно осуществлять выборочный запуск. Например, выполнить только те задачи, которых есть тег &lt;code&gt;ssh_client&lt;/code&gt; (ключ &lt;code&gt;-t&lt;/code&gt; или &lt;code&gt;--tags&lt;/code&gt;):&lt;/p&gt;
  &lt;pre id=&quot;BnJL&quot;&gt;ansible-playbook ./ansible/playbooks/sshd_config.yml -t ssh_client&lt;/pre&gt;
  &lt;figure id=&quot;lu2J&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-30-1500x714.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;OYnb&quot;&gt;Или наоборот, игнорировать задачи (&lt;code&gt;--skip-tags&lt;/code&gt;):&lt;/p&gt;
  &lt;pre id=&quot;lPRb&quot;&gt;ansible-playbook ./ansible/playbooks/sshd_config.yml --skip-tags ssh_server&lt;/pre&gt;
  &lt;h2 id=&quot;8FyN&quot;&gt;Коротко про Ansible roles&lt;/h2&gt;
  &lt;p id=&quot;LGZs&quot;&gt;Как говорилось в начале статьи, &lt;strong&gt;Ansible role&lt;/strong&gt; – это структура файлов и директорий для удобной организации задач, шаблонов, файлов переменных для Playbook🚜. Создать шаблон роли можно такой командой:&lt;/p&gt;
  &lt;pre id=&quot;4JDJ&quot;&gt;ansible-galaxy init ./ansible/roles/base-config&lt;/pre&gt;
  &lt;figure id=&quot;CMG6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-31.png&quot; width=&quot;1283&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;H6Kc&quot;&gt;Краткое описание структуры:&lt;/p&gt;
  &lt;pre id=&quot;Jvzo&quot;&gt;./ansible/roles/base-config/
├── README.md           # документация роли
├── defaults/           # значения переменных по умолчанию (main.yml)
├── files/              # файлы, которые будут копироваться на целевые хосты
├── handlers/           # обработчики для уведомлений (main.yml)
├── meta/               # метаданные роли, включая зависимости (main.yml)
├── tasks/              # основные задачи роли (main.yml)
├── templates/          # шаблоны Jinja2, которые будут рендериться
├── tests/              # тесты для роли (inventory, test.yml)
└── vars/               # переменные роли с более высоким приоритетом (main.yml)&lt;/pre&gt;
  &lt;p id=&quot;6gUH&quot;&gt;В будущем, мы обязательно будем писать роли Ansible для различных задач!&lt;/p&gt;
  &lt;figure id=&quot;0eRy&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-35.png&quot; width=&quot;480&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;9iwn&quot;&gt;Но и это уже совсем другая история)&lt;/p&gt;
  &lt;h2 id=&quot;PMFe&quot;&gt;Создаем функцию для удобного запуска плейбуков&lt;/h2&gt;
  &lt;p id=&quot;3Aax&quot;&gt;Ранее я обещал функцию для удобного выполнения плейбуков. Она довольно проста, но полезна. Выполняем:&lt;/p&gt;
  &lt;pre id=&quot;Clsi&quot;&gt;echo &amp;#x27;ap() {ansible-playbook ~/ansible/playbooks/&amp;quot;$@&amp;quot;}&amp;#x27; &amp;gt;&amp;gt; ~/.profile

source ~/.profile

which ap&lt;/pre&gt;
  &lt;p id=&quot;yCI2&quot;&gt;Описания команд выше:&lt;/p&gt;
  &lt;ul id=&quot;4toe&quot;&gt;
    &lt;li id=&quot;zfBd&quot;&gt;&lt;code&gt;echo&lt;/code&gt; – выводит строку (подробнее про вывод текста &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-vyvod-i-chtenie-soderzhimogo-komandy-echo-cat-less/&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;);&lt;/li&gt;
    &lt;li id=&quot;M9SZ&quot;&gt;&lt;code&gt;&amp;#x27;ap() {ansible-playbook ~/ansible/playbooks/&amp;quot;$@&amp;quot;}&amp;#x27;&lt;/code&gt; – строка, которая определяет функцию &lt;code&gt;ap&lt;/code&gt;:&lt;/li&gt;
    &lt;ul id=&quot;xsVM&quot;&gt;
      &lt;li id=&quot;5XT7&quot;&gt;&lt;code&gt;ap()&lt;/code&gt; — объявление функции с именем &lt;code&gt;ap&lt;/code&gt; (имя произвольное);&lt;/li&gt;
      &lt;li id=&quot;9qcI&quot;&gt;&lt;code&gt;{ansible-playbook ~/ansible/playbooks/&amp;quot;$@&amp;quot;}&lt;/code&gt; – тело функции, которая запускает &lt;code&gt;ansible-playbook&lt;/code&gt;, передавая ей все аргументы (&lt;code&gt;&amp;quot;$@&amp;quot;&lt;/code&gt;), например, &lt;code&gt;ap playbook.yml --become&lt;/code&gt;;&lt;/li&gt;
      &lt;li id=&quot;Y2Gr&quot;&gt;&lt;code&gt;&amp;gt;&amp;gt; ~/.profile&lt;/code&gt; – добавляет строку в конец файла &lt;code&gt;~/.profile&lt;/code&gt;, чтобы функция автоматически загружалась при входе в систему (подробнее про перенаправление потоков &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-perenapravlenie-vvoda-i-vyvoda/&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;).&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;evdb&quot;&gt;&lt;code&gt;source ~/.profile&lt;/code&gt; – загружает изменения из &lt;code&gt;~/.profile&lt;/code&gt;, активируя функцию &lt;code&gt;ap&lt;/code&gt; в текущей сессии;&lt;/li&gt;
    &lt;li id=&quot;LqZF&quot;&gt;&lt;code&gt;which ap&lt;/code&gt; – если функция определена успешно, это отобразит её как часть текущей оболочки.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;mm0Q&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-32-1500x338.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Xh7L&quot;&gt;Проверяем работу:&lt;/p&gt;
  &lt;pre id=&quot;ofyS&quot;&gt;ap ping.yml&lt;/pre&gt;
  &lt;figure id=&quot;qJli&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/11/image-33-1500x637.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;g8xO&quot;&gt;Отлично!&lt;/p&gt;
  &lt;h2 id=&quot;sag6&quot;&gt;Послесловие&lt;/h2&gt;
  &lt;p id=&quot;4eci&quot;&gt;Вот мы с вами и познакомились с таким крутым и полезным инструментом управления конфигурациями под названием Ansible😎. Базовые знания у нас есть, теперь осталось применить их на практике для решения рутинных задач😌. В планах написать плейбук по базовой настройке сервера Linux, установке и запуску различных сервисов, установке Arch linux на шифрованные разделы и много чего другого🤯.&lt;/p&gt;
  &lt;p id=&quot;KNXd&quot;&gt;Все файлы с примерами доступны в моем репозитории на &lt;a href=&quot;https://github.com/r4ven-me/ansible&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;DIvu&quot;&gt;Спасибо, что уделили время 😊. Если появились вопросы – приглашаю в наш дружелюбный &lt;a href=&quot;https://t.me/r4ven_me_chat/&quot; target=&quot;_blank&quot;&gt;Вороний чат&lt;/a&gt; 🚶‍♀️🐧🚶🐧🚶‍♂️🐧 в телеге 😅. Также обязательно подписывайтесь на основной телеграм канал: &lt;a href=&quot;https://t.me/r4ven_me/&quot; target=&quot;_blank&quot;&gt;@r4ven_me&lt;/a&gt;, уведомления о новых материалах на сайте приходят туда в день публикации.&lt;/p&gt;
  &lt;p id=&quot;IjeA&quot;&gt;Удачи!&lt;/p&gt;
  &lt;h2 id=&quot;EXtu&quot;&gt;Полезные источники&lt;/h2&gt;
  &lt;ul id=&quot;ZCtl&quot;&gt;
    &lt;li id=&quot;Hphy&quot;&gt;&lt;a href=&quot;https://github.com/r4ven-me/ansible&quot; target=&quot;_blank&quot;&gt;Файлы с примерами из статьи | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;tnRE&quot;&gt;&lt;a href=&quot;https://docs.ansible.com/ansible/latest/reference_appendices/config.html&quot; target=&quot;_blank&quot;&gt;Конфигурация ansible (EN) | docs.ansible.com&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;SvMu&quot;&gt;&lt;a href=&quot;https://docs.ansible.com/ansible/latest/reference_appendices/config.html#environment-variables&quot; target=&quot;_blank&quot;&gt;Список переменных окружения Ansible (EN) | docs.ansible.com&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;qwXu&quot;&gt;&lt;a href=&quot;https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html&quot; target=&quot;_blank&quot;&gt;Составление инвентаризации Ansible | docs.ansible.com&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;TOsW&quot;&gt;&lt;a href=&quot;https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html#connecting-to-hosts-behavioral-inventory-parameters&quot; target=&quot;_blank&quot;&gt;Список параметров подключения для файла inventory | docs.ansible.com&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;tXcE&quot;&gt;&lt;a href=&quot;https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_vars_facts.html&quot; target=&quot;_blank&quot;&gt;Список фактов (ansible facts) | docs.ansible.com&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;F9Gw&quot;&gt;&lt;a href=&quot;https://docs.ansible.com/ansible/latest/collections/ansible/builtin/debug_module.html&quot; target=&quot;_blank&quot;&gt;Документация по модулю debug | https://docs.ansible.com/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;hski&quot;&gt;&lt;a href=&quot;https://docs.ansible.com/ansible/latest/collections/ansible/builtin/ping_module.html&quot; target=&quot;_blank&quot;&gt;Документация по модулю ping | https://docs.ansible.com/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;fn63&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/zametki/ssh-bezopasnoe-podklyuchenie-k-udalyonnym-hostam-vvedenie/&quot; target=&quot;_blank&quot;&gt;SSH – Безопасное подключение к удалённым хостам: введение | Вороний блог&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;P8G3&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/poleznoe-po/vim-konsolnyj-redaktor-znakomstvo/&quot; target=&quot;_blank&quot;&gt;VIM – Консольный редактор: знакомство | Вороний блог&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;VisN&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/zsh-interaktivnaya-komandnaya-obolochka-dlya-linux-oh-my-zsh/&quot; target=&quot;_blank&quot;&gt;ZSH – Интерактивная командная оболочка для Linux + Oh-My-Zsh | Вороний блог&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>r4ven_me:linux-quiz-16-20</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/linux-quiz-16-20?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Linux викторина №16-20: что делает каждая команда на изображении?</title><published>2024-10-31T20:03:07.065Z</published><updated>2024-10-31T20:09:40.258Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/cd/12/cd122d70-8a9e-4fb5-8dbe-f492f051b8ee.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/14/2a/142a437b-37e2-46ac-87df-3b3add14c618.png&quot;&gt;Пройти тест можно на моём сайте r4ven.me.</summary><content type="html">
  &lt;figure id=&quot;WY3m&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/14/2a/142a437b-37e2-46ac-87df-3b3add14c618.png&quot; width=&quot;847&quot; /&gt;
    &lt;figcaption&gt;Linux викторина №16-20: что делает каждая команда на изображении?&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ZY6G&quot;&gt;&lt;strong&gt;Пройти тест можно на моём сайте &lt;a href=&quot;https://r4ven.me/it-razdel/linux-quiz/linux-viktorina-16-20-chto-delaet-kazhdaya-komanda-na-izobrazhenii/&quot; target=&quot;_blank&quot;&gt;r4ven.me.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;MLbi&quot;&gt;&lt;em&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</content></entry><entry><id>r4ven_me:configuration-management</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/configuration-management?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Система управления конфигурациями</title><published>2024-10-28T20:31:25.329Z</published><updated>2024-10-28T20:41:50.671Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/02/30/02301d9b-6b0c-413d-8da9-2a754c5fa709.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/85/1f/851f3cf1-bb06-4ad4-848e-239d97ceca50.png&quot;&gt;Исходный сайт представленного материала: r4ven.me</summary><content type="html">
  &lt;figure id=&quot;Wp9d&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/85/1f/851f3cf1-bb06-4ad4-848e-239d97ceca50.png&quot; width=&quot;830&quot; /&gt;
    &lt;figcaption&gt;Система управления конфигурациями&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;HoRy&quot;&gt;Исходный сайт представленного материала: &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/sistema-upravleniya-konfiguraciyami/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;sw0L&quot;&gt;Приветствую!&lt;/h3&gt;
  &lt;p id=&quot;tuUk&quot;&gt;Сегодня в словарике линуксоида🐧 термин – &lt;strong&gt;системы управления конфигурациями&lt;/strong&gt;. Данные системы уже давно являются неотъемлемой частью процесса администрирования IT инфраструктуры🧑‍💻. По традиции дадим определение термину, узнаем какие существуют типы и популярные реализации подобных систем. Ну и коротко про преимущества и недостатки🧐.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;U3Jj&quot;&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;4v6j&quot;&gt;Обращаю ваше внимание, что этот теоретический пост📗 предшествует будущим материалам по Ansible🛠. В числе которых: статья по установке и настройке, плейбук по &lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/nachalnaya-nastrojka-linux-servera-na-primere-debian/&quot; target=&quot;_blank&quot;&gt;базовой конфигурации&lt;/a&gt; Linux сервера, плейбук по развертыванию &lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/podnimaem-openconnect-ssl-vpn-server-ocserv-v-docker-dlya-vnutrennih-proektov/&quot; target=&quot;_blank&quot;&gt;OpenConnect&lt;/a&gt; сервера и &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/pishem-bash-skript-dlya-podklyucheniya-k-openconnect-vpn-serveru/&quot; target=&quot;_blank&quot;&gt;клиента&lt;/a&gt; и т.д. Идей у меня много😉.&lt;/p&gt;
  &lt;figure id=&quot;OhXm&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/41/e7/41e79084-644f-4915-92d3-a62ac06b5ea5.png&quot; width=&quot;725&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;1hIw&quot;&gt;Вместо введения: зачем нужны системы управления конфигурациями?&lt;/h2&gt;
  &lt;figure id=&quot;31oC&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-16.png&quot; width=&quot;460&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;uHEY&quot;&gt;&lt;strong&gt;Устойчивость и стабильность&lt;/strong&gt;. Системы управления конфигурациями позволяют сократить риск сбоев и ошибок. Автоматизация процессов устраняет человеческий фактор и сохраняет состояние инфраструктуры в неизменном виде.&lt;/p&gt;
  &lt;p id=&quot;irpo&quot;&gt;&lt;strong&gt;Снижение затрат на администрирование&lt;/strong&gt;. CM-системы автоматизируют рутинные задачи, снижая нагрузку на администраторов и давая им возможность сконцентрироваться на стратегических задачах.&lt;/p&gt;
  &lt;p id=&quot;HoZL&quot;&gt;&lt;strong&gt;Контроль версий и повторяемость&lt;/strong&gt;. CM-инструменты фиксируют историю изменений и позволяют быстро откатываться к прошлым версиям. Это важно при возникновении неполадок или необходимости вернуть предыдущую конфигурацию.&lt;/p&gt;
  &lt;p id=&quot;dvIe&quot;&gt;&lt;strong&gt;Гибкость и масштабируемость&lt;/strong&gt;. CM-системы обеспечивают гибкость при развертывании инфраструктуры, делая её готовой к быстрой адаптации в условиях роста нагрузки или внедрения новых технологий.&lt;/p&gt;
  &lt;p id=&quot;uiVK&quot;&gt;бла бла бла😶‍🌫️&lt;/p&gt;
  &lt;h2 id=&quot;1PJp&quot;&gt;Немного из истории CM-систем&lt;/h2&gt;
  &lt;figure id=&quot;R75k&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-15.png&quot; width=&quot;469.0000000000001&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;U51N&quot;&gt;Системы управления конфигурациями появились в ответ на потребность автоматизировать повторяющиеся задачи в управлении серверами и снижать нагрузку на системных администраторов. В начале 2000-х годов, с ростом масштабов веб-приложений и данных, администраторы столкнулись с проблемой: инфраструктура увеличивалась, а управление ею вручную стало занимать слишком много времени и человеческих ресурсов. Разработчики и инженеры осознали, что конфигурации серверов, как и код, могут быть зафиксированы в &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/repozitorij-programmnogo-obespecheniya/&quot; target=&quot;_blank&quot;&gt;репозиториях&lt;/a&gt;, а их изменение и развертывание — автоматизированы. Тут и пошло поехало😳.&lt;/p&gt;
  &lt;p id=&quot;4MQV&quot;&gt;Одной из первых таких систем была &lt;strong&gt;CFEngine&lt;/strong&gt;, созданная Марком Берджессом в 1993 году. Она положила начало автоматизированным CM-инструментам, установив базовые принципы, которые до сих пор используются в более современных системах. CFEngine разрабатывалась на фоне &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/operacionnaya-sistema-unix/&quot; target=&quot;_blank&quot;&gt;UNIX-систем&lt;/a&gt; и была построена вокруг идеи поддержания состояния серверов. Со временем её идеи распространились и повлияли на появление других систем, таких как Puppet и Chef.&lt;/p&gt;
  &lt;h2 id=&quot;2KMU&quot;&gt;Про типы CM-систем&lt;/h2&gt;
  &lt;p id=&quot;HfcO&quot;&gt;CM-системы можно разделить на два типа: &lt;strong&gt;push и pull ориентированные&lt;/strong&gt;. Эти подходы определяют, как именно CM-системы взаимодействуют с управляемыми серверами.&lt;/p&gt;
  &lt;ol id=&quot;a3S1&quot;&gt;
    &lt;li id=&quot;urO8&quot;&gt;&lt;strong&gt;Push-ориентированные системы&lt;/strong&gt;&lt;br /&gt;В push-системах центральный сервер управления отправляет команды на целевые машины. Этот подход даёт полный контроль над процессом развертывания. Одним из самых известных примеров push-системы является &lt;strong&gt;Ansible&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;D55W&quot;&gt;&lt;strong&gt;Pull-ориентированные системы&lt;/strong&gt;&lt;br /&gt;В pull-системах агенты, установленные на целевых машинах, регулярно обращаются к серверу за обновлениями. Это позволяет автоматизировать процесс управления конфигурацией даже в распределённых системах. Примером такой системы является &lt;strong&gt;Puppet&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h2 id=&quot;twIy&quot;&gt;Популярные CM-системы и их особенности&lt;/h2&gt;
  &lt;figure id=&quot;zPeS&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-13.png&quot; width=&quot;470&quot; /&gt;
  &lt;/figure&gt;
  &lt;ol id=&quot;O2T4&quot;&gt;
    &lt;li id=&quot;pGn3&quot;&gt;&lt;strong&gt;Ansible&lt;/strong&gt; (наше всё🙃)&lt;/li&gt;
    &lt;ul id=&quot;iSML&quot;&gt;
      &lt;li id=&quot;uCRI&quot;&gt;&lt;strong&gt;Написан на: &lt;/strong&gt;Python;&lt;/li&gt;
      &lt;li id=&quot;WHno&quot;&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; GPL 3.0;&lt;/li&gt;
      &lt;li id=&quot;eDg1&quot;&gt;&lt;strong&gt;Преимущества&lt;/strong&gt;: простота настройки, отсутствие агентов (использует лишь SSH и Python), поддержка YAML для описания конфигураций;&lt;/li&gt;
      &lt;li id=&quot;g2NB&quot;&gt;&lt;strong&gt;Недостатки&lt;/strong&gt;: последовательное выполнение задач может замедлять работу в крупных средах;&lt;/li&gt;
      &lt;li id=&quot;MHcS&quot;&gt;&lt;strong&gt;Из истории&lt;/strong&gt;: Созданная Михаэлом ДеХааном в 2012 году, Ansible развивалась как лёгкое решение для DevOps-задач, и вскоре была приобретена компанией Red Hat. Интересно, что несмотря на свою молодость, Ansible оказалась настолько успешной, что стала одним из стандартов CM.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;8xFc&quot;&gt;&lt;strong&gt;Puppet&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;lcsh&quot;&gt;
      &lt;li id=&quot;g1Qv&quot;&gt;&lt;strong&gt;Написан на:&lt;/strong&gt; Ruby;&lt;/li&gt;
      &lt;li id=&quot;7Fhi&quot;&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; Apache License 2.0;&lt;/li&gt;
      &lt;li id=&quot;Wgqs&quot;&gt;&lt;strong&gt;Преимущества&lt;/strong&gt;: зрелый инструмент с большим сообществом, поддерживает декларативный стиль конфигураций, подходит для крупных компаний;&lt;/li&gt;
      &lt;li id=&quot;xvOq&quot;&gt;&lt;strong&gt;Недостатки&lt;/strong&gt;: требует установки агентов, сложен для новичков;&lt;/li&gt;
      &lt;li id=&quot;mIUt&quot;&gt;&lt;strong&gt;Из истории:&lt;/strong&gt; Puppet был разработан в 2005 году Люком Каньесом, когда необходимость в управлении конфигурациями для масштабных сред уже была очевидна. Puppet Labs, компания, стоящая за Puppet, активно участвовала в формировании подходов к DevOps. На основе Puppet строили свои инфраструктуры крупнейшие компании, такие как Google, Oracle, Cisco и др.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;LZMY&quot;&gt;&lt;strong&gt;Chef&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;9LWr&quot;&gt;
      &lt;li id=&quot;f09Q&quot;&gt;&lt;strong&gt;Написана на:&lt;/strong&gt; на Ruby (клиентская часть) и Erlang (серверная часть);&lt;/li&gt;
      &lt;li id=&quot;11fg&quot;&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; Apache License 2.0;&lt;/li&gt;
      &lt;li id=&quot;g4eh&quot;&gt;&lt;strong&gt;Преимущества&lt;/strong&gt;: гибкость, поддержка Ruby и высокая степень кастомизации;&lt;/li&gt;
      &lt;li id=&quot;4DZK&quot;&gt;&lt;strong&gt;Недостатки&lt;/strong&gt;: высокий порог вхождения для тех, кто не знаком с Ruby, необходимость установки агентов;&lt;/li&gt;
      &lt;li id=&quot;fugJ&quot;&gt;&lt;strong&gt;Из истории:&lt;/strong&gt; Chef, созданный в 2009 году, вдохновлялся идеями Puppet, но предоставил больше свободы за счёт возможности использования Ruby для программирования инфраструктуры. Это помогло компании Opscode (ныне Chef) привлечь к инструменту специалистов, ориентированных на программирование. Chef была одной из первых CM-систем, активно поддерживавших идеи DevOps.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;cNIk&quot;&gt;&lt;strong&gt;SaltStack&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;XWRZ&quot;&gt;
      &lt;li id=&quot;hQVb&quot;&gt;&lt;strong&gt;Написан на:&lt;/strong&gt; Python;&lt;/li&gt;
      &lt;li id=&quot;J1i3&quot;&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; Apache;&lt;/li&gt;
      &lt;li id=&quot;kv4g&quot;&gt;&lt;strong&gt;Преимущества&lt;/strong&gt;: высокая скорость работы, поддержка как push-, так и pull-ориентированной модели;&lt;/li&gt;
      &lt;li id=&quot;Q6oT&quot;&gt;&lt;strong&gt;Недостатки&lt;/strong&gt;: может быть сложен в настройке;&lt;/li&gt;
      &lt;li id=&quot;9IzM&quot;&gt;&lt;strong&gt;Из истории:&lt;/strong&gt; SaltStack был выпущен в 2011 году и привлёк внимание благодаря быстрой обработке команд и гибкости. В отличие от других систем, SaltStack предоставляет гибридный подход, что делает его популярным в высоконагруженных средах.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;h2 id=&quot;acuK&quot;&gt;Заключение&lt;/h2&gt;
  &lt;p id=&quot;dqMh&quot;&gt;Системы управления конфигурациями прошли долгий путь от первых разработок в 1990-х годах до современных решений, таких как Ansible, Puppet, Chef и SaltStack. Каждое из этих решений обладает своими особенностями и преимуществами, которые делают их подходящими для определённых задач и сред. Выбор инструмента, как это часто бывает, зависит от потребностей, инфраструктуры и уровня требований к управлению🤵‍♂️.&lt;/p&gt;
  &lt;p id=&quot;fZBt&quot;&gt;В ближайшее время на сайте Вороний блог выйдет вводная заметка по установке и начальной настройке &lt;strong&gt;системы управления конфигурациями – Ansible&lt;/strong&gt;. Предпочтение данной CM отдано по очевидным причинам: описание конфигураций в удобном Yaml, при работе необходим лишь SSH и установленный Python на удаленном сервере. Хотя фактически можно обойтись из без Python, но это больше для гурманов🤪.&lt;/p&gt;
  &lt;p id=&quot;z5IR&quot;&gt;Обязательно подписывайтесь на наш телеграм канал &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;@r4ven_me&lt;/a&gt;📱, чтобы не пропустить новые посты, а если возникли вопросы или просто есть желание поболтать про Linux и &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/otkrytoe-po/&quot; target=&quot;_blank&quot;&gt;Open source&lt;/a&gt; – добро пожаловать в наш чат &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;@r4ven_me_chat&lt;/a&gt;💬. У нас там вежливое микросообщество🤓.&lt;/p&gt;
  &lt;p id=&quot;Wk9s&quot;&gt;Спасибо, что читаете!&lt;/p&gt;
  &lt;h2 id=&quot;7nj7&quot;&gt;Полезные источники&lt;/h2&gt;
  &lt;ul id=&quot;jiwO&quot;&gt;
    &lt;li id=&quot;Xh4v&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B5_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&quot; target=&quot;_blank&quot;&gt;Конфигурационное управление | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;Tb6b&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/Ansible&quot; target=&quot;_blank&quot;&gt;Ansible | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;LTYg&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/Puppet&quot; target=&quot;_blank&quot;&gt;Puppet | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;SQxK&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/Chef_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0)&quot; target=&quot;_blank&quot;&gt;Chef | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;4FKU&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/SaltStack&quot; target=&quot;_blank&quot;&gt;SaltStack | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;De4j&quot;&gt;&lt;a href=&quot;https://habr.com/ru/companies/otus/articles/774150/&quot; target=&quot;_blank&quot;&gt;Управление конфигурациями: Puppet vs. Chef vs. Ansible | Habr&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>r4ven_me:sborka-dvuhprocessornogo-pk</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/sborka-dvuhprocessornogo-pk?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Сборка двухпроцессорного ПК для Linux</title><published>2024-10-01T18:48:07.176Z</published><updated>2024-10-01T18:48:07.176Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/5f/24/5f24bebe-9673-47b0-8291-d9f2b29a1ad9.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/84/ac/84acacb5-69ca-4572-bb0e-4810932c59ec.png&quot;&gt;Заголовок получился кликбейтный😏, но сегодня речь действительно пойдет о моей сборке ПК с двухпроцессорной конфигурацией🧑‍💻. Будет много фоток и мало слов, погнали😉.</summary><content type="html">
  &lt;figure id=&quot;M12S&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/84/ac/84acacb5-69ca-4572-bb0e-4810932c59ec.png&quot; width=&quot;961&quot; /&gt;
    &lt;figcaption&gt;Сборка двухпроцессорного ПК для Linux&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;DAMq&quot;&gt;Приветствую!&lt;/h3&gt;
  &lt;p id=&quot;Rmhs&quot;&gt;Заголовок получился кликбейтный😏, но сегодня речь действительно пойдет о моей сборке ПК с двухпроцессорной конфигурацией🧑‍💻. Будет много фоток и мало слов, погнали😉.&lt;/p&gt;
  &lt;p id=&quot;BoQF&quot;&gt;&lt;em&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;DIzs&quot;&gt;&lt;strong&gt;КРАСНАЯ ПЛАШКА&lt;br /&gt;&lt;/strong&gt;Пожалуйста, обратите внимание, что данная статья не является рекомендацией. Я лишь делюсь своим мнением и пережитым опытом. Будьте осторожны при покупке Б/У деталей, потому что всегда существует риск приобрести нерабочий экземпляр.&lt;/blockquote&gt;
  &lt;figure id=&quot;beTt&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/94/7d/947d6486-acb5-4311-a09c-3108e8d32061.png&quot; width=&quot;650&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Ojfy&quot;&gt;Зачем нужен двухпроцессорный ПК&lt;/h2&gt;
  &lt;p id=&quot;oSI3&quot;&gt;TLDR: чтобы наблюдать такую радугу в системном мониторе😂:&lt;/p&gt;
  &lt;figure id=&quot;rNWw&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-1.png&quot; width=&quot;1233&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;6V0T&quot;&gt;Если серьезно, то основная причина вот:&lt;/p&gt;
  &lt;figure id=&quot;Es9w&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-2.png&quot; width=&quot;1475&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;m0QQ&quot;&gt;Создание лабораторной среды на базе функционального &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/gipervizor-po-dlya-virtualizacii/&quot; target=&quot;_blank&quot;&gt;гипервизора&lt;/a&gt; для проведения различных тестов и быстрого развертывания образов VM в т.ч. с использованием &lt;strong&gt;&lt;a href=&quot;https://wiki.archlinux.org/title/Cloud-init&quot; target=&quot;_blank&quot;&gt;Cloud init&lt;/a&gt;&lt;/strong&gt;. Тут мой выбор пал на популярное &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/otkrytoe-po/&quot; target=&quot;_blank&quot;&gt;open source&lt;/a&gt; решение – &lt;strong&gt;Proxmox&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;3H5K&quot;&gt;Несмотря на то, что в моем случае proxmox запускает ВМ в режиме &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F&quot; target=&quot;_blank&quot;&gt;паравиртуализации&lt;/a&gt;, все работает довольно шустро. Мне для тестов хватает с головой. Возможно в будущем сделаю заметку по этой теме📝.&lt;/p&gt;
  &lt;p id=&quot;FKIg&quot;&gt;В результате половину ресурсов получает мое &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/okruzhenie-rabochego-stola/&quot; target=&quot;_blank&quot;&gt;графическое окружение&lt;/a&gt; (LMDE6 с Cinnamon), а другая половина отдана Proxmox👌.&lt;/p&gt;
  &lt;h2 id=&quot;qmoz&quot;&gt;Обзор комплектующих&lt;/h2&gt;
  &lt;h3 id=&quot;4En6&quot;&gt;Материнская плата&lt;/h3&gt;
  &lt;p id=&quot;RByv&quot;&gt;&lt;strong&gt;Atermiter Dual X99 2011-3&lt;/strong&gt; – производитель, как шутят мои друзья, цитата: “какое-то ху*ло”😂😂. Если что, то “мать покупалась на али”.&lt;/p&gt;
  &lt;p id=&quot;qeUU&quot;&gt;Характеристики:&lt;/p&gt;
  &lt;ul id=&quot;lt0S&quot;&gt;
    &lt;li id=&quot;a2Pb&quot;&gt;&lt;strong&gt;Сокет: &lt;/strong&gt;2011 v3&lt;/li&gt;
    &lt;li id=&quot;1ayo&quot;&gt;&lt;strong&gt;Количество сокетов:&lt;/strong&gt; 2&lt;/li&gt;
    &lt;li id=&quot;70OB&quot;&gt;&lt;strong&gt;Количество слотов памяти:&lt;/strong&gt; 8&lt;/li&gt;
    &lt;li id=&quot;hLpX&quot;&gt;&lt;strong&gt;Тип памяти:&lt;/strong&gt; DDR4 DIMM&lt;/li&gt;
    &lt;li id=&quot;aWov&quot;&gt;&lt;strong&gt;Слоты PCI-E:&lt;/strong&gt; 2 x PCI-E 3.0 x1, 2 x PCI-E 3.0 x16&lt;/li&gt;
    &lt;li id=&quot;3nnr&quot;&gt;&lt;strong&gt;USB на плате:&lt;/strong&gt; 1 x USB 3.2, 1 x USB 2.0&lt;/li&gt;
    &lt;li id=&quot;yQUQ&quot;&gt;&lt;strong&gt;Разъемы на задней панели:&lt;/strong&gt; 4 x USB 2.0 Type-A, 4 x USB 3.2 Type-A, LAN RJ-45, PS/2 (клавиатура), PS/2 (мышь)&lt;/li&gt;
    &lt;li id=&quot;WS1g&quot;&gt;&lt;strong&gt;Звук:&lt;/strong&gt; AC’97&lt;/li&gt;
    &lt;li id=&quot;iMpa&quot;&gt;&lt;strong&gt;Форм-фактор:&lt;/strong&gt; EATX&lt;/li&gt;
    &lt;li id=&quot;1AIO&quot;&gt;&lt;strong&gt;Слоты накопителей:&lt;/strong&gt; 8 x SATA 6G, 2 x M.2 NVME (вероятно разных поколений)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;YcAJ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_1_2024-10-01_15-16-36-e1727787560670.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;4UaZ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_2_2024-10-01_15-16-36-e1727787110724.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;YjwS&quot;&gt;ПроцессорЫ (Б/У)&lt;/h3&gt;
  &lt;p id=&quot;U9bd&quot;&gt;2 штука &lt;strong&gt;Intel Xeon E5-2680V3&lt;/strong&gt; – не самые мощные для данного сокета, просто продавались в комплекте с мат. платой и памятью. Так было банально дешевле. Есть возможность “доумощниться” при необходимости😎.&lt;/p&gt;
  &lt;p id=&quot;Bwej&quot;&gt;Характеристики (на один процессор):&lt;/p&gt;
  &lt;ul id=&quot;DMXq&quot;&gt;
    &lt;li id=&quot;tC9E&quot;&gt;&lt;strong&gt;Количество:&lt;/strong&gt; 2 шт.&lt;/li&gt;
    &lt;li id=&quot;9CCV&quot;&gt;&lt;strong&gt;Тех. процесс:&lt;/strong&gt; 22 nm&lt;/li&gt;
    &lt;li id=&quot;MaSo&quot;&gt;&lt;strong&gt;Ядер:&lt;/strong&gt; 12&lt;/li&gt;
    &lt;li id=&quot;6XFc&quot;&gt;&lt;strong&gt;Потоков:&lt;/strong&gt; 24&lt;/li&gt;
    &lt;li id=&quot;fqb3&quot;&gt;&lt;strong&gt;Базовая частота:&lt;/strong&gt; 2500 MHz&lt;/li&gt;
    &lt;li id=&quot;RUhK&quot;&gt;&lt;strong&gt;Максимальная частота в Turbo Boost:&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;UrlZ&quot;&gt;
      &lt;li id=&quot;5TQU&quot;&gt;3300 MHz (1-2 ядра)&lt;/li&gt;
      &lt;li id=&quot;xVNi&quot;&gt;3100 MHz (3 ядра)&lt;/li&gt;
      &lt;li id=&quot;I1Es&quot;&gt;2900 MHz (4 ядра)&lt;/li&gt;
      &lt;li id=&quot;ahRp&quot;&gt;2800 MHz (5 и больше ядер)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;yvf9&quot;&gt;&lt;strong&gt;Кэш 3-го уровня:&lt;/strong&gt; 30 Mb&lt;/li&gt;
    &lt;li id=&quot;KTlm&quot;&gt;&lt;strong&gt;Поддержка оперативной памяти DDR4:&lt;/strong&gt; 2133 MHz&lt;/li&gt;
    &lt;li id=&quot;GUWG&quot;&gt;&lt;strong&gt;TDP:&lt;/strong&gt; 120 W&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;b2aN&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_5_2024-10-01_15-16-36.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;LSGz&quot;&gt;КулерЫ&lt;/h3&gt;
  &lt;p id=&quot;64Su&quot;&gt;Тут все просто. 2 китайские башни белого цвета – &lt;strong&gt;M-T4 Snowman&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;tb9j&quot;&gt;
    &lt;li id=&quot;Fm0Z&quot;&gt;&lt;strong&gt;Разъем питания:&lt;/strong&gt; 4 pin&lt;/li&gt;
    &lt;li id=&quot;YK3J&quot;&gt;&lt;strong&gt;Количество тепловых трубок:&lt;/strong&gt; 4 шт&lt;/li&gt;
    &lt;li id=&quot;PuBM&quot;&gt;&lt;strong&gt;Диаметр вентилятора:&lt;/strong&gt; 120 мм&lt;/li&gt;
    &lt;li id=&quot;uzlS&quot;&gt;&lt;strong&gt;Макс. оборотов:&lt;/strong&gt; 1300 об/мин&lt;/li&gt;
    &lt;li id=&quot;SR62&quot;&gt;&lt;strong&gt;TDP: &lt;/strong&gt;150 Вт&lt;/li&gt;
    &lt;li id=&quot;QrCT&quot;&gt;&lt;strong&gt;Макс. воздушный поток:&lt;/strong&gt; 48 CFM&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;isYX&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_6_2024-10-01_15-16-36-e1727787129208.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;KvTp&quot;&gt;Оперативная память (Б/У)&lt;/h3&gt;
  &lt;p id=&quot;jWca&quot;&gt;Память от того же *йло сборщика – &lt;strong&gt;Atermiter&lt;/strong&gt;. Скорее всего от этого вендора тут только радиаторы😁. Память серверная, а чьи чипы – хз.&lt;/p&gt;
  &lt;p id=&quot;Ogws&quot;&gt;Характеристики:&lt;/p&gt;
  &lt;ul id=&quot;spdI&quot;&gt;
    &lt;li id=&quot;sBhF&quot;&gt;&lt;strong&gt;Тип:&lt;/strong&gt; DDR4&lt;/li&gt;
    &lt;li id=&quot;voud&quot;&gt;&lt;strong&gt;Форм-фактор:&lt;/strong&gt; DIMM&lt;/li&gt;
    &lt;li id=&quot;xgWu&quot;&gt;&lt;strong&gt;Количество:&lt;/strong&gt; 4 шт.&lt;/li&gt;
    &lt;li id=&quot;ktnj&quot;&gt;&lt;strong&gt;Объем одного модуля:&lt;/strong&gt; 16GB&lt;/li&gt;
    &lt;li id=&quot;vITA&quot;&gt;&lt;strong&gt;Частота:&lt;/strong&gt; 3200 MHz (ага, а процессор только 2133)&lt;/li&gt;
    &lt;li id=&quot;rxPV&quot;&gt;&lt;strong&gt;Особенности:&lt;/strong&gt; серверная, ECC REG&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;QSHE&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image.png&quot; width=&quot;577&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;YETF&quot;&gt;Видеокарта (Б/У)&lt;/h3&gt;
  &lt;p id=&quot;Aq0Y&quot;&gt;Сразу скажу, что в послесднее время в игры я играю редко. Поэтому сильно по этому поводу не заморачивался. Раз решил брать мать с б/у процом, то и видюху взял аналогичную.&lt;/p&gt;
  &lt;p id=&quot;EypU&quot;&gt;Выбор пал на &lt;strong&gt;Radeon rx 580 8gb&lt;/strong&gt;, как самую распространенную и доступную в соотношении цена-качество. Вендор – написано, что &lt;strong&gt;XFX&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;Gm17&quot;&gt;Характеристики:&lt;/p&gt;
  &lt;ul id=&quot;sm9k&quot;&gt;
    &lt;li id=&quot;XyY5&quot;&gt;&lt;strong&gt;Питание видеокарты:&lt;/strong&gt; 8 pin&lt;/li&gt;
    &lt;li id=&quot;NYWt&quot;&gt;&lt;strong&gt;Видео разъемы:&lt;/strong&gt; DisplayPort 3 шт., HDMI 1 шт., DVI-D 1 шт.&lt;/li&gt;
    &lt;li id=&quot;rmmP&quot;&gt;&lt;strong&gt;Объем видеопамяти:&lt;/strong&gt; 8192 Мб&lt;/li&gt;
    &lt;li id=&quot;2e2x&quot;&gt;&lt;strong&gt;Тип видеопамяти:&lt;/strong&gt; GDDR5&lt;/li&gt;
    &lt;li id=&quot;y80f&quot;&gt;&lt;strong&gt;Разрядность шины:&lt;/strong&gt; 256 бит&lt;/li&gt;
    &lt;li id=&quot;Rok0&quot;&gt;&lt;strong&gt;Потребляемая мощность:&lt;/strong&gt; 150 Вт&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;0Olp&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_16_2024-10-01_15-16-36-e1727787192805.jpg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;Bn09&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_19_2024-10-01_15-16-36-e1727787209363.jpg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;OdCv&quot;&gt;Накопитель М2&lt;/h3&gt;
  &lt;p id=&quot;nmbk&quot;&gt;Т.к. на плате есть 2 разъема под M.2 накопители, решил попробовать. Взял один из недорогих: &lt;strong&gt;ARDOR GAMING Ally AL1282&lt;/strong&gt; на 256 гб под систему. Тесты показывают совсем не те цифры, что заявлены. Но с чьей стороны косяк: материнки или SSD пока не определил.&lt;/p&gt;
  &lt;p id=&quot;ojwT&quot;&gt;Характеристики:&lt;/p&gt;
  &lt;ul id=&quot;P2ZX&quot;&gt;
    &lt;li id=&quot;vZfJ&quot;&gt;&lt;strong&gt;Объем накопителя:&lt;/strong&gt; 256 Gb&lt;/li&gt;
    &lt;li id=&quot;AHiF&quot;&gt;&lt;strong&gt;Ключ разъема:&lt;/strong&gt; M.2&lt;/li&gt;
    &lt;li id=&quot;OFL6&quot;&gt;&lt;strong&gt;Интерфейс:&lt;/strong&gt; NVMe&lt;/li&gt;
    &lt;li id=&quot;gjRe&quot;&gt;&lt;strong&gt;Структура памяти:&lt;/strong&gt; 3D NAND&lt;/li&gt;
    &lt;li id=&quot;7aGg&quot;&gt;&lt;strong&gt;Макс. заявленная скорость чтения:&lt;/strong&gt; 3000 Мб/сек&lt;/li&gt;
    &lt;li id=&quot;CJdl&quot;&gt;&lt;strong&gt;Макс. заявленная скорость записи:&lt;/strong&gt; 1300 Мб/сек&lt;/li&gt;
    &lt;li id=&quot;csno&quot;&gt;&lt;strong&gt;Максимальный ресурс записи (TBW):&lt;/strong&gt; 187.5 ТБ&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;smyD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_13_2024-10-01_15-16-36-e1727787224267.jpg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;WkoA&quot;&gt;Блок питания&lt;/h3&gt;
  &lt;p id=&quot;0aFt&quot;&gt;БП – сердце компьютера, экономить на нем не рекомендую никогда. И уж точно я вас призываю &lt;strong&gt;НЕ ПОКУПАТЬ&lt;/strong&gt; Б/У блоки питания!!! Это все таки ваша безопасность. Для меня тут выбор таков: &lt;strong&gt;Chieftec Silicon 850W [SLC-850C]&lt;/strong&gt;. Мощности хватает с запасом.&lt;/p&gt;
  &lt;p id=&quot;3X1l&quot;&gt;Характеристики:&lt;/p&gt;
  &lt;ul id=&quot;AeHo&quot;&gt;
    &lt;li id=&quot;OTyj&quot;&gt;&lt;strong&gt;Мощность (номинал):&lt;/strong&gt; 850 Вт&lt;/li&gt;
    &lt;li id=&quot;uVAo&quot;&gt;&lt;strong&gt;Форм-фактор:&lt;/strong&gt; ATX&lt;/li&gt;
    &lt;li id=&quot;ZDah&quot;&gt;&lt;strong&gt;Тип подключения:&lt;/strong&gt; модульный&lt;/li&gt;
    &lt;li id=&quot;yFCZ&quot;&gt;&lt;strong&gt;Сертификат 80 PLUS:&lt;/strong&gt; Bronze&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;1Yrd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_9_2024-10-01_15-16-36-e1727787246356.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;da3A&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_10_2024-10-01_15-16-36-e1727788180820-edited.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;DDUC&quot;&gt;Корпус&lt;/h3&gt;
  &lt;p id=&quot;WLg1&quot;&gt;Мой предыдущий ПК тоже был в корпусе от “пумы” с отличной вентиляцией. Вот и в этот раз решил взять от них, только разумеется побольше габаритами из-за высоких кулеров – &lt;strong&gt;Cougar Duoface Pro RGB [CGR-5AD1B-RGB]&lt;/strong&gt;. Ну и конечно “нетрадиционной ориентации” подсветка с множеством цветов. Я изначально хотел белый.&lt;/p&gt;
  &lt;p id=&quot;XwV7&quot;&gt;Характеристики:&lt;/p&gt;
  &lt;ul id=&quot;wKRk&quot;&gt;
    &lt;li id=&quot;7eea&quot;&gt;&lt;strong&gt;Типоразмер корпуса:&lt;/strong&gt; Mid-Tower&lt;/li&gt;
    &lt;li id=&quot;ZueD&quot;&gt;&lt;strong&gt;Вентиляторы в комплекте:&lt;/strong&gt; 4 x 120 мм&lt;/li&gt;
    &lt;li id=&quot;VaA6&quot;&gt;&lt;strong&gt;Тип подсветки:&lt;/strong&gt; ARGB&lt;/li&gt;
    &lt;li id=&quot;K4Bw&quot;&gt;&lt;strong&gt;Материал окна:&lt;/strong&gt; каленое стекло&lt;/li&gt;
    &lt;li id=&quot;sLYD&quot;&gt;&lt;strong&gt;Разъемы:&lt;/strong&gt; Jack 3.5, 2 x USB 3.1, 1 x USB 2.0, 1 x USB Type C (которого на плате нет😔)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;FOBy&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_2024-10-01_15-24-52-e1727787299672.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;zl4w&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_4_2024-10-01_15-16-36-e1727787329160.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;CPrU&quot;&gt;Даже есть какой-то кэйбэл мэнэджмэнт по умолчанию😎&lt;/p&gt;
  &lt;figure id=&quot;z1X6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_3_2024-10-01_15-16-36-e1727787312530.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;MlNi&quot;&gt;Сборка&lt;/h2&gt;
  &lt;p id=&quot;Uazi&quot;&gt;Начинаем собирать:&lt;/p&gt;
  &lt;figure id=&quot;KpfO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_7_2024-10-01_15-16-36-e1727787156967.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;wbvo&quot;&gt;И сталкиваемся с такой не приятной ситуацией:&lt;/p&gt;
  &lt;figure id=&quot;Jj4K&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-3.png&quot; width=&quot;767&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;m3sY&quot;&gt;В моем случае это не критично, поэтому “напилингом” я решил не заниматься. Работает и так, но в итоге местами плашки я все же поменял.&lt;/p&gt;
  &lt;p id=&quot;5xq4&quot;&gt;Запихиваем все добро в корпус:&lt;/p&gt;
  &lt;figure id=&quot;FRcD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_8_2024-10-01_15-16-36.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7RPD&quot;&gt;Добавляем &lt;s&gt;щепотку специй&lt;/s&gt; видеокарту:&lt;/p&gt;
  &lt;figure id=&quot;lsuq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_18_2024-10-01_15-16-36.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;GlF8&quot;&gt;Ну, стартуем!!!&lt;/p&gt;
  &lt;figure id=&quot;kD9I&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-8.png&quot; width=&quot;461.00000000000006&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ahA4&quot;&gt;И..&lt;/p&gt;
  &lt;figure id=&quot;8zBd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-7.png&quot; width=&quot;458&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;7u6z&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-6.png&quot; width=&quot;457&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;BQHN&quot;&gt;Разумеется с первого раза ничего не запустилось😳. Благо на мат. плате есть маленький дисплей отображающий POST коды запуска, которые легко гуглятся. Трабла: Б/Ушная память решила “повыделываться”. Но, имея некоторый опыт, я обратился за квалифицированной помощью к специалисту.&lt;/p&gt;
  &lt;p id=&quot;6cYp&quot;&gt;Встречайте:&lt;/p&gt;
  &lt;figure id=&quot;QiqQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-5.png&quot; width=&quot;803&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5Bij&quot;&gt;Перетёр с ним за контакты оперативки и все завелось😁.&lt;/p&gt;
  &lt;p id=&quot;rpza&quot;&gt;После сборки логичным этапом идет установка ОС. Скачал последний &lt;strong&gt;Linux Mint Debian Edition 6&lt;/strong&gt; и накатил. А пока сей недолгий процесс шел, решил выпить чаю☕️. Еще и скучный интернешнл шел тогда📺.&lt;/p&gt;
  &lt;figure id=&quot;LgLi&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_11_2024-10-01_15-16-36.jpg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;RaDx&quot;&gt;Итоговый результат&lt;/h2&gt;
  &lt;p id=&quot;8St3&quot;&gt;В результате получился вот такой Devil Machine😈😈😈:&lt;/p&gt;
  &lt;figure id=&quot;KxKQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_21_2024-10-01_15-16-36-e1727787344562.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;SfHX&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/photo_17_2024-10-01_15-16-36.jpg&quot; width=&quot;964&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;3D0C&quot;&gt;Немного Hardinfo уже в ОС:&lt;/p&gt;
  &lt;figure id=&quot;iuJk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-4.png&quot; width=&quot;1004&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;Bkmr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/10/image-9.png&quot; width=&quot;1223&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;BAAf&quot;&gt;Что почём?&lt;/h2&gt;
  &lt;p id=&quot;oivH&quot;&gt;Вот такой прайс у меня получился в 2024 году:&lt;/p&gt;
  &lt;ul id=&quot;PczD&quot;&gt;
    &lt;li id=&quot;BLYt&quot;&gt;&lt;strong&gt;Мат. плата + процы + память:&lt;/strong&gt; 15200 р.&lt;/li&gt;
    &lt;li id=&quot;b775&quot;&gt;&lt;strong&gt;2 кулера:&lt;/strong&gt; 2200 р.&lt;/li&gt;
    &lt;li id=&quot;zj5d&quot;&gt;&lt;strong&gt;Видеокарта:&lt;/strong&gt; 8860 р.&lt;/li&gt;
    &lt;li id=&quot;W86Q&quot;&gt;&lt;strong&gt;SSD 256GB:&lt;/strong&gt; 2850 р.&lt;/li&gt;
    &lt;li id=&quot;RuY5&quot;&gt;&lt;strong&gt;Блок питания:&lt;/strong&gt; 10450 р.&lt;/li&gt;
    &lt;li id=&quot;4gw1&quot;&gt;&lt;strong&gt;Корпус:&lt;/strong&gt; 8500 р.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;6fsJ&quot;&gt;&lt;strong&gt;Итого:&lt;/strong&gt; 48 060 р.&lt;/p&gt;
  &lt;p id=&quot;0Ccd&quot;&gt;Скажу, что на сегодня это нормально. Можно сказать экономно💰, даже с учетом рисков (все таки часть деталей Б/У).&lt;/p&gt;
  &lt;h2 id=&quot;a6SG&quot;&gt;Заключение&lt;/h2&gt;
  &lt;p id=&quot;w3Xm&quot;&gt;Мое мнение по итогу: доволен как слон. Конечно при сборке были некоторые нюансы, в основном с оперативкой, но все завелось и работает. Я уже активно пользуюсь поднятым Proxmox для своих задач и различных тестов😎. Надеюсь машинка будет отлично работать и впредь😌. Это был интересный опыт.&lt;/p&gt;
  &lt;p id=&quot;Y4Df&quot;&gt;Если у вас появились вопросы или желание пообщаться по теме – приглашаю в наш &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;Вороний чат&lt;/a&gt;💬 в телеге. И обязательно подписывайтесь на наш канал &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;@r4ven_me&lt;/a&gt;📱 там же, чтобы не пропустить новые посты на сайте Вороний блог.&lt;/p&gt;
  &lt;p id=&quot;GfiO&quot;&gt;Спасибо, что читаете. Желаю только работающих сборок😉.&lt;/p&gt;

</content></entry><entry><id>r4ven_me:zabbix-server-v-docker</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/zabbix-server-v-docker?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Поднимаем сервер мониторинга Zabbix 7 + TimescaleDB в docker</title><published>2024-09-25T09:35:11.551Z</published><updated>2024-09-25T20:17:43.235Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/cd/5c/cd5cf9fb-afea-4e9d-ae93-7bf916eef630.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/f5/03/f503f847-f287-4f84-9200-f21de1c1ea0a.png&quot;&gt;В данной инструкции мы с вами развернем популярную систему мониторинга Zabbix с использованием TimescaleDB – плагина для БД PostgreSQL, позволяющего эффективно работать с “временнЫми рядам”. Все это добро мы завернем внутрь docker контейнеров 🐳. Будет интересно 😉.</summary><content type="html">
  &lt;figure id=&quot;MPOp&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f5/03/f503f847-f287-4f84-9200-f21de1c1ea0a.png&quot; width=&quot;1038&quot; /&gt;
    &lt;figcaption&gt;Поднимаем сервер мониторинга Zabbix 7 + TimescaleDB в docker&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;5O4D&quot;&gt;Исходный сайт представленного материала: &lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/podnimaem-server-monitoringa-zabbix-7-timescaledb-v-docker/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;WdGe&quot;&gt;Приветствую!&lt;/h3&gt;
  &lt;p id=&quot;2m9s&quot;&gt;В данной инструкции мы с вами развернем популярную систему мониторинга &lt;strong&gt;Zabbix&lt;/strong&gt; с использованием &lt;strong&gt;TimescaleDB&lt;/strong&gt; – плагина для БД &lt;strong&gt;PostgreSQL&lt;/strong&gt;, позволяющего эффективно работать с “временнЫми рядам”. Все это добро мы завернем внутрь docker контейнеров 🐳. Будет интересно 😉.&lt;/p&gt;
  &lt;p id=&quot;bRo9&quot;&gt;Напомню, что в одной из прошлых заметок мы обсуждали, что такое &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/chto-takoe-sistemy-monitoringa-v-it/&quot; target=&quot;_blank&quot;&gt;системы мониторинга в IT&lt;/a&gt;, какие виды бывают и немного узнали о популярных реализациях на сегодняшний день, среди которых – Zabbix.&lt;/p&gt;
  &lt;p id=&quot;mn3u&quot;&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;LGGY&quot;&gt;Сразу прошу обратить внимание на то, что все действия описанные в данном руководстве вы делаете на свой риск и ответственность. Прошу это понимать. Мой блог – лишь площадка, где я рассказываю про свой опыт и делюсь своим мнением по каким-либо вещам и явлениям. Спасибо за понимание.Иван Чёрный&lt;/blockquote&gt;
  &lt;figure id=&quot;WrTj&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/60/d3/60d3ccd2-4f9b-473f-b6e9-437e12e6027b.png&quot; width=&quot;547&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;zHWw&quot;&gt;Введение&lt;/h2&gt;
  &lt;p id=&quot;ApCH&quot;&gt;Особенностью инсталяции, описываемой в этой статье является не только развертывание системы мониторинга Zabbix в docker контейнерах, но и использование ее в связке с базой данных временных рядов – TimescaleDB.&lt;/p&gt;
  &lt;p id=&quot;J6B7&quot;&gt;Прежде чем мы начнем, давайте дадим несколько определений в качестве введения.&lt;/p&gt;
  &lt;p id=&quot;v46Z&quot;&gt;&lt;strong&gt;Zabbix&lt;/strong&gt; — это открытая платформа для мониторинга сетей и серверов. Для хранения данных использует реляционные СУБД, например: PostgreSQL, MySQL, MariaDB, Oracle, SQLite и т.д.&lt;/p&gt;
  &lt;p id=&quot;LWnd&quot;&gt;&lt;strong&gt;Временные ряды в базах данных (time series)&lt;/strong&gt; — это набор данных, упорядоченных по времени, где значения регистрируются через равные или неравные интервалы времени.&lt;/p&gt;
  &lt;p id=&quot;b0jq&quot;&gt;&lt;strong&gt;Базы данных временных рядов (time series database)&lt;/strong&gt; — это специализированные базы данных, предназначенные для эффективного хранения, управления и анализа временных рядов. Часто это &lt;strong&gt;no sql&lt;/strong&gt; базы данных.&lt;/p&gt;
  &lt;p id=&quot;8uar&quot;&gt;&lt;strong&gt;TimescaleDB (TSDB)&lt;/strong&gt; — это расширение для PostgreSQL, которое оптимизирует работу с временными рядами в данной СУБД, сохраняя при этом всю мощь и гибкость классических SQL like баз данных. С определенного времени Zabbix научился работать с данной СУБД.&lt;/p&gt;
  &lt;p id=&quot;FgWr&quot;&gt;Цитата из официальной документации Zabbix:&lt;/p&gt;
  &lt;blockquote id=&quot;EEY7&quot;&gt;Zabbix supports TimescaleDB, a PostgreSQL-based database solution of automatically partitioning data into time-based chunks to support faster performance at scale.Zabbix.com&lt;/blockquote&gt;
  &lt;p id=&quot;Icgu&quot;&gt;Для лучшего понимания причины выбора именно такой связки, рекомендую статью на Habr: &lt;a href=&quot;https://habr.com/ru/companies/zabbix/articles/458530/&quot; target=&quot;_blank&quot;&gt;Zabbix, временные ряды и TimescaleDB&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;cA2R&quot;&gt;Прошу вас также обратить внимание на предупреждение из оф. документации Zabbix:&lt;/p&gt;
  &lt;blockquote id=&quot;bPGf&quot;&gt;Warning: Currently, TimescaleDB is not supported by Zabbix proxy.Zabbix.com 09.2024&lt;/blockquote&gt;
  &lt;p id=&quot;qaED&quot;&gt;Уверен, что в будущем это поправят. А пока хватит трепа, переходим к делу🤵‍♂️.&lt;/p&gt;
  &lt;h2 id=&quot;Q4JH&quot;&gt;Подготовка&lt;/h2&gt;
  &lt;p id=&quot;vQri&quot;&gt;Разворачивать Zabbix будем в среде &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/distributiv-linux/&quot; target=&quot;_blank&quot;&gt;дистрибутива&lt;/a&gt; &lt;strong&gt;Debian 12&lt;/strong&gt; 💿 с установленным &lt;strong&gt;Docker engine&lt;/strong&gt; 🐳. Если у вас еще нет готового Linux сервера, то рекомендую мои предыдущие статьи:&lt;/p&gt;
  &lt;ul id=&quot;lP3c&quot;&gt;
    &lt;li id=&quot;n7wk&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/ustanovka-servera-debian-12-v-virtualbox/&quot; target=&quot;_blank&quot;&gt;Установка сервера Debian 12 в VirtualBox&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;5eUi&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/nachalnaya-nastrojka-linux-servera-na-primere-debian/&quot; target=&quot;_blank&quot;&gt;Начальная настройка Linux сервера на примере Debian&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;Pty5&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/ustanovka-docker-engine-na-linux-server-pod-upravleniem-debian/&quot; target=&quot;_blank&quot;&gt;Установка Docker engine на Linux сервер под управлением Debian&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;UWWb&quot;&gt;Также для дальнейшей работы нам понадобится пользователь с правами &lt;strong&gt;root&lt;/strong&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;B44u&quot;&gt;Установка необходимых утилит&lt;/h3&gt;
  &lt;p id=&quot;NejK&quot;&gt;Сегодня нам понадобятся утилиты для взаимодействия с веб. Открываем терминал и устанавливаем систему контроля версий &lt;code&gt;git&lt;/code&gt; и утилиту &lt;code&gt;curl&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;czYQ&quot;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y git curl&lt;/pre&gt;
  &lt;figure id=&quot;rZHb&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-29.png&quot; width=&quot;1117&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;Ucfk&quot;&gt;Скачивание файлов проекта&lt;/h3&gt;
  &lt;p id=&quot;3GrM&quot;&gt;Все файлы проекта находятся в моем &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/repozitorij-programmnogo-obespecheniya/&quot; target=&quot;_blank&quot;&gt;репозитории&lt;/a&gt; на &lt;a href=&quot;https://github.com/r4ven-me/zabbix&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;. Клонируем его с помощью установленной ранее утилиты &lt;code&gt;git&lt;/code&gt; по пути &lt;code&gt;/opt/zabbix&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;3zlS&quot;&gt;sudo git clone https://github.com/r4ven-me/zabbix /opt/zabbix&lt;/pre&gt;
  &lt;figure id=&quot;EdWr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-30.png&quot; width=&quot;1121&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ejO4&quot;&gt;Описание файлов проекта:&lt;/p&gt;
  &lt;figure id=&quot;ity8&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-108.png&quot; width=&quot;630&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NnYV&quot;&gt;&lt;strong&gt;docker-compose.yml – файл описания сервисов, запускаемых в docker контейнерах:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;GmC2&quot;&gt;Секция &lt;strong&gt;NETWORK&lt;/strong&gt; – определяет две виртуальные сети docker:&lt;/p&gt;
  &lt;ul id=&quot;zZ13&quot;&gt;
    &lt;li id=&quot;qAPx&quot;&gt;&lt;code&gt;zbx_net_backend&lt;/code&gt; – изолированная сеть для взаимодействия контейнеров &lt;code&gt;postgres-server,&lt;/code&gt; &lt;code&gt;zabbix-server&lt;/code&gt;, &lt;code&gt;zabbix-web&lt;/code&gt; и &lt;code&gt;zabbix-agent&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;erWk&quot;&gt;&lt;code&gt;zbx_net_frontend&lt;/code&gt; – сеть с доступом к контейнерам со стороны хостовой ОС: для контейнеров &lt;code&gt;zabbix-server&lt;/code&gt; и &lt;code&gt;zabbix-web&lt;/code&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;G4Ey&quot;&gt;Секция &lt;strong&gt;SERVICES&lt;/strong&gt; – определяет параметры запускаемых сервисов/контейнеров:&lt;/p&gt;
  &lt;ul id=&quot;4BMt&quot;&gt;
    &lt;li id=&quot;RRDH&quot;&gt;&lt;code&gt;postgres-server&lt;/code&gt; – сервис СУБД TimescaleDB;&lt;/li&gt;
    &lt;li id=&quot;yDu9&quot;&gt;&lt;code&gt;zabbix-server&lt;/code&gt; – сервис Zabbix сервера;&lt;/li&gt;
    &lt;li id=&quot;Lm57&quot;&gt;&lt;code&gt;zabbix-web&lt;/code&gt; – сервис веб интерфейса для Zabbix сервера (под капотом &lt;strong&gt;nginx&lt;/strong&gt; + &lt;strong&gt;php-fpm&lt;/strong&gt;);&lt;/li&gt;
    &lt;li id=&quot;Kws5&quot;&gt;&lt;code&gt;zabbix-agent&lt;/code&gt; – сервис агента Zabbix для сбора метрик с самого сервера Zabbix.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;uh3V&quot;&gt;Секция &lt;strong&gt;SECRETS&lt;/strong&gt; – определяет файлы, содержащие чувствительную информацию, которые прокидываются внутрь контейнеров &lt;code&gt;postgres-server&lt;/code&gt;, &lt;code&gt;zabbix-server&lt;/code&gt; и &lt;code&gt;zabbix-web&lt;/code&gt;:&lt;/p&gt;
  &lt;ul id=&quot;Kbis&quot;&gt;
    &lt;li id=&quot;rfcQ&quot;&gt;&lt;code&gt;POSTGRES_USER&lt;/code&gt; (файл &lt;code&gt;./env/.POSTGRES_USER&lt;/code&gt;) – имя пользователь для базы данных Zabbix в СУБД TimescaleDB;&lt;/li&gt;
    &lt;li id=&quot;WTas&quot;&gt;&lt;code&gt;POSTGRES_PASSWORD&lt;/code&gt; (файл &lt;code&gt;./env/.POSTGRES_PASSWORD&lt;/code&gt;) – соответственно, пароль пользователя.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;mrLu&quot;&gt;&lt;strong&gt;env – директория с файлами, содержащие переменные окружения, значения которых передаются внутрь контейнера при его запуске:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;nVoM&quot;&gt;
    &lt;li id=&quot;UZPS&quot;&gt;&lt;code&gt;.env_db&lt;/code&gt; – параметры для &lt;code&gt;postgres-server&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;Jt4H&quot;&gt;&lt;code&gt;.env_srv&lt;/code&gt; – параметры для &lt;code&gt;zabbix-server&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;DV37&quot;&gt;&lt;code&gt;.env_web&lt;/code&gt; – параметры для &lt;code&gt;zabbix-web&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;x2gz&quot;&gt;&lt;code&gt;.env_agent&lt;/code&gt; – параметры для локального &lt;code&gt;zabbix-agent&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;X5Kh&quot;&gt;&lt;code&gt;.POSTGRES_PASSWORD&lt;/code&gt; – пароль пользователя в БД zabbix;&lt;/li&gt;
    &lt;li id=&quot;Saep&quot;&gt;&lt;code&gt;.POSTGRES_USER&lt;/code&gt; – имя пользователя в БД zabbix.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;a2wB&quot;&gt;&lt;strong&gt;src – директория с исходными файлами для сборки кастомного контейнера zabbix-server с расширенным функционалом:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;omOs&quot;&gt;
    &lt;li id=&quot;VGhD&quot;&gt;&lt;code&gt;alertscripts&lt;/code&gt; – директория с файлами для отправки уведомлений в Telegram:&lt;/li&gt;
    &lt;li id=&quot;D3nQ&quot;&gt;&lt;code&gt;docker-entrypoint.sh&lt;/code&gt; – скрипт подготовки окружения внутри контейнера (не изменялся);&lt;/li&gt;
    &lt;li id=&quot;n1Dr&quot;&gt;&lt;code&gt;Dockerfile&lt;/code&gt; – кастомизированный файл описания сборки образа;&lt;/li&gt;
    &lt;li id=&quot;H4Ig&quot;&gt;&lt;code&gt;externalscripts&lt;/code&gt; – директория со скриптом мониторинга делегирования домена.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;2rhJ&quot;&gt;При необходимости, отредактируйте блок &lt;code&gt;deploy&lt;/code&gt; у нужных сервисов в файле &lt;code&gt;docker-compose.yml&lt;/code&gt;, в зависимости от серверных ресурсов, которыми располагаете. По умолчанию используются самые минимальные значения.&lt;/p&gt;
  &lt;h3 id=&quot;xXSM&quot;&gt;Создание сервисного пользователя zabbix&lt;/h3&gt;
  &lt;p id=&quot;QTxd&quot;&gt;В целях безопасности создаем ограниченные в правах группу и сервисного пользователя для запуска контейнеров zabbix:&lt;/p&gt;
  &lt;pre id=&quot;ucT7&quot;&gt;sudo addgroup --system --gid 1995 zabbix

sudo adduser --system --gecos &amp;quot;Zabbix monitoring system&amp;quot; \
    --disabled-password --uid 1997 --ingroup zabbix  \
    --shell /sbin/nologin --home /opt/zabbix/zabbix_data zabbix&lt;/pre&gt;
  &lt;p id=&quot;uJo0&quot;&gt;&lt;em&gt;&lt;code&gt;adgroup&lt;/code&gt; – команда создания группы;&lt;/em&gt;&lt;/p&gt;
  &lt;ul id=&quot;FYm4&quot;&gt;
    &lt;li id=&quot;IE7e&quot;&gt;&lt;em&gt;&lt;code&gt;--system&lt;/code&gt; – помечает группу, как системную и применяет к ней установленные политики;&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;YFiU&quot;&gt;&lt;em&gt;&lt;code&gt;--gid 1995&lt;/code&gt; – указывает явный идентификатор группы (GID) – в данном случае 1995 (именно такой GID задают разрабы Zabbix в своих контейнерах);&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;GgB5&quot;&gt;&lt;em&gt;&lt;code&gt;zabbix&lt;/code&gt; – название создаваемой группы;&lt;/em&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;iNIy&quot;&gt;&lt;em&gt;&lt;code&gt;adduser&lt;/code&gt; – команда создания пользователя&lt;/em&gt;&lt;/p&gt;
  &lt;ul id=&quot;B33Q&quot;&gt;
    &lt;li id=&quot;1rWM&quot;&gt;&lt;em&gt;&lt;code&gt;--system&lt;/code&gt; – помечает группу, как системную и применяет к ней установленные политики;&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;EYbW&quot;&gt;&lt;em&gt;&lt;code&gt;--gecos&lt;/code&gt; – позволяет задать описание пользователя;&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;xGxA&quot;&gt;&lt;em&gt;&lt;code&gt;--disabled-password&lt;/code&gt; – отключает пароль у пользователя (в таком случае под ним нельзя авторизоваться в системе с помощью пароля);&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;2gAY&quot;&gt;&lt;em&gt;&lt;code&gt;--uid 1997&lt;/code&gt; – указывает явный идентификатор пользователя (UID) – в данном случае 1997 (именно такой UID задают разрабы Zabbix в своих контейнерах);&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;ZjIy&quot;&gt;&lt;em&gt;&lt;code&gt;--ingroup zabbix&lt;/code&gt; – добавляет пользователя в созданную ранее группу zabbix;&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;IMnx&quot;&gt;&lt;em&gt;&lt;code&gt;--shell /sbin/nologin&lt;/code&gt; – в качестве оболочки пользователя устанавливает &lt;strong&gt;nologin&lt;/strong&gt; – под ней невозможно авторизоваться в системе;&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;b92K&quot;&gt;&lt;em&gt;&lt;code&gt;--home /opt/zabbix/zabbix_data&lt;/code&gt; – задает домашний каталог пользователя, в нашем случае это директория с файлами сервисов zabbix;&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;3RoO&quot;&gt;&lt;em&gt;&lt;code&gt;zabbix&lt;/code&gt; – имя создаваемого пользователя.&lt;/em&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;duIa&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-31.png&quot; width=&quot;1122&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;0MJX&quot;&gt;Создание сервисного пользователя postgres&lt;/h3&gt;
  &lt;p id=&quot;OoQM&quot;&gt;Теперь аналогичным образом создаем группу и пользователя для запуска контейнера TimescaleDB:&lt;/p&gt;
  &lt;pre id=&quot;8vU9&quot;&gt;sudo addgroup --system --gid 70 postgres

sudo adduser --system --gecos &amp;quot;PostgreSQL database&amp;quot; \
    --disabled-password --uid 70 --ingroup postgres  \
    --shell /sbin/nologin --home /opt/zabbix/postgres_data postgres&lt;/pre&gt;
  &lt;figure id=&quot;ZFcR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-32.png&quot; width=&quot;1122&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;AipO&quot;&gt;Проверяем наличие всех нужных файлов и папок:&lt;/p&gt;
  &lt;pre id=&quot;JRXR&quot;&gt;ls -l /opt/zabbix&lt;/pre&gt;
  &lt;figure id=&quot;GAR9&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-33.png&quot; width=&quot;1122&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;dJzw&quot;&gt;Отлично, идем дальше 🚶.&lt;/p&gt;
  &lt;h2 id=&quot;VtMT&quot;&gt;Создание пароля для базы данных Postgres&lt;/h2&gt;
  &lt;p id=&quot;Wycx&quot;&gt;По умолчанию в файле &lt;code&gt;/opt/zabbix/env/.POSTGRES_PASSWORD&lt;/code&gt; я задал для БД zabbix одноименный пароль. Но крайне рекомендую сгенерировать новый, например такой командой:&lt;/p&gt;
  &lt;pre id=&quot;SW0G&quot;&gt;tr -cd &amp;quot;[:alnum:]&amp;quot; &amp;lt; /dev/urandom | head -c 30 \
    | sudo tee /opt/zabbix/env/.POSTGRES_PASSWORD&lt;/pre&gt;
  &lt;p id=&quot;puBh&quot;&gt;&lt;em&gt;Команда &lt;code&gt;tr -cd&lt;/code&gt; с помощью &lt;a href=&quot;https://r4ven.me/it-razdel/zametki/komandnaya-stroka-linux-perenapravlenie-vvoda-i-vyvoda/&quot; target=&quot;_blank&quot;&gt;механизма перенаправления стандартных потоков&lt;/a&gt; получает на ввод латинские буквы и цифры (класс символов &lt;code&gt;[:alnum:]&lt;/code&gt;), генерируемые псевдоустройством &lt;code&gt;/dev/urandom&lt;/code&gt;. Затем команда &lt;code&gt;head&lt;/code&gt;, получая данные по конвейеру, с помощью ключа &lt;code&gt;-c&lt;/code&gt; отбирает 30 первых символов (байт). И в конце, полученная псевдорандомная строка передается на ввод команде &lt;code&gt;tee&lt;/code&gt;, запущенной от имени суперпользователя. Полученные данные &lt;code&gt;tee&lt;/code&gt; записывает в указанный файл (&lt;code&gt;/opt/zabbix/env/.POSTGRES_PASSWORD&lt;/code&gt;) и дублирует вывод в стандартный поток (stdout).&lt;/em&gt;&lt;/p&gt;
  &lt;figure id=&quot;Xkqe&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-34.png&quot; width=&quot;1118&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;Z6dQ&quot;&gt;Не обращайте внимания на символ &lt;code&gt;%&lt;/code&gt; в конце строки моего примера. Это особенность &lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/zsh-interaktivnaya-komandnaya-obolochka-dlya-linux-oh-my-zsh/&quot; target=&quot;_blank&quot;&gt;командной оболочки ZSH&lt;/a&gt;, которая выводит его (или &lt;code&gt;#&lt;/code&gt; для root) при отсутствии символа перевода строки.&lt;/blockquote&gt;
  &lt;h2 id=&quot;S7Om&quot;&gt;Запуск Zabbix стека с помощью docker compose&lt;/h2&gt;
  &lt;h3 id=&quot;W5Pr&quot;&gt;Старт Postgres сервера&lt;/h3&gt;
  &lt;p id=&quot;L2nn&quot;&gt;Первым запускаем сервер СУБД, такой командой:&lt;/p&gt;
  &lt;pre id=&quot;VErR&quot;&gt;sudo docker compose -f /opt/zabbix/docker-compose.yml up -d postgres-server&lt;/pre&gt;
  &lt;figure id=&quot;bqMe&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-35.png&quot; width=&quot;1189&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Dhdx&quot;&gt;После загрузки образа и запуска контейнера смотрим его вывод:&lt;/p&gt;
  &lt;pre id=&quot;pASk&quot;&gt;sudo docker logs -f postgres-server&lt;/pre&gt;
  &lt;p id=&quot;2UVU&quot;&gt;При успешном запуске, вы увидите подобное:&lt;/p&gt;
  &lt;figure id=&quot;wupL&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-120-1500x181.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;92jZ&quot;&gt;При первом старте, внутри контейнера выполняются скрипты подготовки окружения и базовой конфигурации СУБД в зависимости от параметров сервера. В одном из моих тестов такой скрипт выставлял параметр &lt;code&gt;max_connections&lt;/code&gt; равным &lt;code&gt;25&lt;/code&gt; – чего недостаточно даже для импорта схемы БД zabbix и процесс выпадет в ошибку:&lt;/p&gt;
  &lt;pre id=&quot;BuLc&quot;&gt;FATAL:  sorry, too many clients already&lt;/pre&gt;
  &lt;p id=&quot;X6Jl&quot;&gt;Проверить значение &lt;code&gt;max_connections&lt;/code&gt; можно такой командой:&lt;/p&gt;
  &lt;pre id=&quot;7aro&quot;&gt;sudo grep &amp;#x27;max_connections&amp;#x27; /opt/zabbix/postgres_data/postgresql.conf&lt;/pre&gt;
  &lt;figure id=&quot;l4Ls&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-36.png&quot; width=&quot;1153&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vNa9&quot;&gt;Если у вас &lt;code&gt;&amp;lt;=25&lt;/code&gt;, то этот параметр необходимо увеличить. Открываем файл на редактирование любым консольным редактором, например, &lt;a href=&quot;https://r4ven.me/tag/vim-neovim/&quot; target=&quot;_blank&quot;&gt;Vim/Neovim&lt;/a&gt; 😎:&lt;/p&gt;
  &lt;pre id=&quot;bN59&quot;&gt;sudo vim /opt/zabbix/postgres_data/postgresql.conf&lt;/pre&gt;
  &lt;figure id=&quot;tUZD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-37.png&quot; width=&quot;1084&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;LL2B&quot;&gt;Находим там строку:&lt;/p&gt;
  &lt;pre id=&quot;bSBO&quot;&gt;max_connections = 25&lt;/pre&gt;
  &lt;figure id=&quot;JXDP&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-38.png&quot; width=&quot;1074&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8GBu&quot;&gt;И меняем ее, например, на:&lt;/p&gt;
  &lt;pre id=&quot;3N7c&quot;&gt;max_connections = 200&lt;/pre&gt;
  &lt;figure id=&quot;C6Zq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-39.png&quot; width=&quot;780&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;R5wL&quot;&gt;Сохраняем файл, выходим из редактора.&lt;/p&gt;
  &lt;p id=&quot;wVqj&quot;&gt;Для применения изменений перезапускаем контейнер &lt;code&gt;postgres-server&lt;/code&gt; и проверяем текущее значение &lt;code&gt;max_connections&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;fRX1&quot;&gt;sudo docker compose -f /opt/zabbix/docker-compose.yml restart postgres-server

sudo docker exec -it postgres-server psql -U zabbix -c &amp;quot;SHOW max_connections;&amp;quot;&lt;/pre&gt;
  &lt;figure id=&quot;2dyG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-40.png&quot; width=&quot;1199&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Ax5T&quot;&gt;Все применилось, переходим к запуску контейнера &lt;code&gt;zabbix-server&lt;/code&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;Ctly&quot;&gt;Старт Zabbix сервера&lt;/h3&gt;
  &lt;p id=&quot;LDK7&quot;&gt;Запускаем его такой командой:&lt;/p&gt;
  &lt;pre id=&quot;Shw9&quot;&gt;sudo docker compose -f /opt/zabbix/docker-compose.yml up -d zabbix-server&lt;/pre&gt;
  &lt;figure id=&quot;gDZn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-41.png&quot; width=&quot;1199&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8HPP&quot;&gt;Смотрим вывод контейнера:&lt;/p&gt;
  &lt;pre id=&quot;cdpP&quot;&gt;sudo docker logs -f zabbix-server&lt;/pre&gt;
  &lt;p id=&quot;G4wp&quot;&gt;При первом запуске, котейнер запустит создание базы. Это займет некоторое время. Вывод остановится на такой строке:&lt;/p&gt;
  &lt;pre id=&quot;pFYX&quot;&gt;Creating &amp;#x27;zabbix&amp;#x27; schema in PostgreSQL&lt;/pre&gt;
  &lt;figure id=&quot;IEuM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-42.png&quot; width=&quot;1201&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kUgB&quot;&gt;Обязательно дождитесь завершения процедуры создания БД!&lt;/p&gt;
  &lt;p id=&quot;Ovw9&quot;&gt;При успешном запуске вы должны увидеть что-то подобное:&lt;/p&gt;
  &lt;figure id=&quot;QCvq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-43.png&quot; width=&quot;1196&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5AuL&quot;&gt;Возможно в самом конце будет вывод, подобный этому:&lt;/p&gt;
  &lt;pre id=&quot;GEF5&quot;&gt;256:20240922:121849.602 Zabbix agent item &amp;quot;system.cpu.util[,system]&amp;quot; on host &amp;quot;Zabbix server&amp;quot; failed: first network error, wait for 15 seconds
225:20240922:121855.944 item &amp;quot;Zabbix server:zabbix[vmware,buffer,pused]&amp;quot; became not supported: No &amp;quot;vmware collector&amp;quot; processes started.
225:20240922:121858.958 item &amp;quot;Zabbix server:zabbix[process,report writer,avg,busy]&amp;quot; became not supported: No &amp;quot;report writer&amp;quot; processes started.
225:20240922:121859.962 item &amp;quot;Zabbix server:zabbix[process,report manager,avg,busy]&amp;quot; became not supported: No &amp;quot;report manager&amp;quot; processes started.
256:20240922:121904.599 Zabbix agent item &amp;quot;system.users.num&amp;quot; on host &amp;quot;Zabbix server&amp;quot; failed: another network error, wait for 15 seconds
256:20240922:121919.602 Zabbix agent item &amp;quot;system.cpu.load[all,avg5]&amp;quot; on host &amp;quot;Zabbix server&amp;quot; failed: another network error, wait for 15 seconds
225:20240922:121928.010 item &amp;quot;Zabbix server:zabbix[connector_queue]&amp;quot; became not supported: connector is not initialized: please check &amp;quot;StartConnectors&amp;quot; configuration parameter
225:20240922:121929.016 item &amp;quot;Zabbix server:zabbix[process,connector manager,avg,busy]&amp;quot; became not supported: No &amp;quot;connector manager&amp;quot; processes started.
225:20240922:121930.021 item &amp;quot;Zabbix server:zabbix[process,connector worker,avg,busy]&amp;quot; became not supported: No &amp;quot;connector worker&amp;quot; processes started.
256:20240922:121934.600 temporarily disabling Zabbix agent checks on host &amp;quot;Zabbix server&amp;quot;: interface unavailable&lt;/pre&gt;
  &lt;p id=&quot;MxUw&quot;&gt;Не обращаем на него внимания.&lt;/p&gt;
  &lt;p id=&quot;mgBu&quot;&gt;Проверяем статус запущенных контейнеров:&lt;/p&gt;
  &lt;pre id=&quot;0c8P&quot;&gt;sudo docker ps&lt;/pre&gt;
  &lt;figure id=&quot;Y6qw&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-44-1500x189.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;BXZt&quot;&gt;Все ок – идем дальше.&lt;/p&gt;
  &lt;h3 id=&quot;hRkr&quot;&gt;Создание схемы для TimescaleDB&lt;/h3&gt;
  &lt;p id=&quot;mkxx&quot;&gt;Выводим созданный ранее пароль в терминал, скоро он нам понадобится. Затем подключаемся к оболочке контейнера &lt;code&gt;zabbix-server&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;b4IL&quot;&gt;sudo cat /opt/zabbix/env/.POSTGRES_PASSWORD

sudo docker exec -it zabbix-server bash&lt;/pre&gt;
  &lt;figure id=&quot;HQAs&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-45.png&quot; width=&quot;1111&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;sh9X&quot;&gt;Теперь импортируем схему TimescaleDB с помощью SQL скрипта, который разработчики Zabbix любезно положили в системные файлы. При вводе команды импорта у нас запросят пароль от БД, который мы вывели на предыдущем шаге:&lt;/p&gt;
  &lt;pre id=&quot;jh32&quot;&gt;psql -h postgres-server -U zabbix zabbix &amp;lt; /usr/share/doc/zabbix-server-postgresql/timescaledb.sql&lt;/pre&gt;
  &lt;p id=&quot;b1HM&quot;&gt;Процесс импорта представляет собой простое перенаправление содержимого SQL скрипта на вводе команды подключения к БД с помощью &lt;code&gt;psql&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;al8E&quot;&gt;Вывод должен быть таким:&lt;/p&gt;
  &lt;figure id=&quot;9UPA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-46.png&quot; width=&quot;1232&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;WgiC&quot;&gt;Выходим из контейнера &lt;code&gt;zabbix-server&lt;/code&gt; и проверяем наличие информации о чанках (chunks) в Postgres:&lt;/p&gt;
  &lt;pre id=&quot;eSHx&quot;&gt;exit

sudo docker exec -it postgres-server \
    psql -U zabbix -c &amp;quot;SELECT * FROM chunks_detailed_size(&amp;#x27;history&amp;#x27;)&amp;quot;&lt;/pre&gt;
  &lt;figure id=&quot;JQFc&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-47.png&quot; width=&quot;1390&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Ea5C&quot;&gt;Если вывод у вас такой же, как на скрине выше, то все импортировалось успешно 🥳.&lt;/p&gt;
  &lt;p id=&quot;AOaL&quot;&gt;На этом этапе БД Postgres/TimesacleDB и Zabbix сервер готовы 😉.&lt;/p&gt;
  &lt;h3 id=&quot;S0Rg&quot;&gt;Старт всего стека TimesacleDB + Zabbix server + Zabbix web + Zabbix agent&lt;/h3&gt;
  &lt;p id=&quot;2fNP&quot;&gt;Останавливаем запущенные контейнеры и запускаем всю инсталляцию, включая Zabbix web и Zabbix agent:&lt;/p&gt;
  &lt;pre id=&quot;pKzs&quot;&gt;sudo docker compose -f /opt/zabbix/docker-compose.yml down

sudo docker compose -f /opt/zabbix/docker-compose.yml up -d&lt;/pre&gt;
  &lt;figure id=&quot;yo7u&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-48.png&quot; width=&quot;1161&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7CEM&quot;&gt;Проверяем все ли контейнеры запустились корректно:&lt;/p&gt;
  &lt;pre id=&quot;99jI&quot;&gt;sudo docker ps

sudo docker compose -f /opt/zabbix/docker-compose.yml logs -f&lt;/pre&gt;
  &lt;figure id=&quot;K3X4&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-49-1500x196.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Babm&quot;&gt;Отлично. Теперь проверим работу самого Zabbix:&lt;/p&gt;
  &lt;pre id=&quot;U6ZA&quot;&gt;curl -I http://localhost:8080

nc -zv localhost 10051

ss -tulnap | grep -E &amp;#x27;8080|10051&amp;#x27;&lt;/pre&gt;
  &lt;blockquote id=&quot;75E0&quot;&gt;Первой командой мы проверили доступность веб интерфейса из консоли, второй – доступность порта &lt;code&gt;zabbix-server&lt;/code&gt;, а третьей вывели порты, прослушиваемые хостовой ОС.&lt;/blockquote&gt;
  &lt;figure id=&quot;LK3J&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-50.png&quot; width=&quot;1157&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;3SiV&quot;&gt;Отлично, все работает 🎉🎉🎉.&lt;/p&gt;
  &lt;h2 id=&quot;29xd&quot;&gt;Доступ к веб интерфейсу Zabbix&lt;/h2&gt;
  &lt;p id=&quot;2phT&quot;&gt;Способ получения доступа к веб интерфейсу Zabbix зависит от условий, в которых вы разворачивали стек. Я опишу несколько очевидных вариантов.&lt;/p&gt;
  &lt;p id=&quot;MZoR&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;mtJA&quot;&gt;1) Если Zabbix сервер развернут на локальной машине&lt;/h3&gt;
  &lt;p id=&quot;t1MA&quot;&gt;Просто вбейте в браузере URL 😁😁😁:&lt;/p&gt;
  &lt;pre id=&quot;GEQL&quot;&gt;http://127.0.0.1:8080/&lt;/pre&gt;
  &lt;h3 id=&quot;UC1N&quot;&gt;2) Если Zabbix сервер развернут на удаленном сервере, который находится в локальной или VPN сети&lt;/h3&gt;
  &lt;p id=&quot;z96s&quot;&gt;В таком случае отредактируйте настройки сети для сервисов &lt;code&gt;zabbix-server&lt;/code&gt; и &lt;code&gt;zabbix-web&lt;/code&gt; в &lt;code&gt;docker-compose.yml&lt;/code&gt; файле.&lt;/p&gt;
  &lt;p id=&quot;nOZS&quot;&gt;Например, внутренний адрес моего сервера в сети VPN: &lt;code&gt;192.168.122.24&lt;/code&gt;. Правлю &lt;code&gt;docker-compose.yml&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;s9KH&quot;&gt;sudo vim /opt/zabbix/docker-compose.yml&lt;/pre&gt;
  &lt;p id=&quot;fmIU&quot;&gt;zabbix-server:&lt;/p&gt;
  &lt;figure id=&quot;vWgI&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-51.png&quot; width=&quot;706&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Cdfc&quot;&gt;zabbix-web:&lt;/p&gt;
  &lt;figure id=&quot;yc8J&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-52.png&quot; width=&quot;638&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5ScU&quot;&gt;Перезапускаю все контейнеры:&lt;/p&gt;
  &lt;pre id=&quot;z9GG&quot;&gt;sudo docker compose -f /opt/zabbix/docker-compose.yml down

sudo docker compose -f /opt/zabbix/docker-compose.yml up -d

sudo docker ps&lt;/pre&gt;
  &lt;figure id=&quot;QjNM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-53-1500x169.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qCVY&quot;&gt;На подключенном к VPN сети клиенте открываю в браузере такой URL:&lt;/p&gt;
  &lt;pre id=&quot;P8Dv&quot;&gt;http://192.168.122.24:8080/&lt;/pre&gt;
  &lt;h3 id=&quot;nweJ&quot;&gt;3) Если Zabbix сервер развернут на удаленном сервере и не подключен к локальной или VPN сети&lt;/h3&gt;
  &lt;p id=&quot;8ZWa&quot;&gt;При таком раскладе можно прокинуть SSH порт либо открыть доступ напрямую или через обратный прокси, наподобие &lt;strong&gt;nginx&lt;/strong&gt;. Я рассмотрю лишь первый случай, как самый простой. А еще потому, что два других выходят за рамки данной статьи 😜.&lt;/p&gt;
  &lt;p id=&quot;pvBs&quot;&gt;На клиенте открываем терминал и выполняем:&lt;/p&gt;
  &lt;pre id=&quot;ahZC&quot;&gt;ssh -L 8080:127.0.0.1:8080 user@example.com&lt;/pre&gt;
  &lt;p id=&quot;8PXl&quot;&gt;Где (по порядку):&lt;/p&gt;
  &lt;ul id=&quot;2cnK&quot;&gt;
    &lt;li id=&quot;dqtt&quot;&gt;&lt;code&gt;-L&lt;/code&gt; – ключ перенаправления локального порта;&lt;/li&gt;
    &lt;li id=&quot;Y9q9&quot;&gt;&lt;code&gt;8080&lt;/code&gt; – порт, который будет слушать клиентская машина и перенаправлять его на &lt;code&gt;8080&lt;/code&gt; порт сервера;&lt;/li&gt;
    &lt;li id=&quot;nf7r&quot;&gt;&lt;code&gt;127.0.0.1&lt;/code&gt; – адрес сервера, на котором он слушает порт;&lt;/li&gt;
    &lt;li id=&quot;48Y4&quot;&gt;&lt;code&gt;8080&lt;/code&gt; – соответственно порт, на который перенаправляем;&lt;/li&gt;
    &lt;li id=&quot;MKVU&quot;&gt;&lt;code&gt;user@example.com&lt;/code&gt; – пользователь и адрес SSH сервера.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;FLuN&quot;&gt;В моём примере команда такая:&lt;/p&gt;
  &lt;figure id=&quot;8J8S&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-56.png&quot; width=&quot;1164&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7MJn&quot;&gt;Теперь открываем браузер и переходим по адресу: &lt;code&gt;http://127.0.0.1:8080/&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;ACGK&quot;&gt;Доступ к веб интерфейсу будет пока открыта SSH сессия.&lt;/p&gt;
  &lt;p id=&quot;GTDV&quot;&gt;Для авторизации в веб интерфейсе используйте стандартные логин: &lt;code&gt;Admin&lt;/code&gt; и пароль: &lt;code&gt;zabbix&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;NWec&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-54-1500x927.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;H75y&quot;&gt;Если вы увидели такое:&lt;/p&gt;
  &lt;figure id=&quot;jfPc&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-55-1500x930.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mW3F&quot;&gt;Мои поздравления 😎! Zabbix сервер с TimescaleDB поднят и готов к работе 👷‍♂️.&lt;/p&gt;
  &lt;h2 id=&quot;noJx&quot;&gt;Опционально&lt;/h2&gt;
  &lt;p id=&quot;0y50&quot;&gt;Чтобы не раздувать статью, ниже приведены ссылки на необязательные, но рекомендованные шаги инструкции 😉 на моем сайте &lt;a href=&quot;https://r4ven.me/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;.&lt;/p&gt;
  &lt;ul id=&quot;wA8k&quot;&gt;
    &lt;li id=&quot;5ebZ&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/podnimaem-server-monitoringa-zabbix-7-timescaledb-v-docker/#%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_Zabbix_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&quot; target=&quot;_blank&quot;&gt;Минимальная начальная настройка Zabbix сервера&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;YzNM&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/podnimaem-server-monitoringa-zabbix-7-timescaledb-v-docker/#%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B0%D0%B2%D1%82%D0%BE%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0_Zabbix_%D1%81%D1%82%D0%B5%D0%BA%D0%B0_%D1%81_systemd&quot; target=&quot;_blank&quot;&gt;Настройка автозапуска Zabbix стека с systemd&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;dZVW&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/podnimaem-server-monitoringa-zabbix-7-timescaledb-v-docker/#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA_Zabbix_agent_%D0%B2_docker_%D0%BD%D0%B0_%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC_%D1%85%D0%BE%D1%81%D1%82%D0%B5&quot; target=&quot;_blank&quot;&gt;Установка и запуск Zabbix agent в docker на удаленном хосте&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;uvh1&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/instrukcii/podnimaem-server-monitoringa-zabbix-7-timescaledb-v-docker/#%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B8_%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9_Zabbix_%D0%B2_Telegram_%D1%81_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%BE%D0%BC&quot; target=&quot;_blank&quot;&gt;Настройка отправки уведомлений Zabbix в Telegram с графиком&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;2c7z&quot;&gt;Заключение&lt;/h2&gt;
  &lt;p id=&quot;6uzG&quot;&gt;Фух..🤯 это была не самая простая статья. Особенно по объему перелопаченной информации. Но, мне кажется, оно того стоило. В итоге мы получили гибкий и легко переносимый проект системы мониторинга, работающий внутри docker контейнеров. А также мы настроили лаконичные, но информативные уведомления с графиками в Telegram, чтобы всегда быть в курсе состояния нашей инфраструктуры.&lt;/p&gt;
  &lt;p id=&quot;gFaX&quot;&gt;Хочется также отметить великолепную работу разработчиков Zabbix. В частности, актуальность и разнообразие docker образов и доступность файлов их сборки. После написания этой статьи, я их зауважал еще больше 👍.&lt;/p&gt;
  &lt;p id=&quot;AvNZ&quot;&gt;Спасибо, что читаете 😊. Если возникли вопросы – приглашаю вас в &lt;a href=&quot;https://t.me/r4ven_me_chat/&quot; target=&quot;_blank&quot;&gt;Вороний чат&lt;/a&gt;, как вы догадались, в телеге 😅. У нас там дружное сообщество 🚶‍♀️🐧🚶🐧🚶‍♂️🐧. И обязательно подписывайтесь на основной телеграм канал: &lt;a href=&quot;https://t.me/r4ven_me/&quot; target=&quot;_blank&quot;&gt;@r4ven_me&lt;/a&gt;, чтобы не пропустить публикации новых материалов на сайте.&lt;/p&gt;
  &lt;p id=&quot;mpag&quot;&gt;Желаю успехов и нападающего прода! 😌&lt;/p&gt;
  &lt;h2 id=&quot;bERQ&quot;&gt;Используемые материалы&lt;/h2&gt;
  &lt;ul id=&quot;nZ5U&quot;&gt;
    &lt;li id=&quot;ETQ9&quot;&gt;&lt;a href=&quot;https://github.com/r4ven-me/zabbix&quot; target=&quot;_blank&quot;&gt;Мой репозиторий zabbix сервера | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;fCPy&quot;&gt;&lt;a href=&quot;https://github.com/r4ven-me/zabbix-agent&quot; target=&quot;_blank&quot;&gt;Мой репозиторий zabbix агента | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;VNeX&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%92%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D1%80%D1%8F%D0%B4&quot; target=&quot;_blank&quot;&gt;Временной ряд | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;cWmq&quot;&gt;&lt;a href=&quot;https://habr.com/ru/companies/zabbix/articles/458530/&quot; target=&quot;_blank&quot;&gt;Zabbix, временные ряды и TimescaleDB | Habr&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;RS02&quot;&gt;&lt;a href=&quot;https://www.zabbix.com/documentation/current/en/manual/appendix/install/timescaledb&quot; target=&quot;_blank&quot;&gt;Использование TimescaleDB с Zabbix | Zabbix.com (EN)&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;nE43&quot;&gt;&lt;a href=&quot;https://github.com/smejdil/zabbix-docker-timescaledb/tree/main/2.7.2-pg14&quot; target=&quot;_blank&quot;&gt;Исходные файлы docker, которые я адаптировал | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;hwai&quot;&gt;&lt;a href=&quot;https://hub.docker.com/r/timescale/timescaledb&quot; target=&quot;_blank&quot;&gt;Реестр docker образов TimescaleDB | Dockerhub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;ckcQ&quot;&gt;&lt;a href=&quot;https://hub.docker.com/_/postgres&quot; target=&quot;_blank&quot;&gt;Описание docker образа PostgresSQL | Dockerhub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;vy2V&quot;&gt;&lt;a href=&quot;https://github.com/timescale/timescaledb-docker/&quot; target=&quot;_blank&quot;&gt;Исходные файлы docker образов TimescaleDB | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;9shU&quot;&gt;&lt;a href=&quot;https://hub.docker.com/r/zabbix/zabbix-server-pgsql&quot; target=&quot;_blank&quot;&gt;Описание docker образа Zabbix server | Dockerhub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;3SlO&quot;&gt;&lt;a href=&quot;https://hub.docker.com/r/zabbix/zabbix-web-nginx-pgsql&quot; target=&quot;_blank&quot;&gt;Описание docker образа Zabbix web | Dockerhub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;y7Ww&quot;&gt;&lt;a href=&quot;https://registry.hub.docker.com/r/zabbix/zabbix-agent/&quot; target=&quot;_blank&quot;&gt;Описание docker образа Zabbix agent | Dockerhub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;CENA&quot;&gt;&lt;a href=&quot;https://github.com/zabbix/zabbix-docker/tree/7.0/Dockerfiles/server-pgsql/alpine&quot; target=&quot;_blank&quot;&gt;Исходный Dockerfile для Zabbix server | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;XyWz&quot;&gt;&lt;a href=&quot;https://github.com/xxsokolov/Zabbix-Notification-Telegram&quot; target=&quot;_blank&quot;&gt;Исходные файлы Zabbix Notification Telegram | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;vr5S&quot;&gt;&lt;a href=&quot;https://github.com/xxsokolov/Zabbix-Notification-Telegram?&quot; target=&quot;_blank&quot;&gt;Описание работы скрипта Zabbix Notification Telegram | GitHub&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;QJfA&quot;&gt;&lt;a href=&quot;https://github.com/xxsokolov/Zabbix-Notification-Telegram/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%B0-Zabbix-Notification-Telegram&quot; target=&quot;_blank&quot;&gt;Инструкция по установке Zabbix Notification Telegram | GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>r4ven_me:sistemy-monitoringa</id><link rel="alternate" type="text/html" href="https://teletype.in/@r4ven_me/sistemy-monitoringa?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=r4ven_me"></link><title>Что такое системы мониторинга в IT?</title><published>2024-09-18T21:03:41.163Z</published><updated>2024-09-18T21:06:02.601Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/ec/08/ec08fb37-2397-4154-9633-f08d6b1b6f83.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/1a/42/1a42119d-51f4-4501-b0b1-9839470e9b1a.png&quot;&gt;Истодный сайт представленного материала: r4ven.me</summary><content type="html">
  &lt;figure id=&quot;NdjG&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1a/42/1a42119d-51f4-4501-b0b1-9839470e9b1a.png&quot; width=&quot;830&quot; /&gt;
    &lt;figcaption&gt;Что такое системы мониторинга в IT?&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;i4SX&quot;&gt;Исходный сайт представленного материала: &lt;a href=&quot;https://r4ven.me/&quot; target=&quot;_blank&quot;&gt;r4ven.me&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;I0KB&quot;&gt;Приветствую!&lt;/h3&gt;
  &lt;p id=&quot;FQ7R&quot;&gt;В данной заметке поговорим о том, какие бывают виды систем мониторинга, и по традиции, рассмотрим их самые популярные реализации на сегодняшний день. Тема важная, поэтому не поленитесь прочитать, это не займет много времени😉.&lt;/p&gt;
  &lt;blockquote id=&quot;QGoU&quot;&gt;Присоединяйтесь к нашему каналу в телеграм:  &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me&lt;/a&gt;, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат:  &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;t.me/r4ven_me_chat&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;rCg8&quot;&gt;Хочу отметить, что этот теоретический пост📕 предшествует будущей статье по развертыванию &lt;strong&gt;Zabbix + TimescaleDB&lt;/strong&gt; в контейнерах &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/kontejnerizaciya-tehnologiya-virtualizacii-na-urovne-os/&quot; target=&quot;_blank&quot;&gt;Docker&lt;/a&gt;🐳.&lt;/p&gt;
  &lt;p id=&quot;jbNc&quot;&gt;В статье я буду использовать аббревиатуру &lt;strong&gt;СМ&lt;/strong&gt; – сокр. система мониторинга.&lt;/p&gt;
  &lt;h2 id=&quot;zKcQ&quot;&gt;Вместо введения: зачем нужны системы мониторинга?&lt;/h2&gt;
  &lt;p id=&quot;gFN8&quot;&gt;TLDR: чтобы не делать так 😁&lt;/p&gt;
  &lt;figure id=&quot;BI1E&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-28.png&quot; width=&quot;1067&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;TQOg&quot;&gt;А если серьезно, ниже представлен перечень задач, которые решают СМ📊:&lt;/p&gt;
  &lt;ol id=&quot;fZgo&quot;&gt;
    &lt;li id=&quot;kQJW&quot;&gt;&lt;strong&gt;Сбор метрик&lt;/strong&gt;: сбор данных о производительности элементов инфраструктуры, таких как загрузка CPU, RAM, DISK и множество других;&lt;/li&gt;
    &lt;li id=&quot;EoJA&quot;&gt;&lt;strong&gt;Обнаружение неисправностей:&lt;/strong&gt; своевременная идентификация проблем позволяет администраторам и разработчикам быстрее их устранить;&lt;/li&gt;
    &lt;li id=&quot;oz7Z&quot;&gt;&lt;strong&gt;Отправка уведомлений:&lt;/strong&gt; почти все системы мониторинга, имеет в своем арсенале функционал отправки уведомлений по различным каналам связи (email, мессенджеры, SMS и др.) в случае обнаружения проблем;&lt;/li&gt;
    &lt;li id=&quot;tlcQ&quot;&gt;&lt;strong&gt;Расширенная аналитика:&lt;/strong&gt; СМ собирает и хранит множество данных, анализ которых помогает выявить узкие места и улучшить производительность системы;&lt;/li&gt;
    &lt;li id=&quot;HVDS&quot;&gt;&lt;strong&gt;Снижение времени простоя:&lt;/strong&gt; очевидно, мониторинг позволяет заранее обнаружить деградацию сервисов и предотвратить серьезные сбои.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h2 id=&quot;4yV3&quot;&gt;Виды систем мониторинга&lt;/h2&gt;
  &lt;p id=&quot;CHpx&quot;&gt;Теперь немного о том, какие основные виды систем мониторинга существуют📋:&lt;/p&gt;
  &lt;ul id=&quot;D39p&quot;&gt;
    &lt;li id=&quot;lcrg&quot;&gt;&lt;strong&gt;Мониторинг инфраструктуры&lt;/strong&gt; – отслеживает состояние серверов, сетевых устройств, баз данных и других компонентов ИТ-инфраструктуры. Примеры СМ: &lt;strong&gt;Nagios&lt;/strong&gt;, &lt;strong&gt;Zabbix&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;mT2H&quot;&gt;&lt;strong&gt;Мониторинг приложений &lt;/strong&gt;– следит за состоянием приложений и их производительностью на уровне кода, выявляя узкие места и проблемы в работе ПО. Примеры СМ: &lt;strong&gt;New Relic&lt;/strong&gt;, &lt;strong&gt;AppDynamics&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;tTlQ&quot;&gt;&lt;strong&gt;Мониторинг журналов &lt;/strong&gt;– анализирует логи приложений и систем для выявления ошибок, сбоев и аномальных действий. Примеры СМ: &lt;strong&gt;Elasticsearch&lt;/strong&gt;, &lt;strong&gt;Logstash&lt;/strong&gt;, &lt;strong&gt;Kibana (ELK Stack)&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;NDCp&quot;&gt;&lt;strong&gt;Мониторинг сетевого трафика&lt;/strong&gt; – предназначен для отслеживания сетевой активности, анализа пропускной способности и поиска аномалий в сетевом трафике. Пример: &lt;strong&gt;SolarWinds&lt;/strong&gt;, &lt;strong&gt;Wireshark&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;yyRL&quot;&gt;&lt;strong&gt;Облачный мониторинг&lt;/strong&gt; – инструменты, специально предназначенные для мониторинга облачных ресурсов и их инфраструктуры. Примеры СМ: &lt;strong&gt;Amazon CloudWatch&lt;/strong&gt;, &lt;strong&gt;Google Cloud Monitoring&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;MmoA&quot;&gt;Популярные системы мониторинга&lt;/h2&gt;
  &lt;p id=&quot;3tyG&quot;&gt;Теперь рассмотрим некоторые популярные &lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/otkrytoe-po/&quot; target=&quot;_blank&quot;&gt;Open source&lt;/a&gt; решения из категории СМ, а также коротко пробежимся по их преимуществам и недостаткам.&lt;/p&gt;
  &lt;h3 id=&quot;YAsW&quot;&gt;1. &lt;strong&gt;Zabbix&lt;/strong&gt;&lt;/h3&gt;
  &lt;figure id=&quot;zzag&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/monitoring_2.resized.png&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xWmn&quot;&gt;&lt;strong&gt;Zabbix&lt;/strong&gt; — это открытая платформа для мониторинга сетей и серверов. Она поддерживает сбор данных с разных источников, предоставляет детализированные графики и отчеты.&lt;/p&gt;
  &lt;p id=&quot;ph4B&quot;&gt;&lt;strong&gt;Плюсы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;up5s&quot;&gt;
    &lt;li id=&quot;Ot10&quot;&gt;Бесплатный и с открытым исходным кодом.&lt;/li&gt;
    &lt;li id=&quot;s8FL&quot;&gt;Гибкая настройка под любые нужды (просто комбайн в мире СМ).&lt;/li&gt;
    &lt;li id=&quot;pP5E&quot;&gt;Поддержка большого количества метрик.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;jt1I&quot;&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;xEa0&quot;&gt;
    &lt;li id=&quot;adwb&quot;&gt;Сложность настройки для начинающих.&lt;/li&gt;
    &lt;li id=&quot;dHJV&quot;&gt;Могут быть проблемы с масштабированием при больших нагрузках.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;5JCY&quot;&gt;2. &lt;strong&gt;Prometheus&lt;/strong&gt;&lt;/h3&gt;
  &lt;figure id=&quot;ATmh&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/monitoring_4.resized.png&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ElG1&quot;&gt;&lt;strong&gt;Prometheus&lt;/strong&gt; — это мощная система для мониторинга и алертинга с открытым исходным кодом, широко используемая в среде DevOps. Она ориентирована на сбор метрик и поддерживает специальный язык запросов PromQL.&lt;/p&gt;
  &lt;p id=&quot;VVv9&quot;&gt;&lt;strong&gt;Плюсы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;7kpw&quot;&gt;
    &lt;li id=&quot;6QSE&quot;&gt;Высокая скорость обработки данных.&lt;/li&gt;
    &lt;li id=&quot;H2r0&quot;&gt;Идеально подходит для динамических облачных сред.&lt;/li&gt;
    &lt;li id=&quot;4Qgj&quot;&gt;Простая интеграция с системами контейнеризации, такими как Kubernetes.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;iSEW&quot;&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;kH1p&quot;&gt;
    &lt;li id=&quot;XvKa&quot;&gt;Ограниченные возможности работы с логами.&lt;/li&gt;
    &lt;li id=&quot;NzFG&quot;&gt;Сложности при хранении данных на длительный срок.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;3Xr9&quot;&gt;3. &lt;strong&gt;Grafana&lt;/strong&gt;&lt;/h3&gt;
  &lt;figure id=&quot;BEtG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/monitoring_1-1500x778.png&quot; width=&quot;1500&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;4TYl&quot;&gt;&lt;strong&gt;Grafana&lt;/strong&gt; — это open source инструмент для визуализации данных из различных источников мониторинга. Часто используется в связке с Prometheus для создания наглядных дашбордов. Также из коробки имеет функционал отправки уведомлений.&lt;/p&gt;
  &lt;p id=&quot;VixT&quot;&gt;&lt;strong&gt;Плюсы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;onbK&quot;&gt;
    &lt;li id=&quot;ynMz&quot;&gt;Поддержка множества источников данных (Prometheus, InfluxDB, ElasticSearch, Zabbix и др.).&lt;/li&gt;
    &lt;li id=&quot;cxlH&quot;&gt;Гибкие и детальные дашборды.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;P81z&quot;&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;twfW&quot;&gt;
    &lt;li id=&quot;jNEp&quot;&gt;Самостоятельно не собирает данные (нужен источник).&lt;/li&gt;
    &lt;li id=&quot;mSkS&quot;&gt;Требует навыков настройки графиков/дашбордов.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;5Ufr&quot;&gt;4. &lt;strong&gt;Nagios&lt;/strong&gt;&lt;/h3&gt;
  &lt;figure id=&quot;l759&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://r4ven.me/wp-content/uploads/2024/09/image-27-1500x731.png&quot; width=&quot;1500&quot; /&gt;
    &lt;figcaption&gt;Источник: nagios.org&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;lkUc&quot;&gt;&lt;strong&gt;Nagios&lt;/strong&gt; — одна из старейших и наиболее известных систем мониторинга, ориентированная на мониторинг серверов, сетей и приложений. Также имеет открытый исходный код.&lt;/p&gt;
  &lt;p id=&quot;kle5&quot;&gt;&lt;strong&gt;Плюсы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;APqu&quot;&gt;
    &lt;li id=&quot;qNzZ&quot;&gt;Широкая поддержка плагинов.&lt;/li&gt;
    &lt;li id=&quot;oiel&quot;&gt;Подходит для небольших и средних сетей.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;vlFD&quot;&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;d1lc&quot;&gt;
    &lt;li id=&quot;p2U3&quot;&gt;Сложность настройки для начинающих.&lt;/li&gt;
    &lt;li id=&quot;VZzK&quot;&gt;Ограниченная масштабируемость.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;heeO&quot;&gt;Заключение&lt;/h2&gt;
  &lt;p id=&quot;bRRs&quot;&gt;В современном мире, ни одна серьезная IT инфраструктура не обходится без системы мониторинга. Как уже говорил ранее, СМ играет важную роль в обеспечении стабильной работы наблюдаемых систем.&lt;/p&gt;
  &lt;p id=&quot;7GBG&quot;&gt;Выбор подходящего инструмента зависит от различных факторов: размеров компании, типа приложений и прочих особенностей инфры.&lt;/p&gt;
  &lt;p id=&quot;eBAH&quot;&gt;Цель данной заметки, дать читателю общее представление о СМ и их назначении. В ближайшем будущем в Вороньем блоге появится статья, по развёртыванию в Docker одной из популярных open source СМ – &lt;strong&gt;Zabbix&lt;/strong&gt;, изначально написанной Алексеем Владышевым.&lt;/p&gt;
  &lt;p id=&quot;aKI0&quot;&gt;Чтобы не пропустить новые посты – подписывайтесь на наш телеграм канал &lt;a href=&quot;https://t.me/r4ven_me&quot; target=&quot;_blank&quot;&gt;@r4ven_me&lt;/a&gt;📱, а если возникли вопросы или просто есть желание “перетереть за опенсорс” – заглядывайте в наш чат &lt;a href=&quot;https://t.me/r4ven_me_chat&quot; target=&quot;_blank&quot;&gt;@r4ven_me_chat&lt;/a&gt;💬.&lt;/p&gt;
  &lt;h2 id=&quot;tb9t&quot;&gt;Полезные источники&lt;/h2&gt;
  &lt;ul id=&quot;VojB&quot;&gt;
    &lt;li id=&quot;azRp&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/Zabbix&quot; target=&quot;_blank&quot;&gt;Zabbix | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;PZOV&quot;&gt;&lt;a href=&quot;https://www.altlinux.org/Prometheus&quot; target=&quot;_blank&quot;&gt;Prometheus | ALT Linux Wiki&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;C81O&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/Grafana&quot; target=&quot;_blank&quot;&gt;Grafana | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;nqvA&quot;&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/Nagios&quot; target=&quot;_blank&quot;&gt;Nagios | Википедия&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;OY2Q&quot;&gt;&lt;a href=&quot;https://r4ven.me/it-razdel/slovarik/chto-takoe-sistemy-monitoringa-v-it/&quot; target=&quot;_blank&quot;&gt;Оригинал статьи | Вороний блог&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

</content></entry></feed>