вторник, 8 февраля 2022 г.

Замена для elasticsearch

 Как мне стало известно, эластик для включения SSO хочет денег (доступно только на ОЧЕНЬ платных тарифах), плюс всё больше добавляет телеметрии. И как мне сказали, с версии 7.12 убран функционал плагинов так, что сломалось многое, включая сторонние реализации SSO. 

И тут вспомнился скандал что амазон делал свои патчи, что очень не нравилось эластику. Очень быстро нашлось

https://www.infoq.com/news/2021/04/amazon-opensearch/

https://venturebeat.com/2021/07/13/amazons-elasticsearch-fork-opensearch-hits-prime-time/

Бонусом оказывается эластик стал менять лицензии на закрытые. "Жадность фраера сгубила". И теперь есть настоящий, вменяемый форк, с правильной версии, с правильными лицензиями, без лишней телеметрии и прочего жадного мусора.

Впрочем, не ёлкой единой. И если у logstash существует тьма замен (filebeat, journalbeat, fluentbit/fluentd, итд), то с эластиком сложнее. Хотя "слабое звено" в данном случае не эластик а кибана и нужно искать замену ей.

Использование Clickhouse в качестве замены ELK, Big Query и TimescaleDB

Чем заменить ELK для просмотра логов?


https://aws.amazon.com/ru/blogs/opensource/introducing-opensearch/

пятница, 5 ноября 2021 г.

Prometheus mysqld_exporter

https://grafana.com/oss/prometheus/exporters/mysql-exporter/?tab=installation

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

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
tar -zxvf mysqld_exporter*

воскресенье, 31 октября 2021 г.

oracle cloud + kubernetes

https://dragonflybsd.blogspot.com/2021/09/always-free-oracle-cloud.html


 Есть у оракла облако, и весьма интересно оно тем, что там можно получить 2 машинки по 1 гигу рам + 1 ядро, а также есть arm-based машины, зовётся Ampere, и там уже суммарно дают 4 ядра и 24 гига рам, то есть можно сделать хоть 1-1 (4 шт, дальше упрёмся в нехватку ядер), хоть 2-12+2-12, хоть 1 машину на все доступные ресурсы. Итого можно сделать от 1 до 4 виртуалок на арме + 2 на x86. Правда, есть нюансы с наличием, мне только через 2 недели повезло поймать завоз нового железа.

Итак, штатно идёт oracle linux, который по сути есть центос, поэтому можно взять инструкцию под кубер для центоси, но есть нюансы -- архитектура там всё-таки другая...

$ uname -i
aarch64

Так что, если есть желание разобраться, сначала читаем "что такое кубер"

И офсайт, в том числе по установке

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

Впрочем, есть автоустановка через kubespray

https://kubernetes.io/docs/setup/production-environment/tools/kubespray/

потом про кубер на арме, например на raspberry pi

https://habr.com/ru/company/flant/blog/435526/

https://habr.com/ru/company/skillfactory/blog/553212/

Читать интересно в том числе потому, что там есть и про диагностику, и более глубокое понимание системы.

Ну и обязательно для себя выбрать - k8s, MicroK8s, k3s, minicube


https://docs.oracle.com/en/operating-systems/oracle-linux/kubernetes/

суббота, 23 октября 2021 г.

Бэкапы mysql в 2021

 Кроме штатно mysqldump, который лочит таблицы, что вызывает в работе прода, есть весьма известный percona xtrabackup и сильно менее известный mariabackup

Отличия 2 утилит в том, что mariabackup это форк от xtrabackup, но там нужна целая матрица совместимостей -- тут можно только одним, там только другим, и между собой они совместимы не полностью. НО. Даже xtrabackup есть 2.4 и 8.0, и они тоже применимы в своих случаях! То есть 8.0 это только для mysql 8.0, для всех других версий ставить нужно строго 2.4.

Но и это не всё. mariabackup - судя по их сайту минимальная версия 10.2

The following MariaDB versions are currently supported:

mariadb-10.2

mariadb-10.3

mariadb-10.4

mariadb-10.5

Про xtrabackup можно почитать например это

https://habr.com/ru/post/520458/

Но сам бэкап ещё только пол дела, часто нужна информация о позиции в бинлоге (для поднятия слейва). Но и тут есть помощь, см

https://www.percona.com/doc/percona-xtrabackup/2.3/howtos/setting_up_replication.html

Ну и ещё чуть интересных ссылок

https://serveradmin.ru/polnyj-i-inkrementnyj-backup-mysql/

https://itc-life.ru/nastrojka-replikacii-mysql-s-pomoshhyu-xtrabackup-utility-percona/

https://minervadb.com/index.php/setup-mysql-slave-replication-with-percona-xtrabackup/

четверг, 14 октября 2021 г.

wscat vs websocat?

 Есть 2 утилиты для работы с ws

https://www.npmjs.com/package/wscat

https://github.com/vi/websocat

Первая ставится через npm, вторую можно просто скачать 1 файлом. А вот есть ли принципиальная разница?..

воскресенье, 3 октября 2021 г.

Некоторые особенности zfs

https://jrs-s.net/2017/03/15/zfs-clones-probably-not-what-you-really-want/

А всего-лишь нужно легковесное копирование, которое "поблочный клон данных и метаданных". У нас же CoW, там штатно используются "хардлинки" внутри фс, на тех же снапшотах. В лине реализуется cp --reflink, говорят btrfs умеет, а zfs - нет.

Костыль:

https://manpages.debian.org/testing/zfsutils-linux/zfs-promote.8.en.html

воскресенье, 26 сентября 2021 г.

terraform+aws, первые шаги

 Установка: если раньше надо было качать архивы и распаковывать, то уже (давно) есть фирменные репы, например 

