Мониторинг репликации Postgresql

Встроенная репликация в PostgreSQL 9 реализована благодаря журналу опережающей записи (WAL — Write-Ahead Log) с помощью пересылки XLOG-ов с главного сервера на подчиненный. При настроенной репликации на мастере и слейве запускаются дополнительные процессы: «postgres: wal sender process» и «postgres: wal receiver process», соответственно.
Судить о времени отставания slave-сервера от master-сервера можно сопоставляя текущие позиции записей журнала WAL: текущей на мастере и принятой/примененной на слейве. Их можно получить используя pg_current_xlog_location и pg_last_xlog_receive_location/pg_last_xlog_replay_location, соответственно.

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

yum install bc

Настройка SSL для сайта и получение оценки A+

В предыдущих статьях я рассказывал как настроить SSL для Вашего сайта. В настоящее время появились сервисы которые предоставляют SSL-сертификат бесплатно на один год и даже такие6 которые автоматически его продлевают :) Это очень уобно, но об этом обязательно поговорим позже. В данном примере я опишу ситуацию, когда бесплатный сертификат уже получен, но при тестах выдает невысокую оценку (B).

В данном примере используется веб-сервер Nginx, сами сертификаты хранятся в каталоге /etc/nginx/ssl
Переходим в каталог /etc/nginx/ssl и генерируем ключ ключ Деффи-Хеллмана:

cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 2048; chmod 600 dhparams.pem

Редактируем файл конфигурации nginx, отвечающий за работу Вашего сайта. Важно отметить, что версия Nginx должна быть выше 1.3, иначе OCSP не включится и мы получим оценку (A-).

Утечки памяти в Sphinx

Возникла ситуация, когда sphinx потреблял большое количество памяти и от этого падал. Всё дело в параметре max_matches. Более подробно ниже:

‘max_matches’ – integer (per-query max matches value)

Maximum amount of matches that the daemon keeps in RAM for each index and can return to the client. Default is 1000.

Introduced in order to control and limit RAM usage, max_matches setting defines how much matches will be kept in RAM while searching each index. Every match found will still be processed; but only best N of them will be kept in memory and return to the client in the end. Assume that the index contains 2,000,000 matches for the query. You rarely (if ever) need to retrieve all of them. Rather, you need to scan all of them, but only choose «best» at most, say, 500 by some criteria (ie. sorted by relevance, or price, or anything else), and display those 500 matches to the end user in pages of 20 to 100 matches. And tracking only the best 500 matches is much more RAM and CPU efficient than keeping all 2,000,000 matches, sorting them, and then discarding everything but the first 20 needed to display the search results page. max_matches controls N in that «best N» amount.

This parameter noticeably affects per-query RAM and CPU usage. Values of 1,000 to 10,000 are generally fine, but higher limits must be used with care. Recklessly raising max_matches to 1,000,000 means that searchd will have to allocate and initialize 1-million-entry matches buffer for every query. That will obviously increase per-query RAM usage, and in some cases can also noticeably impact performance.

Скрипт сканирования портов для Linux

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

Для работы скрипта требуется установленная утилита nmap.
Назначение: Данный скрипт сканирует TCP и UDP порты на хостах из списка.

Теперь перейдем к самому скрипту и описанию его работы!

Asterisk настраиваем click2call

Для настройки нам понадобится сначала включить AMI:

/etc/asterisk/manager.conf

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
[muser01]
secret=mypassword
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.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

Применяем изменения:

asterisk -rx "manager reload"

Как проверить корректно ли работает memcached?

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

Вариант №1

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

Trying 10.10.10.1...
Connected to host.com.
Escape character is '^]'.
get stored
END
set stored 1 0 11
Test1 test2
STORED
get stored
VALUE stored 1 11
Test1 test2
END
flush_all
OK
get stored
END
quit
Connection closed by foreign host.

MySQL и тонкости конфигурации InnoDB.

Приходилось ли Вам встречаться с базами данных размером 100G и более? Если да, то Вы наверняка сталкивались с проблемами бэкапа у таких баз, можно ли снять дамп без тормозов и остановки БД? Можно!
Ниже показан рабочий способ:

mysqldump --routines --triggers --no-autocommit --extended-insert --master-data --single-transaction --log-error=./mysqldump.err -B MY_DATABASE | gzip > ./MY_DATABASE.sql.gz

База InnoDB размером 165G под нагрузкой без остановки и тормозов :)
Далее расскажу Вам несколько тонкостей оптимизации InnoDB, которые будут полезны и дадут прирост производительности в умелых руках!

Утилита tune2fs. Отключаем зарезервированное под root пространство

Утилита tune2fs позволяет просматривать и изменять различные параметры файловых систем ext2 / ext3 / ext4.
Для просмотра текущих параметров файловой системы можно использовать tune2fs -l, например:

une2fs -l /dev/mapper/vg0-vg0root
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          7b0dedcb-bf88-4963-b50f-bbc2a2a77b7e
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              121421824
Block count:              485687296
Reserved block count:     24284364
Free blocks:              477747896
Free inodes:              121382784
First block:              0
…

ФС в Linux (ext) имеет 5% резервирование в каждом разделе для нужд root. Это резервированное место не может писать кто-то с UID отличным от root (0). Посмотрим как это выглядит на реальном примере:

Посчитать размер файлов старше 1 года в определенном каталоге

Нетривиальная задача подсчета места решается довольно просто:

find /var/www/site.ru/data/images/ -type f -mtime +365 -ls | awk '{sum = sum+$7 }; END { print sum/1000000 "Мб" }'

198067Мб

Добавляем заголовок HTTPS в Apache

Если SSL настроен на nginx, то до апача обычно не доходит какой протокол сейчас используется клиентом. Чтобы это исправить правим конфиги nginx и apache:

Добавляем в тот location что проксируем на apache:

location / {
  ... skip ..
  proxy_set_header X-Forwarded-Proto $scheme;
}

Также добавляем в конфиг виртуального хоста apache:

<VirtualHost *>
  ... skip ..
  SetEnvIf X-Forwarded-Proto https HTTPS=on
</VirtualHost>

Для apache должен быть загружен модуль setenvif_module

# apachectl -M | grep setenvif
 setenvif_module (shared)