Jenkins: your Jenkins data directory is almost full и автоматическая очистка диска
Есть Jenkins, на котором имеется пачка билдов проекта. Спустя какое-то время – появилось сообщение вида: Jenkins: your Jenkins data directory /var/lib/jenkins (aka JENKINS_HOME) is almost full Проверяем диск с помощью ncdu, и находим несколько джоб, которые отжирают много места, например: root@jenkins-production:/data/jenkins# du -h --max-depth 1 jobs/..25G jobs/APITests... Кучу места занимают логи: root@jenkins-production:/data/jenkins# ls -lh /data/jenkins/jobs/APITests/jobs/Projectname/jobs/Stage/jobs/ProjectnameStageAPItests/builds/551/log-rw-r--r-- 1 root root 77M Mar 1 12:49 /data/jenkins/jobs/APITests/jobs/Projectname/jobs/Stage/jobs/ProjectnameStageAPItests/builds/551/log И билдов много, и в каждой хранится такой лог.…
https://rtfm.co.ua/jenkins-your-jenkins-data-directory-is-almost-full-i-avtomaticheskaya-ochistka-diska/
Есть Jenkins, на котором имеется пачка билдов проекта. Спустя какое-то время – появилось сообщение вида: Jenkins: your Jenkins data directory /var/lib/jenkins (aka JENKINS_HOME) is almost full Проверяем диск с помощью ncdu, и находим несколько джоб, которые отжирают много места, например: root@jenkins-production:/data/jenkins# du -h --max-depth 1 jobs/..25G jobs/APITests... Кучу места занимают логи: root@jenkins-production:/data/jenkins# ls -lh /data/jenkins/jobs/APITests/jobs/Projectname/jobs/Stage/jobs/ProjectnameStageAPItests/builds/551/log-rw-r--r-- 1 root root 77M Mar 1 12:49 /data/jenkins/jobs/APITests/jobs/Projectname/jobs/Stage/jobs/ProjectnameStageAPItests/builds/551/log И билдов много, и в каждой хранится такой лог.…
https://rtfm.co.ua/jenkins-your-jenkins-data-directory-is-almost-full-i-avtomaticheskaya-ochistka-diska/
RTFM: Linux, DevOps и системное администрирование
Jenkins: your Jenkins data directory is almost full и автоматическая очистка диска
Решение проблемы "your Jenkins data directory /var/lib/jenkins (aka JENKINS_HOME) is almost full" с помощью автоматического удаления старых билдов.
Redis: репликация, часть 1 – обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis.
Изначально планировался один небольшой пост с примером создания Redis-репликации, но по мере углубления в детали – захотелось описать всё больше и больше, а потому разбил материал на две части. В этой, обзорной – общие сведения, разница между различными типами хранения данных в Redis, примеры топологии. Достаточно кратко, но со ссылками на детальную документацию, плюс ссылки…
https://rtfm.co.ua/redis-replikaciya-chast-1-obzor-replication-vs-sharding-sentinel-vs-cluster-topologiya-redis/
Изначально планировался один небольшой пост с примером создания Redis-репликации, но по мере углубления в детали – захотелось описать всё больше и больше, а потому разбил материал на две части. В этой, обзорной – общие сведения, разница между различными типами хранения данных в Redis, примеры топологии. Достаточно кратко, но со ссылками на детальную документацию, плюс ссылки…
https://rtfm.co.ua/redis-replikaciya-chast-1-obzor-replication-vs-sharding-sentinel-vs-cluster-topologiya-redis/
Redis: репликация, часть 2 – Master-Slave репликация, и Redis Sentinel
Продолжение поста Redis: репликация, часть 1 – обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis. Собственно, вся история началась с того, что мы решили избавиться от memcached. На данный момент у нас на серверах запущены и memcahced, и Redis. И memcached, и Redis работают как standalone приложения на разных сервера, т.е. их инстансы никак…
https://rtfm.co.ua/redis-replikaciya-chast-2-master-slave-replikaciya-i-redis-sentinel/
Продолжение поста Redis: репликация, часть 1 – обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis. Собственно, вся история началась с того, что мы решили избавиться от memcached. На данный момент у нас на серверах запущены и memcahced, и Redis. И memcached, и Redis работают как standalone приложения на разных сервера, т.е. их инстансы никак…
https://rtfm.co.ua/redis-replikaciya-chast-2-master-slave-replikaciya-i-redis-sentinel/
RTFM: Linux, DevOps и системное администрирование | DevOps-инжиниринг и системное администрирование. Случаи из практики.
Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel
Установка и настройка Redis Master-Slave репликации, настройка Redis Sentinel для мониторинга статуса Master-нод. Примеры работы с Redis Sentinel.
Redis: репликация, часть 3 — redis-py и работа с Redis Sentinel из Python
В продолжение постов о настройке и использовании Redis репликации с использованием Redis Sentinel – пример работы из Python. Предыдущие посты серии: Redis: репликация, часть 1 — обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis. Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel Список всех клиентов, в частности Python – redis.io/clients. Тут используем…
https://rtfm.co.ua/redis-replikaciya-chast-3-redis-py-i-rabota-s-redis-sentinel-iz-python/
В продолжение постов о настройке и использовании Redis репликации с использованием Redis Sentinel – пример работы из Python. Предыдущие посты серии: Redis: репликация, часть 1 — обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis. Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel Список всех клиентов, в частности Python – redis.io/clients. Тут используем…
https://rtfm.co.ua/redis-replikaciya-chast-3-redis-py-i-rabota-s-redis-sentinel-iz-python/
JetBrains Upsource: установка и запуск на Linux с NGINX и SSL
Upsource – система от JetBrains для код ревью, который через плагин интегрируется во все IDE от JetBrains. Представляет собой Java-приложение с Apache Cassandra в роли локального хранилища данных и индексов. Минимальные требования к машине, на которой будет запускаться – 8 ГБ памяти, что, впрочем, не удивительно. До 10-ти пользователей – бесплатна. В этом посте –…
https://rtfm.co.ua/jetbrains-upsource-ustanovka-i-zapusk-na-linux-s-nginx-i-ssl/
Upsource – система от JetBrains для код ревью, который через плагин интегрируется во все IDE от JetBrains. Представляет собой Java-приложение с Apache Cassandra в роли локального хранилища данных и индексов. Минимальные требования к машине, на которой будет запускаться – 8 ГБ памяти, что, впрочем, не удивительно. До 10-ти пользователей – бесплатна. В этом посте –…
https://rtfm.co.ua/jetbrains-upsource-ustanovka-i-zapusk-na-linux-s-nginx-i-ssl/
Redis: Can’t open the log file: Read-only file system
Имеется новый сервис Redis, который должен работать параллельно с уже существующим. При его запуске – он сообщает, что Can’t open the log file: Read-only file system – хотя права на /var/log правильные, на сам файл лога – тоже. Причина оказалась достаточно неочевидной. Проблема Полностью ошибка выглядит так: --- Unit redis-cluster.service has begun starting up.Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: *** FATAL CONFIG FILE ERROR ***Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: Reading the configuration file, at line 11Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: >>> ‘logfile /var/log/redis/redis-cluster.log’Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: Can’t open the log file: Read-only file systemApr 03 10:12:28 bttrm-dev-console systemd[1]: redis-cluster.service: Control process exited, code=exited status=1Apr 03 10:12:28 bttrm-dev-console systemd[1]: Failed to start Redis relication cluster node.--- Subject: Unit redis-cluster.service has failed Конфигурация Файл лога указан в настройках ноды…
https://rtfm.co.ua/redis-cant-open-the-log-file-read-only-file-system/
Имеется новый сервис Redis, который должен работать параллельно с уже существующим. При его запуске – он сообщает, что Can’t open the log file: Read-only file system – хотя права на /var/log правильные, на сам файл лога – тоже. Причина оказалась достаточно неочевидной. Проблема Полностью ошибка выглядит так: --- Unit redis-cluster.service has begun starting up.Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: *** FATAL CONFIG FILE ERROR ***Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: Reading the configuration file, at line 11Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: >>> ‘logfile /var/log/redis/redis-cluster.log’Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: Can’t open the log file: Read-only file systemApr 03 10:12:28 bttrm-dev-console systemd[1]: redis-cluster.service: Control process exited, code=exited status=1Apr 03 10:12:28 bttrm-dev-console systemd[1]: Failed to start Redis relication cluster node.--- Subject: Unit redis-cluster.service has failed Конфигурация Файл лога указан в настройках ноды…
https://rtfm.co.ua/redis-cant-open-the-log-file-read-only-file-system/
RTFM: Linux, DevOps и системное администрирование | DevOps-инжиниринг и системное администрирование. Случаи из практики.
Redis: Can’t open the log file: Read-only file system
Ошибка Can't open the log file: Read-only file system при запуске Redis - причина и решение.
Atom: полезные плагины
Давно пользуюсь vim практически для всего, кроме крупных проектов на Python (которые последнее время случаются крайней редко), для которого использую PyCharm. Тот же PyCharm использую при написании JSON-шаблонов для CludFormation (см. плагин aws-cloudformation). Для Go сначала пользовался vim с плагином vim-go, но недавно потрогал Atom – вполне понравился, попробую исопльзовать его. Собственно в этом посте…
https://rtfm.co.ua/atom-poleznye-plaginy/
Давно пользуюсь vim практически для всего, кроме крупных проектов на Python (которые последнее время случаются крайней редко), для которого использую PyCharm. Тот же PyCharm использую при написании JSON-шаблонов для CludFormation (см. плагин aws-cloudformation). Для Go сначала пользовался vim с плагином vim-go, но недавно потрогал Atom – вполне понравился, попробую исопльзовать его. Собственно в этом посте…
https://rtfm.co.ua/atom-poleznye-plaginy/
Ansible: получить IP таргет хоста
Задача – в Ansible получить IP адрес хоста, на котором выполняется задача. Есть два варианта (может и больше), ниже – примеры с обоими. Вариант 1 – hostvars См. документацию тут>>>. Добавим тестовую задачу: - name: Test hosts list debug: msg: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" Запускаем: ...TASK [test : Test hosts list] ****ok: [dev.backend-app1-internal.example.com] => {"msg": "10.0.2.71"}ok: [dev.backend-app2-internal.example.com] => {"msg": "10.0.2.91"}ok: [dev.backend-console-internal.example.com] => {"msg": "10.0.2.104"}ok: [dev.backend-bastion.example.com] => {"msg": "10.0.2.126"}... Вариант 2 – lookup и dig Второй вариант – с…
https://rtfm.co.ua/ansible-poluchit-ip-target-xosta/
Задача – в Ansible получить IP адрес хоста, на котором выполняется задача. Есть два варианта (может и больше), ниже – примеры с обоими. Вариант 1 – hostvars См. документацию тут>>>. Добавим тестовую задачу: - name: Test hosts list debug: msg: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" Запускаем: ...TASK [test : Test hosts list] ****ok: [dev.backend-app1-internal.example.com] => {"msg": "10.0.2.71"}ok: [dev.backend-app2-internal.example.com] => {"msg": "10.0.2.91"}ok: [dev.backend-console-internal.example.com] => {"msg": "10.0.2.104"}ok: [dev.backend-bastion.example.com] => {"msg": "10.0.2.126"}... Вариант 2 – lookup и dig Второй вариант – с…
https://rtfm.co.ua/ansible-poluchit-ip-target-xosta/
Redis: Sentinel – bind 0.0.0.0, проблема с localhost и announce-ip
Изначально в файлах настроек Sentinel я использовал bind 0.0.0.0, что бы инстансы были доступны по внешним IP. Из-за этого при развёртывании системы на реальном окружении возникла проблема при определении мастер-хоста и других инстансов Sentinel. В этом посте – пример такой проблемы и их решение. На самом деле проблем было больше, но получилось воспроизвести только одну,…
https://rtfm.co.ua/redis-sentinel-bind-0-0-0-0-problema-s-localhost-i-announce-ip/
Изначально в файлах настроек Sentinel я использовал bind 0.0.0.0, что бы инстансы были доступны по внешним IP. Из-за этого при развёртывании системы на реальном окружении возникла проблема при определении мастер-хоста и других инстансов Sentinel. В этом посте – пример такой проблемы и их решение. На самом деле проблем было больше, но получилось воспроизвести только одну,…
https://rtfm.co.ua/redis-sentinel-bind-0-0-0-0-problema-s-localhost-i-announce-ip/
RTFM: Linux, DevOps и системное администрирование | DevOps-инжиниринг и системное администрирование. Случаи из практики.
Redis: Sentinel – bind 0.0.0.0, проблема с localhost и announce-ip
Sentinel discovery, сеть и IP-адреса. Примеры конфигураций и решение проблем с определением IP инстансов Sentinel и Redis master ноды.
Go: проверка списка публичных репозиториев в Github и уведомления в Slack. Сравнение списков в Go. Первый опыт с Golang.
Задача – написать утилиту, которая будет запускаться по крону из Jenkins и проверять список публичных репозиториев организации в Github. Затем она должна сравнивать полученный список со списком разрешённых, и если списки не совпадают – слать алерт в Slack. Идея состоит в том, что если девелоперы случайно создадут новый публичный репозиторий, или сменят тип существующего с…
https://rtfm.co.ua/go-proverka-spiska-publichnyx-repozitoriev-v-github-i-uvedomleniya-v-slack-sravnenie-spiskov-v-go-pervyj-opyt-s-golang/
Задача – написать утилиту, которая будет запускаться по крону из Jenkins и проверять список публичных репозиториев организации в Github. Затем она должна сравнивать полученный список со списком разрешённых, и если списки не совпадают – слать алерт в Slack. Идея состоит в том, что если девелоперы случайно создадут новый публичный репозиторий, или сменят тип существующего с…
https://rtfm.co.ua/go-proverka-spiska-publichnyx-repozitoriev-v-github-i-uvedomleniya-v-slack-sravnenie-spiskov-v-go-pervyj-opyt-s-golang/
RTFM: Linux, DevOps и системное администрирование
Go: проверка списка публичных репозиториев в Github и уведомления в Slack. Сравнение списков в Go. Первый опыт с Golang.
Процесс написания утилиты на Go для проверки списка публичных репозиториев в Github с уведомлениями в Slack. Сравнение списков в Go.
Arch Linux: Albion Online – Unable to preload the following plugins: libSDL2-2.0.so.0
Решил поиграться в Albion Online. Она нормально запускается из Steam, но я её покупал раньше (а сейчас она вообще Free to Play), со стартовым пакетом, и с той учёткой нельзя залогинится в игру, скачанную через Steam. Окей – загружаем отдельный клиент с сайта https://albiononline.com/ru/download, запускаем, и: 17:55:10 [setevoy@setevoy-arch-pc ~/Games/AlbionOnline]./Albion-Online...Found path: /home/setevoy/Games/AlbionOnline/game_x64/Albion-OnlineMono path[0] = '/home/setevoy/Games/AlbionOnline/game_x64/Albion-Online_Data/Managed'Mono config path = '/home/setevoy/Games/AlbionOnline/game_x64/Albion-Online_Data/Mono/etc'Preloaded 'ScreenSelector.so'Preloaded 'libAkSoundEngine.so'Preloaded 'libeasyanticheat.so'Unable to preload the following plugins:libSDL2-2.0.so.0 Файл библиотеки libSDL2-2.0.so.0 есть в Steam – /home/setevoy/.local/share/Steam/ubuntu12_64/libSDL2-2.0.so.0,…
https://rtfm.co.ua/arch-linux-albion-online-unable-to-preload-the-following-plugins-libsdl2-2-0-so-0/
Решил поиграться в Albion Online. Она нормально запускается из Steam, но я её покупал раньше (а сейчас она вообще Free to Play), со стартовым пакетом, и с той учёткой нельзя залогинится в игру, скачанную через Steam. Окей – загружаем отдельный клиент с сайта https://albiononline.com/ru/download, запускаем, и: 17:55:10 [setevoy@setevoy-arch-pc ~/Games/AlbionOnline]./Albion-Online...Found path: /home/setevoy/Games/AlbionOnline/game_x64/Albion-OnlineMono path[0] = '/home/setevoy/Games/AlbionOnline/game_x64/Albion-Online_Data/Managed'Mono config path = '/home/setevoy/Games/AlbionOnline/game_x64/Albion-Online_Data/Mono/etc'Preloaded 'ScreenSelector.so'Preloaded 'libAkSoundEngine.so'Preloaded 'libeasyanticheat.so'Unable to preload the following plugins:libSDL2-2.0.so.0 Файл библиотеки libSDL2-2.0.so.0 есть в Steam – /home/setevoy/.local/share/Steam/ubuntu12_64/libSDL2-2.0.so.0,…
https://rtfm.co.ua/arch-linux-albion-online-unable-to-preload-the-following-plugins-libsdl2-2-0-so-0/
Albion Online | The Fantasy Sandbox MMORPG
Forge your own path in this sandbox MMORPG. Craft, trade, conquer, and leave your mark on the world of Albion.
Redis: репликация, часть 4 – написание Ansible роли
В продолжение постов о создании Redis репликации и использования Redis Sentinel для его мониторинга. Предыдущие части: Redis: репликация, часть 1 — обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel Redis: репликация, часть 3 — redis-py и работа с Redis Sentinel из Python Следующая задача…
https://rtfm.co.ua/redis-replikaciya-chast-4-napisanie-ansible-roli/
В продолжение постов о создании Redis репликации и использования Redis Sentinel для его мониторинга. Предыдущие части: Redis: репликация, часть 1 — обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel Redis: репликация, часть 3 — redis-py и работа с Redis Sentinel из Python Следующая задача…
https://rtfm.co.ua/redis-replikaciya-chast-4-napisanie-ansible-roli/
RTFM: Linux, DevOps и системное администрирование | DevOps-инжиниринг и системное администрирование. Случаи из практики.
Redis: репликация, часть 4 – написание Ansible роли
Пошаговое описание написания Ansible роли для Redis-репликации с мастером и двумя слейвами, плюс Redis Sentinel для мониторинга и восстановления репликации.
Jenkins: проверка публичных репозиториев Github-организации
Продолжаем внедрение проверки списка публичных репозиториев организации. Напомню: идея состоит в том, что бы если кто-то из девелоперов случайно расшарит приватный репозиторий, или создаст новый репозиторий не приватным, а публичным – получить об этом уведомление в Slack. Написание самой утилиты на Go есть в посте Go: проверка списка публичных репозиториев в Github и уведомления в…
https://rtfm.co.ua/jenkins-proverka-publichnyx-repozitoriev-github-organizacii/
Продолжаем внедрение проверки списка публичных репозиториев организации. Напомню: идея состоит в том, что бы если кто-то из девелоперов случайно расшарит приватный репозиторий, или создаст новый репозиторий не приватным, а публичным – получить об этом уведомление в Slack. Написание самой утилиты на Go есть в посте Go: проверка списка публичных репозиториев в Github и уведомления в…
https://rtfm.co.ua/jenkins-proverka-publichnyx-repozitoriev-github-organizacii/
RTFM: Linux, DevOps и системное администрирование
Jenkins: проверка публичных репозиториев Github-организации
Проверка списка публичных репозиториев на Go: Docker-файл для Go, Jenkins джоба для его запуска.
Authy: настройка Multi-Factor Authentication для Github и AWS
Уверен, что необходмость использования MFA – Multi-Factor Authentication сегодня очевидна для всех. Для 2FA (2-Factor Authentication) наиболее используемым является TOTP – Time-based One-time Password, когда наряду с паролем для авторизации требуется ввести временный код, генерируемый устройством или утилитой. Самым известным является Google Authenticator, но кроме него существует множество других реализаций. Искал на днях решение для…
https://rtfm.co.ua/authy-nastrojka-multi-factor-authentication-dlya-github-i-aws/
Уверен, что необходмость использования MFA – Multi-Factor Authentication сегодня очевидна для всех. Для 2FA (2-Factor Authentication) наиболее используемым является TOTP – Time-based One-time Password, когда наряду с паролем для авторизации требуется ввести временный код, генерируемый устройством или утилитой. Самым известным является Google Authenticator, но кроме него существует множество других реализаций. Искал на днях решение для…
https://rtfm.co.ua/authy-nastrojka-multi-factor-authentication-dlya-github-i-aws/
Golang: указатели – подробный разбор
Я уже когда-то добавлял пост про указатели в C – C: указатели — подробный разбор, но было это достаточно давно, да и Си всё-таки не совсем Go, хотя в плане указателей разницы нет. Тем не менее – рассмотрим указатели в отдельном посте. Что такое указатель? Кратко, указатель – это переменная, которая хранит адрес памяти другой…
https://rtfm.co.ua/golang-ukazateli-podrobnyj-razbor/
Я уже когда-то добавлял пост про указатели в C – C: указатели — подробный разбор, но было это достаточно давно, да и Си всё-таки не совсем Go, хотя в плане указателей разницы нет. Тем не менее – рассмотрим указатели в отдельном посте. Что такое указатель? Кратко, указатель – это переменная, которая хранит адрес памяти другой…
https://rtfm.co.ua/golang-ukazateli-podrobnyj-razbor/
Linux: GPG-ключи, менеджер паролей pass и импорт из KeePass
pass – менеджер паролей для Linux/UNIX, наверно один из старейших. Хранит данные в древовидной структуре каталогов и файлов, а сами файлы с секретами шифрует с помощью GPG-ключа. В Arch Linux есть из коробки, в Debian можно установить с помощь apt из дефолтных репозиториев: sudo apt install pass В macOS – с помощью Homebrew: brew install pass Хотя я сомневаюсь, что…
https://rtfm.co.ua/linux-gpg-klyuchi-menedzher-parolej-pass-i-import-iz-keepass/
pass – менеджер паролей для Linux/UNIX, наверно один из старейших. Хранит данные в древовидной структуре каталогов и файлов, а сами файлы с секретами шифрует с помощью GPG-ключа. В Arch Linux есть из коробки, в Debian можно установить с помощь apt из дефолтных репозиториев: sudo apt install pass В macOS – с помощью Homebrew: brew install pass Хотя я сомневаюсь, что…
https://rtfm.co.ua/linux-gpg-klyuchi-menedzher-parolej-pass-i-import-iz-keepass/
Bitwarden: менеджер паролей организации – установка self-hosted версии на AWS EC2
Мы рассматриваем Bitwarden как менеджер паролей для проекта, основная цель которого – разделение доступа к различным секретам по ролям и/или ACL. Т.е. Pass и/или KeePass – это хорошо для одного пользователя, но у них нет главного – нормального веб-интерфейса, и разделения доступа к секретам для пользователей, а всякие 1Password/LastPass не имеют возможности установки на свой…
https://rtfm.co.ua/bitwarden-menedzher-parolej-organizacii-ustanovka-self-hosted-versii-na-aws-ec2/
Мы рассматриваем Bitwarden как менеджер паролей для проекта, основная цель которого – разделение доступа к различным секретам по ролям и/или ACL. Т.е. Pass и/или KeePass – это хорошо для одного пользователя, но у них нет главного – нормального веб-интерфейса, и разделения доступа к секретам для пользователей, а всякие 1Password/LastPass не имеют возможности установки на свой…
https://rtfm.co.ua/bitwarden-menedzher-parolej-organizacii-ustanovka-self-hosted-versii-na-aws-ec2/
AWS: MariaDB RDS – kill: You are not owner of thread
Имеется AWS RDS с MariaDB. Ошибка и решение не специфичны ни для AWS RDS, ни для MariaDB. При попытке убить процесс – RDS сообщает, что: MariaDB [(none)]> kill 759;ERROR 1095 (HY000): You are not owner of thread 759 Решение – использовать процедуру mysql.rds_kill(): MariaDB [(none)]> SHOW CREATE PROCEDURE mysql.rds_killG*************************** 1. row ***************************Procedure: rds_killsql_mode: NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONCreate Procedure: CREATE DEFINER=`rdsadmin`@`localhost` PROCEDURE `rds_kill`(IN thread BIGINT)READS SQL DATADETERMINISTICBEGINDECLARE l_user varchar(16);DECLARE l_host varchar(64);DECLARE foo varchar(255);SELECT user, host INTO l_user, l_hostFROM information_schema.processlistWHERE id = thread;IF l_user = "rdsadmin" and l_host like "localhost%" THENselect `ERROR (RDS): CANNOT KILL RDSADMIN SESSION` into foo;ELSEIF l_user = "rdsrepladmin" THENselect `ERROR (RDS): CANNOT KILL RDSREPLADMIN SESSION` into foo;ELSEKILL thread;END IF;END Вызываем её: MariaDB [(none)]> CALL mysql.rds_kill(761);Query OK, 0 rows affected (0.00 sec) Для Azure MySQL имеется аналогичная процедура mysql.az_kill(). Готово.
https://rtfm.co.ua/aws-mariadb-rds-kill-you-are-not-owner-of-thread/
Имеется AWS RDS с MariaDB. Ошибка и решение не специфичны ни для AWS RDS, ни для MariaDB. При попытке убить процесс – RDS сообщает, что: MariaDB [(none)]> kill 759;ERROR 1095 (HY000): You are not owner of thread 759 Решение – использовать процедуру mysql.rds_kill(): MariaDB [(none)]> SHOW CREATE PROCEDURE mysql.rds_killG*************************** 1. row ***************************Procedure: rds_killsql_mode: NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONCreate Procedure: CREATE DEFINER=`rdsadmin`@`localhost` PROCEDURE `rds_kill`(IN thread BIGINT)READS SQL DATADETERMINISTICBEGINDECLARE l_user varchar(16);DECLARE l_host varchar(64);DECLARE foo varchar(255);SELECT user, host INTO l_user, l_hostFROM information_schema.processlistWHERE id = thread;IF l_user = "rdsadmin" and l_host like "localhost%" THENselect `ERROR (RDS): CANNOT KILL RDSADMIN SESSION` into foo;ELSEIF l_user = "rdsrepladmin" THENselect `ERROR (RDS): CANNOT KILL RDSREPLADMIN SESSION` into foo;ELSEKILL thread;END IF;END Вызываем её: MariaDB [(none)]> CALL mysql.rds_kill(761);Query OK, 0 rows affected (0.00 sec) Для Azure MySQL имеется аналогичная процедура mysql.az_kill(). Готово.
https://rtfm.co.ua/aws-mariadb-rds-kill-you-are-not-owner-of-thread/
RTFM: Linux, DevOps и системное администрирование | DevOps-инжиниринг и системное администрирование. Случаи из практики.
AWS: MariaDB RDS — kill: You are not owner of thread
Решение ошибки "You are not owner of thread" в AWS RDS MariaDB при вызове kill
AWS: VPC peering DNS resolution и настройки DNS для OpenVPN AS
Имеется VPC с OpenVPN. Эта VPC через VPC Peering объединена с другими VPC в нашем AWS-аккаунте. Проблема в том, что для разрешения DNS имён на приватные, а не публичные IP, сейчас используется dnsmasq на хосте с VPN-сервером, для которого создан файл /etc/dnsmasq.hosts, в котором вручную приходится вносить приватные IP для доменов. Подробнее см. в посте…
https://rtfm.co.ua/aws-vpc-peering-dns-resolution-i-nastrojki-dns-dlya-openvpn-as/
Имеется VPC с OpenVPN. Эта VPC через VPC Peering объединена с другими VPC в нашем AWS-аккаунте. Проблема в том, что для разрешения DNS имён на приватные, а не публичные IP, сейчас используется dnsmasq на хосте с VPN-сервером, для которого создан файл /etc/dnsmasq.hosts, в котором вручную приходится вносить приватные IP для доменов. Подробнее см. в посте…
https://rtfm.co.ua/aws-vpc-peering-dns-resolution-i-nastrojki-dns-dlya-openvpn-as/
Sentry: запуск self-hosted версии системы мониторинга ошибок на AWS EC2
Для проекта мы пользовались Cloud-based версией Sentry, но в один прекрасный день исчерпали лимит на отправку сообщений, и бекенд-команда, по сути, осталась без мониторинга. Давно собирались запустить Sentry на своём сервере, появился повод. В посте описывается запуск Sentry с Docker Compose, настройка почты и пример перехвата ошибок в Python. Используем репозиторий Sentry. Запускаем AWS EC2,…
https://rtfm.co.ua/sentry-zapusk-self-hosted-versii-sistemy-monitoringa-oshibok-na-aws-ec2/
Для проекта мы пользовались Cloud-based версией Sentry, но в один прекрасный день исчерпали лимит на отправку сообщений, и бекенд-команда, по сути, осталась без мониторинга. Давно собирались запустить Sentry на своём сервере, появился повод. В посте описывается запуск Sentry с Docker Compose, настройка почты и пример перехвата ошибок в Python. Используем репозиторий Sentry. Запускаем AWS EC2,…
https://rtfm.co.ua/sentry-zapusk-self-hosted-versii-sistemy-monitoringa-oshibok-na-aws-ec2/
Debian: автоматические обновления с помощью unattended-upgrades и отправка почты через AWS SES
Пакет unattended-upgrades выполняет автоматическую установку обновлений на Debian/Ubuntu. Представляет собой Python-скрипт (1500 строк), расположенный в /usr/bin/unattended-upgrade (при этом /usr/bin/unattended-upgrades является симлинком на /usr/bin/unattended-upgrade). Аналог для CentsOS/RHEL – yum-cron. Устанавливаем: sudo apt -y install unattended-upgrades Основной файл настроек – /etc/apt/apt.conf.d/50unattended-upgrades, в нём настраиваются тип обновлений, отправка почты и прочее. Настройки самих обновлений выполняются в файле /etc/apt/apt.conf.d/20auto-upgrades, который можно создать вручную,…
https://rtfm.co.ua/debian-avtomaticheskie-obnovleniya-s-pomoshhyu-unattended-upgrades-i-otpravka-pochty-cherez-aws-ses/
Пакет unattended-upgrades выполняет автоматическую установку обновлений на Debian/Ubuntu. Представляет собой Python-скрипт (1500 строк), расположенный в /usr/bin/unattended-upgrade (при этом /usr/bin/unattended-upgrades является симлинком на /usr/bin/unattended-upgrade). Аналог для CentsOS/RHEL – yum-cron. Устанавливаем: sudo apt -y install unattended-upgrades Основной файл настроек – /etc/apt/apt.conf.d/50unattended-upgrades, в нём настраиваются тип обновлений, отправка почты и прочее. Настройки самих обновлений выполняются в файле /etc/apt/apt.conf.d/20auto-upgrades, который можно создать вручную,…
https://rtfm.co.ua/debian-avtomaticheskie-obnovleniya-s-pomoshhyu-unattended-upgrades-i-otpravka-pochty-cherez-aws-ses/