Слава нації
#StandWithUkraine

Роман Теличко

Блог з програмування, оптимізації та адміністрування систем

Amazon. Как пакетно добавить набор IP-адресов в Amazon Security Groups?

// 24 Жовтня, 2012 | 221 переглядів

Под любимым Линуксом это делается довольно просто с помощью их API.

Прежде всего устанавливаем пакет ec2-api-tools:

sudo apt-get install ec2-api-tools

Или если его не существует или хотим всегда иметь самую последнюю версию, добавляем репозиторий:

sudo apt-add-repository ppa:awstools-dev/awstools
sudo apt-get update
sudo apt-get install ec2-api-tools

После чего выполняем относительно простые инструкции по установке и настройке EC2 API Tools для Ubuntu.

После этого всего мы готовы к работе с API Amazon’a.

Создаём Security Group (если ещё её не было):

ec2-create-group ips.port80 -d "IP List @ port 80"
GROUP	sg-XXXXXXXX	ips.port80	IP List @ port 80

И добавляем в неё список IP (при условии что он лежит в файле ~/ips.list, в каждой строке есть отдельный IP или диапазон IP):

for i in `cat ~/ips.list`; do ec2-authorize ips.port80 -P tcp -p 80 -s $i; done
GROUP			ips.port80		
PERMISSION		ips.port80	ALLOWS	tcp	80	80	FROM	CIDR	XXX.XXX.0.0/16	ingress
...

Вот и всё.

Ubuntu. Добавление локали (locale)

// 26 Вересня, 2012 | 1759 переглядів

Список всех установленных локалей можно получить с помощью комманды

locale -a

Список всех доступных к установке локалей можно получить, просмотрев файл /usr/share/i18n/SUPPORTED

less /usr/share/i18n/SUPPORTED

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

sudo locale-gen ru_RU.UTF-8

Всё просто! 😉

PostgreSQL 9.2+ в Ubuntu 12.04+

// 26 Вересня, 2012 | 323 переглядів

PPA с последней версией PostgreSQL устанавливается просто:

sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get update

И потом всё просто:

sudo apt-get install postgresql-9.2

PostgreSQL. Использование индексов

// 16 Вересня, 2012 | 3230 переглядів

Запрос отображает использование индексов. Что позволяет увидеть наиболее часто использованные индексы, а также и наиболее редко (у которых будет index_scans_count = 0).

Учитываются только пользовательские индексы и не учитываются уникальные, т.к. они используются как ограничения (как часть логики хранения данных).

В начале отображаются наиболее часто используемые индексы (отсортированы по колонке index_scans_count).

SELECT
    idstat.relname    				        AS table_name,                  -- имя таблицы
    indexrelname    				        AS index_name,                  -- индекс
    idstat.idx_scan    			                AS index_scans_count,           -- число сканирований по этому индексу
    pg_size_pretty(pg_relation_size(indexrelid))        AS index_size,                  -- размер индекса
    tabstat.idx_scan    			        AS table_reads_index_count,     -- индексных чтений по таблице
    tabstat.seq_scan    			        AS table_reads_seq_count,       -- последовательных чтений по таблице
    tabstat.seq_scan + tabstat.idx_scan    	        AS table_reads_count,           -- чтений по таблице
    n_tup_upd + n_tup_ins + n_tup_del    	        AS table_writes_count,          -- операций записи
    pg_size_pretty(pg_relation_size(idstat.relid))      AS table_size                   -- размер таблицы
FROM
    pg_stat_user_indexes    			        AS idstat
JOIN
    pg_indexes
    ON
    indexrelname = indexname
    AND
    idstat.schemaname = pg_indexes.schemaname
JOIN
    pg_stat_user_tables    			        AS tabstat
    ON
    idstat.relid = tabstat.relid
WHERE
    indexdef !~* 'unique'
ORDER BY
    idstat.idx_scan DESC,
    pg_relation_size(indexrelid) DESC

pgAdmin III v1.16 в Ubuntu 12.04+

// 14 Вересня, 2012 | 1372 переглядів

Установить последний pgAdmin3 в Ubuntu (или в моём случаи, в Xubuntu) достаточно просто.
Нужно просто знать адрес правильный адрес PPA-репозитория 🙂

Делается так:

sudo apt-add-repository ppa:voronov84/andreyv
sudo apt-get update && sudo apt-get upgrade

И ставим, если ещё до этого не был установлен:

sudo apt-get install pgadmin3

Ubuntu. Как через консоль узнать процессор, материнскую плату, видеокарту и прочее железо?

// 18 Липня, 2012 | 19679 переглядів

Это делается довольно просто с помощью утилиты hardinfo.
Ставится просто:

sudo apt-get install hardinfo

Запускается довольно просто:

hardinfo | less

А ещё утилита умеет генерировать отчёт в HTML виде:

hardinfo -f html > hardinfo.report.html

Также подобное действие можно выполнить через lshw.

sudo apt-get install lshw

Смотрим так:

lshw | less

Ею тоже можно создать отчёт в HTML виде:

lshw -html > lshw.report.html

PostgreSQL. Список всех индексов

// 17 Липня, 2012 | 6735 переглядів

Получить в виде списка все индексы довольно просто.
Достаточно выполнить следующее:

SELECT 
        n.nspname               AS "schema",
        c.relname               AS "index"
FROM 
        pg_catalog.pg_class AS c 
LEFT JOIN 
        pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace
WHERE
        c.relkind = 'i'
        AND 
        n.nspname NOT IN ('pg_catalog', 'pg_toast')
ORDER BY
        c.relname ASC

И всё!

Кстати, а вот так можно получить список всех неиспользуемых индексов.

Apt-fast как замена стандартного apt-get (aptitude) для сверхбыстрой загрузки пакетов

// 17 Червня, 2012 | 746 переглядів

Добавляем репозиторий:

sudo add-apt-repository ppa:apt-fast/stable

Ставим:

sudo apt-get update
sudo apt-get install apt-fast axel

Программа попросит при первом запуске открыть /etc/apt-fast.conf и выбрать через что работать: через axel или aria2c.
Лучше через axel, для этого раскомментируем строчку со следующим

_DOWNLOADER='cat /tmp/apt-fast.list | xargs -l1 axel -n ${_MAXNUM} -a' # axel

Далее работаем как с обычным apt-get.
Например:

sudo apt-fast update && sudo apt-fast upgrade

Получить User-Agent из access.log

// 9 Квітня, 2012 | 1107 переглядів

Это делается довольно легко (выведет все уникальные User-Agent из лога):

cat access.log | awk -F'"' '{print $6}' | sort | uniq

Если лог имеет другой формат — заменить $6 на другой порядковый номер столбца.

PostgreSQL. Список всех дат между двумя датами

// 6 Квітня, 2012 | 858 переглядів

Узнаём timestamp от интересуещей даты

SELECT
    extract( 'epoch' from '2012-02-01'::timestamp without time zone  )::integer

(это будет 1325455200)

Используем generate_series()

SELECT
    *
FROM
    (
        SELECT
            date_trunc( 
                'day', 
                    to_timestamp( 
                        generate_series( 1325455200, 1333691315, 80000 ) 
                        ) 
                    )::date AS d
    ) AS s
GROUP BY 
    s.d
ORDER BY
    s.d ASC

В результате получим что-то такое:

2012-01-02
2012-01-03
2012-01-04
2012-01-05
...