Главная

Wednesday, 26 August 2020

Chrome с пустой белой страницей.

Всем привет.

Ко мне обратился пользователь что его web-браузер Google Chrome запускается с полностью пустой белой страницей. Таким образом, Chrome отображает пустые вкладки всех ранее открытых страниц. То есть вкладка на пустой странице не содержит сообщений об ошибках и не дает возможности ничего сделать, кроме как закрыть браузер как приложение в целом.

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

Вот первые три:
1. Отключить аппаратное ускорение.
3. Сбросить браузер.
По всем троим даются указания прохождения по пунктам меню Chrome. Но мы же помним что экран совсем белый! Как снег.

4. Отредактируйте ярлык запуска Google Chrome.
Действительно доступный способ, который реально может помочь. В этих обстоятельствах надо добавить в конце ключик --disable-GPU. Сразу же после удачного запуска следует пройтись по установленным расширениям (chrome://extensions/) и отключить лишние.


5. Переустановите Google Chrome.
Ну это просто суперский способ исправить ошибку. Имеет место быть поэтому оставлю его без комментариев.

Удачи.

Friday, 21 August 2020

Метрики мониторинга.

Всем привет.

Вкратце шпаргалка какие метрики мониторяться и как в инфраструктуре предприятия.



Метрики хоста:
  • CPU
  • Memory
  • Processes
  • Disk
  • Network
Чем мониторим?
  • Агенты мониторинга системы мониторинга:
  • Zabbix-Agent
  • Более универсальные инструменты с плагинами:
  • сollectd
  • telegraf
  • NetData
  • Сервисы cloud-платформы:
  • Stackdriver (GCP)
  • CloudWatch (AWS)
Метрики сервера:
  • CPU
  • RAM
  • Disk
  • Network
  • Security
Чем мониторим?
  • zabbix-agent на сервере + штатные шаблоны Zabbix
  • Prometheus Node exporter
Web-сервер:
  • Статус сервиса веб-сервера
  • Доступность портов
  • RPS (Requests Per Second) 
  • HTTP коды завершения
  • Ошибки веб-сервера
  • SSL сертификаты
  • Время отклика
Чем мониторим?
  • zabbix-agent на сервере + штатные шаблоны Zabbix
  • Simply check с сервера Zabbix
  • Web сценарии с одного из хостов в мониторинге
  • Кастомные пользовательские параметры (UserParameter)
  • Сообщения в логах
Сервер приложений:
  • Статусы сервисов
  • RPS (php, redis, rabbitMQ, прочие)
  • Использование буфера
  • Использование очереди
  • Количество и статус процессов
  • Ошибки сервисов в логах
Чем мониторим?
  • zabbix-agent на сервере + штатные шаблоны Zabbix
  • Simply check с сервера Zabbix
  • Кастомные пользовательские параметры
  • Сообщения в логах
База данных:
  • Cтатус сервиса базы
  • Статус репликации
  • Seconds behind master
  • RPS
  • Объем операций
  • Размеры буферов
  • Аналитика запросов
Чем мониторим?
  • zabbix-agent на сервере + штатные шаблоны Zabbix
  • Кастомные пользовательские параметры
  • Сообщения в логах
Метрики Docker-контейнеров:
  • CPU
  • Memory
  • Network
  • Block I/O
  • Docker Daemon
Чем мониторим?
  • Docker stats
  • cAdvisor
  • Heapster
  • collectd
Метрики сервисов:
  • БД, очереди
  • Load balancer
  • Сервер приложения
  • Сторонние сервисы
  • Все, от чего зависит стабильность работы вашего продукта
Как выбрать что собирать и анализировать?

USE-Method от Brendan Gregg. Больше подходит для выбора инфраструктурных метрик:
  • Utilization (использование), например загрузка диска
  • Saturation (насыщение), например очередь диска
  • Errors (ошибки), например ошибки I/O диска
RED-метод. Больше подходит для выбора метрик приложений и сервисов:
  • Rate - запросы в секунду
  • Errors - ошибок в секунду
  • Duration - время на каждый запрос
Four Golden Signals от Google (принцип  выбора  метрик,  описанный  в
книге Site Reliability Engineering от Google):
  • Latency - время ответа
  • Traffic - частота запросов
  • Errors (ошибки) - частота ошибок
  • Saturation (насыщение) - насколько утилизирован ресурс
Бизнес-метрики:
  • посещения
  • конверсия
  • продажи
  • скачивания приложения
Как мониторим?
  • Кастомные пользовательские параметры
  • Вычисляемые элементы данных.


Thursday, 20 August 2020

Эффективный пользователь в Blogger.

Всем привет.

Google наc порадовал новым видом интерфейса админ-панели Blogger-a. Да, стало выглядеть все красивее и даже в ногу со временем. Если кому не в тему (вот как мне) то можно вернуться на старый вариант. Однако Google предупредил что старый вариант все равно скоро умрет. Поэтому привыкайте к новому. Но за время переключения внешнего вида Google задел еще кое-что.

Например, теперь я при каком-либо изменении в HTML-коде шаблона  блога получаю следующее:
-com.google.ads.syn.auth.caller.AuthenticationException: 
PERMISSION_ERROR: The requested main account is not accessible to the effective user com.google.ads.syn.auth.server.exception.AuthenticationException: PERMISSION_ERROR: The requested main account is not accessible to the effective user.

Что говорит о том что код шаблона может трогать только "эффективный" пользователь, в моем случае это автор рекламного блока AdSense. Поэтому проследите чтобы этот автор был занесен в Администраторы вашего блога.

Как-то так.

Wednesday, 19 August 2020

WebUI для управления Docker.

Всем привет.

Ностальгия по красивому GUI не отпускает даже при работе с Docker. Но оказывается что благодаря инструменту Portainer можно легко управлять и контейнерами (образами, сетями, сервисами и пр.) на локальном или удаленном docker-хосте (в том числе Swarm-кластере).

Еще одна крайне полезная особенность Portainer‘а - поддержка шаблонов приложений (Application Templates), с помощью которых можно в один клик мышью развернуть все необходимые сервисы для WordPress или MySQL. 

Эти и другие возможности инструмента Portainer можно получить без каких-либо настроек с помощью однострочной команды:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

После проделанных действий можно перейти в браузере по адресу http://ip_address:9000, установить пароль администратора и выбрать docker-хост (в нашем примере - локальный), которым будет управлять Portainer.

Tuesday, 18 August 2020

Оптимизация размеров образов Docker.

Всем привет.

Образы Docker могуть быть очень большими. Многие легко превышают 1 Гб в размере. Как они становятся такими? Должны ли они быть такими? Можем ли мы сделать их меньше, не жертвуя функциональностью?

Все дело в слоях. Образ Docker  похож на супер бигмак, где каждый инградиент этажности увеличивает его массу в килобайтах. Концепция слоев затрагивает различные низкоуровневые технические детали о вещах вроде корневой файловой системы (rootfs), механизма копирования при записи (copy-on-write) и каскадно-объединенного монтирования (union mount). Эта азбука достаточно хорошо раскрыта в другом месте, поэтому я не буду пересказывать ее здесь. Для Важным является понимание того, что каждая инструкция в Dockerfile приводит к созданию нового слоя образа. Бутерброд одним словом!

Зная, что образ - это не что иное, как коллекция других образов, можно прийти к очевидному выводу: размер образа равен сумме размеров образов, его составляющих.

Посмотрим на вывод команды docker history imagename:

$ docker history aformat

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT

d1ea947a9058        6 days ago                                                          119MB               merge sha256:f1fe0e102e804d28b6ae83ba4a3d1beb730eaea48aefc5b4510a3e03e5fe1c76 to sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e

<missing>           6 days ago          /bin/sh -c tree -L 1                            0B                  

<missing>           6 days ago          /bin/sh -c echo "******************* Hello w…   0B                  

<missing>           6 days ago          /bin/sh -c rm -rf /var/cache/apk/*              0B                  

<missing>           6 days ago          /bin/sh -c apk add tree                         0B                  

<missing>           6 days ago          /bin/sh -c apk add git && apk add npm && apk…   0B                  

<missing>           10 days ago         /bin/sh -c apk --no-cache add --update bash     0B                  

<missing>           10 days ago         /bin/sh -c #(nop)  MAINTAINER Nyukers <nyuke…   0B                  

<missing>           2 months ago        /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B                  

<missing>           2 months ago        /bin/sh -c #(nop) ADD file:c92c248239f8c7b9b…   5.57MB           

Мы можем увидеть все слои образа aformat вместе с командами, которые привели к их созданию, и их размером.

Что же следует учесть для уменьшения размера образа Docker?

Thursday, 13 August 2020

Клиент командной строки Tower-cli для AWX.

Всем привет.

Как запустить задание, используя только программный интерфейс AWX?

Конечно, можно было бы ограничиться лишь инструментом cURL для выполнения этих и других операций из командной строки по протоколу НТТР, но в Апsible имеется намного более удобный инструмент: Tower-cli.

В отличие от приложения Апsible Тower, клиент командной строки Tower-cli является открытым программным обеспечением и доступен в репозитории GitHub на условиях лицензии АрасНе 2.0 и совместим с AWX.

Чтобы установить Tower-cli, воспользуемся диспетчером пакетов для Руthоп рiр3.

Клиента tower-cli можно установить на уровне системы, если имеются привилегии гооt, или, как в данном случае, для локального пользователя:

sudo pip3 install ansible-tower-cli

Если установка выполняется с привилегиями обычного пользователя, клиент будет установлен в каталог ~/.lосаl/bin/. 

Не забудьте добавить путь ~/.lосаl/bin в переменную окружения РАТН.

Прежде чем взаимодействовать с АРI, нужно настроить параметры учетной записи доступа к AWX:

# tower-cli config host http://192.168.3.151

# tower-cli config username admin

# tower-cli config password pAssw0rd

# tower-cli config verify_ssl False

Проверка конфигурации:

# tower-cli config

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

Клиент tower-cli существенно упрощает эту задачу. Достаточно лишь знать идентификатор или имя шаблона задания, которое требуется запустить. 

Tuesday, 11 August 2020

Защита resolv.conf.

Всем привет.

Я использую Ubuntu 20.04 и вручную прописал свои DNS сервера в /etc/resolv.conf

Но он наглым образом перезаписывается после перезагрузки Ubuntu. Причины этого легко находятся в сети, но самый быстрый способ решить эту проблему это добавить resolvconf:

sudo apt install resolvconf

Итак, resolv.conf перезаписывается, но если вы хотите сохранить конфигурацию resolv.conf после перезагрузки, вам нужно отредактировать теперь кое-что в /etc/resolvconf/resolv.conf.d/*: 

Заносим в head ваши данные:

search mydomain.com

domain mydomain.com

nameserver 192.168.1.83

nameserver 192.168.1.84

options edns0

Заносим в base:  пока оставляю пустым.

Заносим в tail:

nameserver 8.8.8.8

Т.е. в итоге получаем resolv.conf = head + base + tail.

Затем регенерируем новый resolv.conf с помощью resolvconf:

sudo resolvconf -u

sudo dpkg-reconfigure resolvconf

dynamic update - no

systemctl disable systemd-resolved

Перегружаемся и проверяем наш resolv.conf. 

Получилось!


Friday, 7 August 2020

Синхронизация любой папки между OneDrive и Windows.

Всем привет.

Мы в курсе что OneDrive - это бесплатное онлайн-хранилище, которое поставляется вместе с Windows 10 и используется с вашей учетной записью Microsoft. После сохранения файлов в OneDrive вы можете получить к ним доступ с любого ПК, планшета или телефона. 

Однако по умолчанию синхронизация с вашим ПК происходит только через папку "%UserProfile%\OneDrive" Но что делать если я хочу синхронизировать на мое облако другую папку Windows?

Самый простой способ это создать символическую ссылку на другую папку в  "%UserProfile%\OneDrive". Например я хочу чтобы все что попадает в папку Downloads на диске D синхронизировалось с моим OneDrive. Для этого в командной строке нужно ввести  (прав пользователя вполне достаточно):
mklink /j "%UserProfile%\OneDrive\Downloads" "D:\Downloads"
и нажать Enter.

После выполнения команды появится надпись что соединение создано и копия папки Downloads появится в папке OneDrive и все содержимое будет синхронизировано с облачным хранилищем. Т.е. перетечет туда. Если я удаляю что-то из папки Downloads на диске D, оно также удаляется с папки OneDrive, если что-то удаляется с папки Downloads на OneDrive, то он также исчезнет и в D:/Downloads.

Еще одно - используйте поменьше русских букв и пробелов в названии папок. Есть ограничения в 250 символов латынью, а если это кириллица то ограничения в 2 раза меньше, причем в это число входят и названия всех папок по вложенности и название последнего файла.

Удачи.

Wednesday, 5 August 2020

AWX - первый старт.

Всем привет.

Используя время от времени Ansible ссылки из сети тебя перекидывают на AWX. Что за зверь такой?  Если просто то AWX это GUI для Ansible. AWX впервые был представлен в сентябре 2017 года - это open source проект, распространяющийся под лицензией Apache-2.0 и являющийся апстримом для коммерческого проекта Ansible Tower. 

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

По мере масштабирования среды до размеров предприятия то же самое происходит и с операторами Ansible. Когда все те, кто отвечает за исполнение Ansible имеют его установленным на свои собственные машины, причём все они обладают копиями установленных плейбуков, внезапно само управление таким окружением превращается в ночной кошмар! Как вы сможете знать что все применяют самые последние версии плейбуков? Откуда вы узнаете кто что запускал и каков результат? Что если изменения потребуют долгих часов? Можете ли вы передать задания Ansible в команду NOC (Network Operations Center) или это невозможно, так как им потребуется обучение тому как применять Ansible?

AWX ставит своей целью решение всех перечисленных задач, и AWX способен снизить стоимость обучения вашего персонала.

Основные возможности AWX:

  • Интеграция с системами контроля версий (git/mercurial/subversion).
  • Отслеживание статуса выполнения плейбуков в реальном времени.
  • Настройка расписания для автоматического запуска плейбуков.
  • Выполнение нескольких плейбуков в рамках одного workflow.
  • Удаленное выполнение команд без плейбуков (Ansible ad hoc).
  • Поддержка механизма callbackов, позволяющих новым серверам запрашивать конфигурации со своей стороны.
  • Управление Inventory для Ansible, в том числе с возможностью интеграции с платформами AWS/Azure/OpenStack и т.д., а также поддержка собственных скриптов для генерации Dynamic Inventory.
  • Гибкая система разграничения прав доступа. Интеграция с LDAP/SAML/Active Directory и т.д.
  • Встроенная поддержка уведомлений для Email/Slack/PagerDuty/HipChat/MatterMost/IRC.
  • Интеграция с внешними системами агрегации логов: Logstash/Splunk/Loggly/Sumologic.

Рекомендуемые к изменению перед установкой AWX переменные в awx/installer/inventory:

admin_password=password01

-это устанавливаемое по умолчанию значение пароля для пользователя admin - вам он потребуется для самого первого входа в систему, поэтому обеспечьте установку чего- то запоминающегося и безопасного!