Задать вопрос
  • Чем мониторить серверы?

    @vitaly_il1
    DevOps Consulting
    Выбирать сейчас непросто - Grafana сейчас имеет Loki для сбора логов, а Elastic (бывший ELK) APM agent для сбора метрик.
    Я понял, что вы не хотите Zabbix, но я все равно за классику - например, Zenoss. У них есть готовые плагины\темплейты для Windows и популярных сервисов. А у новых модных штук - вопрос есть ли.
    Ответ написан
    4 комментария
  • Чем мониторить серверы?

    2ord
    @2ord
    Эластик лишь хранит логи и выполняет поиск по ним. А сбором и перенаправлением таковых занимаются другие инструменты. Допустим, Winlogbeat.
    Ответ написан
    1 комментарий
  • Структура данных в Elasticsearch?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Эластик не хранит файлы, у него есть индексы! В индексах он хранит поисковые термы. По запросу GET он производит поиск термов в индексах и то, что нашёл, выдаёт в виде json.
    Теперь, чтобы что-то положить в эластик, нам нужно это проиндексировать, привязать метаинформацию, а уж сам эластик это разобьёт на термы и положит в индексы.
    Другими словами, эластик не хранит исходную информацию (ну или почти не хранит), и для того, чтобы иметь доступ к оригиналу, нужно отдельно эту информацию эластику передать и в ответ на запрос, получить.
    Ответ написан
    Комментировать
  • Структура данных в Elasticsearch?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Эластик это не база данных, а поисковый движок. Это раз. А даа так это то что стоило бы почитать официальную документацию
    Ответ написан
    Комментировать
  • Как импортировать датасет 30к документов в ElasticSearch?

    2ord
    @2ord Автор вопроса
    Импортировал так. Может у кого-то есть лучше вариант - буду рад узнать.
    split --verbose -l1000 dataset-bulk-30k.ndjson bulk.
    
    for f in bulk.??; do echo $f; curl -i -X POST localhost:9200/_bulk -H "Content-Type: application/x-ndjson" --data-binary @$f; done
    Ответ написан
    4 комментария
  • Какой Линукс подойдет для этого компьютера?

    Adamos
    @Adamos
    Главный вопрос - стоящее ЧЕГО. Запустить на этом Линь с легким DE и офисом получится - будет весьма неторопливо, но многие пользователи сами медленнее даже такой машинки.
    Можно ускорить отзывчивость, поставив современный этому железу дистрибутив и программы, еще не отожравшиеся по памяти.
    Но вы же, подозреваю, захотите интернету? А значит, современный браузер, который сожрет всю эту память прямо при старте и будет постоянно хотеть еще, терзая своп...
    Ответ написан
    2 комментария
  • Какие последствия могут быть от НЕ написания в /etc/network/interfaces broadcast?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    ничего не будет
    этот адрес замечательно вычисляется по адресу и маске.
    Ответ написан
    2 комментария
  • Как прочитать файл построчно в bash?

    @AVKor
    Не надо использовать виндовые EOL. В никсах EOL = \n, а в винде EOL = \r\n
    Ответ написан
    1 комментарий
  • Как вычислить виновника из-за которого отваливается интернет с какой-то периодичностью в маленькой сети?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Такого рода проблемы все и всегда решаются однотипно.
    1. Необходимо сформулировать критерии наличия проблемы.
    Как именно пропадает интернет, насколько часто, как надолго. Это нужно для диагностики. поиска причины и определения ушла ли проблема после принятия каких либо мер.
    2. Делить проблему на части и проверять части по отдельности.
    Самый эффективный способ делить - это пополам. Отсекаем часть сети и проверяем наличие проблемы в обеих частях (если есть возможность) или в одной из частей.
    3. Когда найден минимальный проблемный участок, который уже нельзя или бессмысленно делить - заменяем его.
    4. Помним, что чаще всего сложные проблемы - это композиция нескольких более простых. которые по отдельности могут не проявляться. В вашем случае может быть проблема, связанная с нагрузкой на роутер, например, которую создает один из услов из-за плохого контакта обжима и большого объёма биттых пакетов. Устранив одну из причин, вы, может быть, сделаете проявления проблемы реже, но не устраните её полностью. К примеру, если замените ротуер, битые пакеты будут всё равно будут нагружать вашу сеть и портить ее производительность, но это будет не так очевидно. Переобжав коннектор вы избавитесь от части нагрузки, но еслив ваш ротуер работал на переделе, то лишний вафай-клиент или тяжелый видос в сети сможет его снова нагрузить до критического снижения производительности.

    Итак, пробежимся по перечисленным пунктам сначала.
    1. Критерии. Поиск критериев - это часть решения. Обычно в этом случае нуно сорать необходимую статистику. Есть куча софта, который это умеет делать, но пинг есть всегда под рукой.
    Для этой тулзы есть две полезных опции: ключ для бесконечного пинга и размер пакета.
    В разных ОС эти ключи немного разные, поэтому ищите их отдельно, у меня нет винды под рукой, поэтому не стану на этом заострять.
    Скаж лишь, что пинговать лучше большими пакетами, жалетально превышающими размер TTL, прописанный в роутере. Тогда такой пинг будет реже проскакивать в периоды хорошей связи, то есть выловит больше пролблем.
    Пинговать нужно в отдельных окнах сразу несколько хостов:
    - ya.ru - этот хост всегда отвечает на пинги и выявит проблемы с DNS
    - 8.8.8.8 - это гугловый DNS-сервер, тоже всегда отвечает на пинги, покажет, что связь с инетом есть даже если DNS, прописанныйна компе не правильно работает.
    - 192.168.0.1 - или какой там IP у вашего роутера. Нужно. чтбы отделить проблемы с инетом от проблем с внутренней связностью до роутера
    - 192.168.0.x - ip одного из компов в сети. Я обычно пингую несколько компов, доступных через баксимальное число потенциально проблемных узлов - ethernet-розеток, свичей, вайфай-соединений... Этот пинг поможет понять где проблема, во внутрисетевой связности или в последней миле.

    Учтите, что проблемы часто бывают комбинированные и каждое сочетание симптомов будет свидетельствовать о раных проблемах.
    Да, тревожным принаком может служить не только пропадание пакетов, но и скачки в длительности их возврата, особенно если такие длительности достигают 500мс и выше. Но и скачки от 3мс до 250мс тоже будут свидетельствовать о каких-то проблемах.

    Запускать пинг на всех компах лучше одновременно и на некоторое время. Например минут на 20. Потом по статистике будет видно сколько где пакетов пропало.

    2. Если критерии наличия проблемы позволяют, то можно попробовать отрубать части сети и смотреть наличие проблемы. Это я в том смысле, что если проблема происходит в среднем раз в пару-тройку часов, то отрубать на многие часы части сети при диагностикем ожет быть неприемлемым.
    Редкеи пробемы дольше отлавливать. Но напоминаю, что критерии можно детализировать, ведь если пакеты у вас пропадат относительно редко, то скачки времени их возврата могут случаться чаще и подсвечивать проблему. Также можно сделать рамер пакета близким к максимальному, это должно тоже в некоторых случаях участить проявление проблемы.
    Иногда не мешает нагрузить сеть комированием по локалке большого файла. В линуксе можнно с помощью утилиты tc послать большой поток рандомных байт на любой сокет..
    3. Плавающие проблемы случаются из-за плохого обжима, перебитого жверью кабеля, перегрызенного UTP в плинтусе, из-за умиращих конденсаторов в блоке питания роутера (БП может не выдавать необходимого при нагрузках тока, но вольтметром такая неисправность не будет различима без нагрузки). Вообще старые (да и не только) роутеры могут страдать поплывшими электролитическими конденсаторами не только в блоках питания.
    Хорошо, когда можно подменить роутер.
    4. ну с четвертым пунктом ничего не пососветуешь, только разделать и тестировать все по отедльности и в разных сочетания и да поможет нам ктулху.

    А для тех, кто дочитал этот опус до конйа - интересная задачка. Что пингуют эти команды, как и почему?
    ping 1.1
    ping 2130706433

    Тех, кто знает, попрошу не спойлерить=)
    Пусть для кого-то будет сюрпризом этот дивный мир=)

    UPD. Простите за адское количество опечаток в тексте. Писал в спешке и с непривычной клавиатуры. Исправлю всё попозже. Не ожидал, что многим ответ придётся по душе. Вроде ж накапитанил как мог.
    Ответ написан
    5 комментариев
  • Как запускать ansible playbooks с ограниченным sudo?

    @Seboreia Автор вопроса
    Итак, нашел на просторах интернета обходной путь: fibed.net/2016/10/29/ansible-i-restricted-sudo
    Краткая суть: необходимо создать connection-модуль, положить его в директорию ansible/lib/ansible/plugins/connection/ и в playbook'е в секции connection выбрать тип транспорта transport = ssh_sudo (либо сразу в основном конфиге задать transport = ssh_sudo).
    Сам модуль ssh_sudo.py:
    import ansible.constants as C
    import ansible.plugins.connection.ssh as SSH
    import pipes
    
    class Connection (SSH.Connection):
    
        def __init__(self, play_context, *args, **kwargs):
    
            super (Connection, self).__init__(play_context, *args, **kwargs)        
            
            self._make_become_cmd = self._play_context.make_become_cmd
            self._play_context.make_become_cmd = self.make_become_cmd
            
    
        def make_become_cmd (self, cmd, executable = None):
          
            becomecmd = self._make_become_cmd(cmd, executable=None)
    
            if cmd.split('=')[0] == 'sudo':
                
                command = cmd.split('=')[1]
                exe = self._play_context.become_method
                flags = getattr(C, 'DEFAULT_%s_FLAGS' % self._play_context.become_method.upper(), None)
                prompt = self._play_context.prompt
                user = self._play_context.become_user
                success_key = self._play_context.success_key         
    
                sudocmd = '%s -k && setsid %s %s-p "%s" -u %s %s;' 'rc=$?; echo %s; exit $rc' % \
                          (exe, exe, flags.replace('-n',''), prompt, user, command, success_key)
     
                becomecmd = '$SHELL -c ' + pipes.quote (sudocmd)
           
            return (becomecmd)
    Ответ написан
    Комментировать
  • Как заменить текст с помощью модуля replace?

    akelsey
    @akelsey
    Регулярка верная, всё норм отрабатывает, возможно не хватает прав.
    Дополните плейбук опцией:
    become: true
    или параметр
    ansible-playbook -b

    PS
    подробнее
    Ответ написан
    3 комментария
  • Не запускается Виртуализация на Windows 10?

    akelsey
    @akelsey
    cmd.exe под админом:
    bcdedit /set hypervisorlaunchtype off
    и рестарт компьютера.
    Ответ написан
    4 комментария
  • Как изменить TTL всего выходного трафика в MikroTik?

    akelsey
    @akelsey
    У меня такой вариант прекрасно работает. (интерфейс не указывайте, pathtrough=yes)
    /ip firewall mangle
    add action=change-ttl chain=postrouting new-ttl=set:65 passthrough=yes
    Ответ написан
    Комментировать
  • Стоит ли называть домен AD по аналогии с внешним доменом?

    akelsey
    @akelsey
    Реальный DNS домен: company.ru/company.com
    Домен AD: ad.company.ru/ad.company.com

    "Бытующее мнение" связано с тем, что ранее, когда интернет был не столь распространён в компаниях (в начале 2000х), у компаний не было своих сайтов еще со своим корп. именем (а обычно были странички вроде isp-server.ru/~mycompany ), а выход в интернет был через прокси сервер по диалапу, админы не парились и называли свои домены company.ru. Когда же появлялся сайт company.ru, то появлялась проблема с внешним и внутренним DNS, т.к. совершенно два разных DNS сервера отвечали за эту зону, для внешних это один DNS, для внутренних другой. Получается такой Split-DNS, и всё бы ничего, но за зону внутри компании company.ru отвечает ваш контроллер домена, он и откликается на это имя, вроде бы сайт можно прописать алиасом на www.company.ru (и сказать всем в компании, что б открывали только так), но вдруг кто-то до вас завел в домен компьютер www, т.е. тут уже геморрой www.company.ru - занят.
    Вот по этому добавьте перед корп. именем понятный вам префикс, и не парьтесь, примеры:
    ad.company.ru, inside.company.ru, local.company.ru etc...
    Ответ написан
    Комментировать
  • Есть ли такой сборщик почты?

    akelsey
    @akelsey
    Есть. Называется корпоративный почтовый сервер.
    Ответ написан
    Комментировать
  • Зачем hh.ru делает много запросов на 127.0.0.1 на разные порты?

    akelsey
    @akelsey
    Проверяет сервисы доступные на компьютере:
    5900 - если слушается - значит есть вероятность сервиса VNC
    8080 - прокси
    3389 - rdp
    ну и т.д. - по списку известных портов.
    Сбербанк тоже проверяет, и полагаю может отказать в аутентификации если эти порты открыты.
    Ответ написан
    1 комментарий
  • Насколько реально нужен консул девопсу?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никто не заставляет использовать docker, systemd, ansible и вообще какие угодно системы оркестрации и оптимизации. Необязательно делать шаблоны конфигов или кластерные конфигурации сервисов, необязательно использовать библиотеки настраиваемого логгирования, возиться с балансерами и реприцируемыми базами. Но люди это делают, значит, смысл всё-таки есть?

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

    Консул - это тоже инструмент. Вряд ли хоть кто-то использует его возможности целиком и полностью, тем более что никто не заставляет. Кому-то достаточно того, что у него все сервисы зарегистрированы в одном месте и из коробки имеют автоматическое DNS-имя вида NAME.service.consul. Кто-то использует kv-хранилище для хранения параметров, а кто-то хранит в нём секреты и целые конфиги, настраивает токены с различными acl и скрещивает всё это с consul-template. Вообще, необязательно использовать именно консул, есть и другие инструменты для подобных задач. Например, zk/etcd.

    Консул чаще используют совсем не с ансиблом, а с инструментами оркестрации, в которых сервисы могут расширяться и сворачиваться, перезагружаться и мигрировать. Скажем, пусть у нас есть условный сервис rabbitmq на три ноды. Тогда у нас может быть три контейнера rabbitm{1..3}, при запуске они регистрируются в консуле скриптом запуска вместе с проверками, а далее consul отдаёт их все три в виде имени rabbitmq.service.consul. Если какой-то из них вдруг упадёт, consul оперативно это обнаружит и исключит из DNS проблемный узел. Если вдруг управляющий всем этим администратор или автоматическая система оркестрации посчитает нужным добавить новые узлы или перенести их куда-то ещё в кластере, то consul также отразит все нужные изменения. При этом использующее rabbitmq приложение должно будет знать только адрес rabbitmq.

    Конечно, любую задачу можно обвесить скриптами, костылями и даже самописными плейбуками без использования готовых инструментов, а потом повторно решать десятки задач, которые уже сто раз решены до тебя опытными людьми, но зачем?
    Ответ написан
    1 комментарий
  • Как в playbook (Ansible) задать условие?

    @mureevms
    - name: Test
      hosts: localhost
      connection: local
      tasks:
      - name: run shell
        shell: "ls"
        register: register_shell
    
      - name: print shell
        debug:
          msg: "{{ register_shell }}"
    
      - name: Run if "Vlan 1" exist
        debug:
          msg: Vlan 1 exist
        when: register_shell.stdout_lines is search("Vlan 1")
    
      - name: Run if "Vlan 1" NOT exist
        debug:
          msg: Vlan 1 NOT exist
        when: register_shell.stdout_lines is not search("Vlan 1")


    Вывод
    TASK [Gathering Facts] *********************************************************
    ok: [localhost]
    
    TASK [run shell] ***************************************************************
    changed: [localhost]
    
    TASK [print shell] *************************************************************
    ok: [localhost] => {
        "msg": {
            "changed": true,
            "cmd": "ls",
            "delta": "0:00:00.004657",
            "end": "2022-04-15 14:44:10.370659",
            "failed": false,
            "rc": 0,
            "start": "2022-04-15 14:44:10.366002",
            "stderr": "",
            "stderr_lines": [],
            "stdout": "host_vars\nprovisioning.yml\nroles\nVlan 1",
            "stdout_lines": [
                "host_vars",
                "provisioning.yml",
                "roles",
                "Vlan 1"
            ]
        }
    }
    
    TASK [Run if "Vlan 1" exist] ***************************************************
    ok: [localhost] => {
        "msg": "Vlan 1 exist"
    }
    
    TASK [Run if "Vlan 1" NOT exist] ***********************************************
    skipping: [localhost]
    
    PLAY RECAP *********************************************************************
    localhost                  : ok=4    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
    Ответ написан
    1 комментарий
  • Отличия GET от POST?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    Общение веб-браузера c сервером по протоколу HTTP напоминает обычный текстовый чат. Никакой магии.

    Браузер устанавливает соединение с сервером и пишет ему текстом, как будто, «Привет, как дела».
    Веб сервер в ответ что-то возвращает, типа «Ничего так, пойдёт».

    Настоящий диалог строго регламентирован протоколом. Первая строчка, которую должен прислать браузер содержит название метода, адрес и версию протокола:GET /about/index.html HTTP/1.1

    Ну, или POST /guestbook HTTP/1.1. Или ещё какой-то из методов и адресов.

    Вы можете подключиться к веб-серверу обычным telnet'ом по 80-му порту, если найдёте веб-сервер, позволяющий подключаться без SSL (без https://), и попробовать вообще вручную вводить все эти строки, изображая браузер.

    Таким образом, различие методов GET и POST — целиком зависит от веб-сервера. Существует стандарт, описывающий все ньюансы. Рекомендации, которых лучше придерживаться. Но в конечном счёте это всего лишь чат )
    Ответ написан
    Комментировать
  • Принял оффер, завтра выходить на работу, но хочу отказаться - внесут ли в black list?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Не знаю, как насчет черных списков, но если в этом банке случайно спросят про тебя, то "хорошая" репутация тебе скорее всего обеспечена. Постарайся прям рассыпаться в извинениях :) Ты конечно с точки зрения закона не обязан ничего - у нас были случаи, когда чел после первого дня на работу не выходил - но жизнь завтра не кончается, не стоит плевать в колодцы, мимо которых идешь...
    Ответ написан
    Комментировать