Search
Write a publication
Pull to refresh
28
0

User

Send message

Удаленное логирование в journald или Всё ещё «это вам не нужно»?

Reading time6 min
Views25K


Дисклеймер


Все эксперименты проводились на CentOS Linux release 7.2.1511 в качестве основной системы, с последними доступными из стоковой репы systemd (systemd-219-19.el7_2.13). Надеюсь, часть приведенных данных будет неактуальна уже на момент публикации статьи.


Вводная часть


Начав захватывать linux-дистрибутивы с выпуска Fedora 15, systemd окончательно победил. Зубры и аксакалы понемногу приучаются к unit'ам и systemctl. Скрежещат зубами последние защитники Старого Доброго. В этих реалиях невозможно обойти дочерние продукты systemd. И сегодня давайте поговорим, например, про journald.


Читать дальше →

Увеличиваем стоимость атаки с помощью Immutable Infrastructure

Reading time4 min
Views7.5K


Контейнеры Docker хороши тем, что они немутабельны (immutable). Docker поставляется с файловой системой типа copy-on-write, поэтому базовый образ может быть изменен только в том случае, если вы сами создали соответствующий коммит.


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

Читать дальше →

Перевод звонка с помощью скрипта в Asterisk

Reading time4 min
Views18K


Не так давно у одного из наших клиентов возникла необходимость переводить звонки (входящие и исходящие) по клику из браузера. Логика такова: группа операторов колл-центра принимает и осуществляет звонки, и после разговора и выяснения потребностей им нужно соединить клиента с одним из заказчиков или другим специалистом организации.
Читать дальше →

Как заставить PostgreSQL считать быстрее

Reading time15 min
Views26K

Источник фотографии


Все умеют считать, но не все умеют считать быстро. В этой статье мы подробно рассмотрим методы оптимизации count в PostgreSQL. Существуют приемы, которые могут позволить ускорить подсчет количества строк на порядки.


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


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

Мы проанализируем решения для каждой конкретной ситуации, а также сравним их скорость и потребление ресурсов. Разобрав ситуацию с централизованной БД, мы воспользуемся Citus, чтобы продемонстрировать параллельное выполнение count в распределенной базе данных.

Читать дальше →

Пять инструментов systemd, которые стоит начать использовать прямо сейчас

Reading time4 min
Views32K

Эта статья призвана познакомить читателя с находящимся в арсенале systemd набором инструментов.


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

Читать дальше →

Вебинар: Asterisk и базы данных

Reading time1 min
Views6.6K
Centos-admin.ru - делимся опытом! Очередной вебинар от команды Centos-admin.ru пройдет в ближайшую среду, в 12-00 по московскому времени. Мы расскажем о том, зачем и каким образом можно использовать базы данных в связке с Asterisk. Поговорим о встроенной базе данных AstDB и о подключении к внешним СУБД.

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

Прямая ссылка на видео | Cсылка для регистрации

Приглашаем всех желающих 23 ноября. Приходите!

Обнаружение сервисов в Stripe

Reading time9 min
Views5.2K

Каждый год появляется столько новых технологий (таких как Kubernetes или Habitat), что легко забыть о тех инструментах, которые тихо и незаметно поддерживают наши системы в промышленной эксплуатации. Одним из таких инструментов, который мы используем в Stripe на протяжении нескольких лет, является Consul. Consul помогает в обнаружении сервисов (то есть помогает находить тысячи работающих у нас серверов с запущенными на них тысячами различных сервисов и сообщать, какие из них доступны для использования). Это эффективное и практичное архитектурное решение не было чем-то совсем новым и особенно заметным, но оно верой и правдой служит делу предоставления надежных сервисов нашим пользователям по всему миру.


В этой статье мы собираемся поговорить о следующем:


  • Что такое обнаружение сервисов и Consul.
  • Как мы управляли рисками, возникавшими при внедрении критически важного программного продукта.
  • Вызовы, с которыми мы столкнулись, и наши ответы на эти вызовы.
Читать дальше →

Автоматизированное тестирование плагинов Redmine

Reading time5 min
Views4.9K

За прошедший год мы разработали четыре плагина для связки Redmine + Telegram (раз, два, три, четыре).


Потихонечку вырабатываются свои Best Practices в отношении них. В этой заметке расскажем о тестировании и интеграции с Travis CI.