https://www.terraform.io/docs/cli/install/apt.html

Дальше есть видео на офсайте

https://learn.hashicorp.com/tutorials/terraform/aws-build

В частности, надо поставить aws cli и получить Access Key (нужные линки под видео)

Дальше описываем provider и resource. При этом даже офдока создаёт путаницу, где описан в первом варианте единственный блок

module "ec2_instance" {

(под terraform >= 0.13.1)
Хотя если читать дальше, что это вроде как "наследовано" и классическая схема с resource работать будет ровно также.

После установки и запуска базового примера крайне советую смотреть лист от adv-it, там очень многое рассказано.


Далее, на одном из сайтов из топ-5 гугла есть такое описание ресурса
public_key = "${file("terraform-demo.pub")}"
но уже с 0.11 оно устарело:
Terraform 0.11 and earlier required all non-constant expressions to be
provided via interpolation syntax, but this pattern is now deprecated. To
silence this warning, remove the "${ sequence from the start and the }"
sequence from the end of this expression, leaving just the inner expression.

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

среда, 8 сентября 2021 г.

How to collect and manage all of your multi-line logs

https://www.datadoghq.com/blog/multiline-logging-guide/

Рассматривается в контексте elasticsearch, но применимо к любым обработчикам.

Вкратце: при выводе ошибки в несколько строк, их неудобно обрабатывать. Поэтому нужно или перейти на формат json, или применить "log shipper" -- парсеры, которые умеют склеивать сообщения в одно.

logstash, rsyslog, fluentd, syslog-ng, nxlog, datadog

 

понедельник, 6 сентября 2021 г.

Always Free oracle cloud

 Штатно оракл даёт 2 машины формата амазона t2.micro, а именно 2 машины по 1 ядру и 512 мб рам. А также - машины на базе арма с лимитом 4 ядра, 24 гиг рамы, то есть можно создать от 1 до 4 серверов (упираемся именно в ядра, потому что можно создать машину формата 1 ядро, 1 гиг рамы)

Но косяк в том, что услуга востребована и часто машин просто нет, поэтому надо изучать oracle CLI и регистрировать машины через крон.

https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm


Получаем бесплатные сервера в Oracle Cloud Free Tier

Oracle Cloud: PHP скрипт, когда сильно хочется бесплатный VPS 4 ядра ARM/24ГБ памяти

Создаём мини PHP SDK для подписи запросов к Oracle Cloud Infrastructure API

https://docs.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm

Oracle Cloud: бесплатный VPS 4 ядра ARM/24ГБ памяти: решаем проблему большого спроса (OCI CLI)

https://blogs.oracle.com/cloud-infrastructure/post/moving-to-ampere-a1-compute-instances-on-oracle-cloud-infrastructure-oci


суббота, 4 сентября 2021 г.

Сломанная ubuntu 20.04 (LTS)

https://serverfault.com/questions/1041031/nginx-sometimes-gets-killed-after-reloading-it-using-systemd

https://bugs.launchpad.net/ubuntu/+source/perl/+bug/1897561/

Короче, если ставим nginx-extras то ставится бажный перл

Быстрофикс: удаляем /etc/nginx/modules-enabled/50-mod-http-perl.conf

Проблема в том, что баге уже год, но "дебиан стабилен" (ubuntu - debian based), так что и в багах он тоже стабилен...

вторник, 31 августа 2021 г.

Дроп базы postgesql

Первым делом смотрим базы

\l

!!! и выбираем базу

\c our_database

Ну а теперь удаляем 

DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
 

If you are using PostgreSQL 9.3 or greater, you may also need to restore the default grants.

GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;

https://stackoverflow.com/questions/3327312/how-can-i-drop-all-the-tables-in-a-postgresql-database/13823560#13823560

Если не выбрать базу - удалим вообще всю информацию...

Масштабируем / без LVM

 Взяли сервер в gcore, а там / оказался всего 3гб по умолчанию. Увеличили в панели до 10, а дальше -- всего 2 команды

growpart /dev/sda 1

resize2fs /dev/sda1

Всё, у нас в системе 10 гиг.

среда, 21 июля 2021 г.

ansible, vault, strings

 Есть удобная утилитка ansible-vault, но она шифрует сразу весь файл. Если это файл с переменными - удобнее когда шифрованы только значения ключей, в том числе при контроле гитом - любое изменение локализуется легко, в случае волта меняется весь файл.

Дешифрование строки

Вот с расшифровкой такого файла беда, ansible-vault уже не понимает что от него хотят (будет ERROR! input is not vault encrypted data. (file) is not a vault encrypted file for (file)), поэтому есть несколько вариантов посмотреть:

1) копируем строку после !vault в файл и далее ansible-vault view ...

2) через дешифровальную буку

   - hosts: localhost

     tasks:

       - debug:

           msg: "{{ secret_value }}"

3) через ansible -m debug, но оно работало до 2.8, там синтаксис будет такой

ansible localhost -m debug -a var="some_var" -e "@file.yml" --ask-vault-pass

Вместо ask можно использовать --vault-password-file (file)

Шифрование строки

А как же зашифровать эту строку?

ansible-vault encrypt_string --ask-vault-pass --stdin-name some_var

спросит два раза пароль волта. 

!!! Потом вводим значение и не нажимая энтер нажимаем два раза ctrl-d

вторник, 13 июля 2021 г.

postgres, расширенный вывод

 Иногда бывает нужно вывести записи как в mysql \G, тут для этого есть тоже команда

\x
select * from sometable;

Вариант 2, с переключением формата

select * from users \x\g\x

И третий, выводить всегда в расширенном виде, даже если уже сделано \x

select * from sometable \gx

https://serverfault.com/questions/34741/postgres-equivalent-to-mysqls-g