Почему решили о тестировании рассказать? Потому что тестирование плагина для Redmine — тот ещё квест.


Читать дальше →

FreePBX: первые шаги по граблям

Reading time6 min
Views135K
Начиная знакомство с FreePBX, даже опытные системные администраторы зачастую допускают одни и те же ошибки, которые способны серьезно испортить настроение и отбить всякое желание продолжать освоение этой системы.


Читать дальше →

Сaжаем на диету индексы PostgreSQL для Zabbix

Reading time4 min
Views11K
Недавно мы перевели Zabbix на работу с БД PostgreSQL. Вместе с переездом на сервер с SSD это дало существенный прирост скорости работы. Также решили проблему с дублирующими хостами в базе данных, bug request. Здесь статья могла бы закончиться, но мы заметили, что Zabbix использует много дискового пространства, поэтому ниже я расскажу, как это вышло. И как мы с этим разобрались.
Читать дальше →

Двухфакторная аутентификация в Redmine

Reading time3 min
Views7.5K

С давних пор для второго шага аутентификации мы использовали одноразовые пароли отправляемые через СМС. Такой функционал появился в Redmine в 2013, когда мы разработали плагин redmine_sms_auth. Об этом мы писали в давней статье.


Но время не стоит на месте. Мы активно внедряем Telegram в бизнес-процессы компании (раз, два, три).


В связи с этим решили сделать аутентификацию через Telegram в Redmine. Заодно с этим переписать старый плагин про СМС и добавить поддержку Google Authenticator.


Далее мы расскажем о том как установить, настроить и использовать этот плагин.

Хочу знать подробности!

Про наш финансовый отдел и собственную CRM

Reading time3 min
Views9.1K

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


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


image


Раньше для автоматизации технических процессов в финансовом отделе мы использовали такую структуру.

Читать дальше →

Gitlab-CI

Reading time5 min
Views117K



Всем привет.
У нас не так много задач, которым необходим полноценный CI. Некоторое время мы использовали в качестве CI-сервиса Jenkins. Там всё довольно очевидно, он прост и гибок в настройке, имеет кучу плагинов, но пару раз мы столкнулись с OOM-убийцами агентов на слабых машинах и решили рассмотреть в качестве CI-сервиса Gitlab CI, потому что мы любим эксперименты и тем более в комментариях к нашей прошлой статье задавали такой вопрос.
Читать дальше →

Вебинар: FreePBX. Офисная телефония: быстрый старт

Reading time1 min
Views7.2K
Centos-admin.ru - делимся опытом!
Очередной вебинар от команды Centos-admin.ru пройдет в ближайший понедельник, в 12-00 по московскому времени. В этот раз мы рассмотрим использование FreePBX для быстрого развертывания системы офисной телефонии. Плюсы и минусы, основные настройки.

Вебинар рассчитан на системных администраторов, еще не имеющих опыта работы с FreePBX.

Прямая ссылка на видео | Cсылка для регистрации

Приглашаем всех желающих 29 августа. Приходите!

Вебинар: знакомство с Zabbix

Reading time1 min
Views8.8K
Centos-admin.ru - делимся опытом! Очередной вебинар от команды Centos-admin.ru пройдет в ближайший четверг, в 18-00 по московскому времени. На этом вебинаре мы расскажем о системе мониторинга Zabbix, подробно опишем процесс установки, покажем способы автоматизации и интеграции с другими программными продуктами на примере Redmine. В конце вебинара будет небольшой рассказ о поиске и устранении неисправностей, а также затронем вопрос конфигурирования Zabbix под большие нагрузки. Вебинар рассчитан на системных администраторов еще не имеющих опыта работы с Zabbix.

Прямая ссылка на видео | Cсылка для регистрации

Приглашаем всех желающих 11 августа. Приходите!

Ansible-container: новый шаг в управление контейнерами

Reading time4 min
Views30K


Недавно разработчики Ansible анонсировали новый проект Ansible Container. Проект нас очень сильно заинтриговал, и мы решили рассмотреть его поближе.
Ansible уже давно стал незаменимым инструментом в вопросах создания, сборки, деплоя образов docker-контейнеров и самих docker-контейнеров, благодаря соответствующему модулю.
Ранее для провиженинга docker-контейнеров с помощью Ansible необходим был запущенный в контейнере sshd, но в версии 2.1 в Ansible был добавлен Docker connection plugin, благодаря которому стало возможно запускать плейбуки не только на физических/виртуальных машинах, но и внутри docker-контейнеров и отпала необходимость использования sshd внутри docker-контейнера.

Читать дальше →

Вебинар: знакомство с Asterisk

Reading time1 min
Views7.2K
Centos-admin.ru - делимся опытом!

Очередной вебинар от команды Centos-admin.ru пройдет в ближайшую пятницу, в 13-00 по московскому времени.

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

Приглашаем всех желающих 22 июля.

Тут прямая ссылка на видео.
А тут ссылка для регистрации.

Приходите!

Ansible: тестируем плейбуки (часть 2)

Reading time3 min
Views9.3K
Итак, в нашей прошлой статье мы рассмотрели как можно быстро и просто настроить среду для тестирования плейбуков и ролей Ansible. Это всё, конечно, очень хорошо и удобно, но почему бы нам не автоматизировать весь процесс внесения изменений в инфраструктуру от написания плейбука до внесения изменений на сервера?

image

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

1. Вся конфигурация хранится в git-репозитории;
2. Jenkins периодически опрашивает git-репозиторий с нашими ролями/плейбуками на предмет внесённых изменений;
3. При появлении изменений Jenkins запускает job с тестированием конфигурации. Тесты состоят из двух этапов:
3.1 Kitchen-CI берёт обновленный код из репозитория, запускает полностью свежий docker-контейнер, заливает в них обновлённые плейбуки из репозитория и запускает Ansible локально, в docker-контейнере;
3.2 Если первый этап прошёл успешно, в docker-контейнере запускается serverspec и проверяет, корректно ли встала новая конфигурация;
4. Если в Kitchen-CI все тесты прошли успешно, то Jenkins инициирует заливку новой конфигурации.

В идеале, весь процесс от написания плейбука и коммита в репозиторий до внесения изменений на сервера, должен проходить без нашего участия. Сильно углубляться в установку Jenkins и подробно расписывать о пайплайнах в данной статье не планируется. Первое делается без проблем из стандартных репозиториев, а второе — сугубо индивидуальное.
Читать дальше →

Asterisk: обратный вызов с использованием AMI

Reading time3 min
Views58K
Asterisk Manager Interface (AMI) – это программный интерфейс который позволяет внешним программам как управлять, так и контролировать систему Asterisk. AMI слушает соединения на TCP порту, по-умолчанию это 5038. Клиентская программа может соединяться с AMI, передавать команды в Asterisk, получать ответ о статусе выполнения команд.
В данном посте мы рассмотрим использование AMI на примере решения определенной задачи: настроить Asterisk на генерацию звонков по заданному url, в котором должны устанавливаться параметры звонка.

Настройка Asterisk AMI



Первое что необходимо сделать, это включить AMI и завести пользователя с помощью которого клиентская программа будет аутентифицироваться:

/etc/asterisk/manager.conf
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0


/etc/asterisk/manager.conf
[c2call]
secret=FrUyHn6FSaX
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.0.0
read=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
write=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate


Для применения изменений выполним reload:

asterisk -rx "module reload manager"


Теперь нам потребуется создать внутренний номер который, собственно, и будем соединять с вызываемым абонентом:

/etc/asterisk/sip.conf
[3200]
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.0.0
secret=3200
dtmfmode=rfc2833
canreinvite=no
context=OUT_IN1
host=dynamic
type=friend
nat=yes
port=5060
qualify=yes
callcounter=yes
faxdetect=no


После создания внутреннего номера, потребуется перечитать конфигурацию Asterisk:
asterisk -rx "sip reload"


На этом настройка Asterisk завершена.

Читать дальше →

Ansible: тестируем плейбуки (часть 1)

Reading time8 min
Views35K


Думаю, любой системный администратор, использующий Ansible для управления своим зоопарком серверов задавался вопросом о проверке корректности описания конфигурации своих серверов. Как же не бояться вносить изменения в конфигурации серверов?
В серии статей, посвященных DevOps, мы расскажем об этом.

Читать дальше →

Information

Rating
Does not participate
Registered
Activity