Как стать автором
Обновить
52
0
SkazochNik @SkazochNik

Системный администратор Linux

Отправить сообщение

Катится колобок, навстречу ему заяц.
Заяц говорит: колобок, я тебя съем.
А колобок отвечает: я не колобок, а ёжик из Чернобыля, меня облучили
Xray и отправили VLESS

Писал Алисе в частном порядке, напишу и тут. :)

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

Я бы при решении этой задачи всё-таки бы взял две утилиты, решающие каждая свою задачу, например Jaeger+Prometheus. Потому что тот же алертинг в ELK - это действительно ад и боль. APDEX на стороне Прометея считается без проблем, вот например: https://prometheus.io/docs/practices/histograms/#apdex-score

Рассказываю, свежий взгляд (прибыл неделю назад).

Компанию, где я работаю, американская, но есть юрлицо в Сербии, дали на выбор несколько стран для "эвакуации", большинство из которых - имеют какую-то номадскую визу, типа Армении, Грузии, Турции и пр. То есть в ту же Грузию можно приехать, открыть ИП, счёт в банке, и снова получать $ переводы. Я тогда рассудил: всё больше случаев, что россиянам в этих странах отказывают в открытии счёта, а в Сербии есть моя компания, надёжнее, и согласился. Путь длинной в неделю, самолёты в России, которые теперь вместо 2-х часов летят 6, время вылета, которое могут просто так поменять, обыск на границе - отдельная история, с Сербией не связана. Выезд был крайне спешным, ответы адвокатов - с задержками, поэтому все нюансы (насколько Сербия - страна бюрократии) я узнал уже здесь на месте.

Три этапа оформления:
1. Получив белый картон (критически важно!) открыть ИП и счет в банке (пока что личный). Это, вроде как, легко, и занимает дней 5. Но безумие Сербских законов в том, что работать вы при этом не можете))
2. Получить разрешение на временное пребывание. Обычно, на год, но могут дать меньше, или вообще отказать без объяснения причин. И ни моя компания, ни нанятые адвокаты тут не помогут. Занимает 30 дней.
3. Получить разрешение на работу. Еще 30 дней.

После этих 2-3 месяцев можно начать получать переводы. Делать это после первого шага - наверное, можно, но это серая зона закона. Вот и получается, что те из моих коллег, кто рванул в Грузию - уже с рабочими картами, а у тех, кто как я, в Сербии - неопределенность.

Про бытовые моменты, что везде курят - да, в ресторане не посидеть, но есть доставка. Все приложения по заказу еды и такси - крайне простые, но хотя бы работают. Пока нет карт, за всё приходится платить налом. Из-за русского нашествия квартиры взлетели в цене, уходят за день, найти очень сложно, но возможно. Если вы с семьей, т.е. нужна 2 bedrooms, в Белграде готовьте примерно 650-800 евро в месяц, но в начале еще столько же отдадите за депозит и половину от этого - комиссия агентства. Причем, именно евро, всё оплачивается в динарах, кроме жилья: оно только в евро. Это только аренда, комуналка добавит еще 100-150 евро. Летом, как я понял, здесь адская жара, поэтому хотя бы 1-2 кондёра в квартире обязательны. Искать квартиру: только звонить, сразу купите местную симку (лучше Yettel), 90% риелторов говорят по-английски. Возможно, что Нови Сад - красивое место, плюс в самом Белграде есть оазисы красоты, малоэтажные дома с зеленым садом вокруг, но в целом Белград - тяжелое зрелище. Это Россия 30 лет назад. Везде мусор, граффити, ямы на дорогах, много каких-то мелких магазинчиков со скудным ассортиментом. В центре какие-то цыгане, недостроенные здания, нет ощущения дружелюбности и цивилизации (простите, сербы, это не ваша вина). После Москвы, Петербурга - первые пару дней будет прям шок. Ещё я до сих пор не могу найти объективных данных об уровне радиации (бомбардировки в 99м включали снаряды с обедненным ураном, Сербские ученые отмечали массовое увеличение процента онкологии в стране). Надо понимать, что страна была разрушена, жила под санкциями, при этом у нее нет таких ресурсов, как у России, поэтому восстановление идёт долго. Сейчас страна на первом месте в Европе по росту ВВП, находится в фазе бурного развития (если верить статьям в интернете). Но повторюсь, есть, конечно, и очень красивые места, и современные торговые центры, где есть всё (чего уже нет в России).

Сказанным я не пытаюсь сказать "не надо сюда ехать!". Нет, я не жалею, место удобное тем, что не нужна виза, Европа рядом, т.е. как перевалочная площадка - вполне себе, но жить здесь прям долго - это очень и очень на любителя. Мне даже сами сербы об этом говорили.

TeamViewer — LogMeIn, Remote Desktop Connection, UltraVNC, TightVNC, join.me, Radmin, Anydesk, Ammy, Ассистент, RemoteUtilities, Litemanager, RealVNC, Remote Manipulator System (RMS), Aspia, Getscreen.me или getscreen.ru, Chrome Remote Desktop.
99% уязвимостей закрывается через
/ip firewall filter add action=drop chain=input connection-state=new in-interface=my-isp

Нужен простой советский бизибокс.

Писал тут не так давно экспортер для статусов группы CRD на бизибоксе + немного баша и jq

#!/bin/bash

# Old way. Need kubectl
#
# crd_name_1_rec=$(kubectl get crd_name_1 -n kube-system -o jsonpath='{range .items[*]}{.status.phase}{"\n"}{end}' | sort | uniq -c )
# crd_name_2_rec=$(kubectl get crd_name_2 -n kube-system -o jsonpath='{range .items[*]}{.status.phase}{"\n"}{end}' | sort | uniq -c )

token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)

crd_name_1_rec=$(curl --silent -XGET "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}/apis/k8s.tinkoff.ru/v1alpha1/namespaces/${POD_NAMESPACE}/crd_name_1" \
  --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ${token}" \ |
jq '.items[].status.phase' | sort | uniq -c)

echo '# HELP crd_name_1 Count of crd_name_1 statuses according it state'
echo '# TYPE crd_name_1  gauge'

while IFS= read -r status 
do
  echo "crd_name_1{state=$(echo $status | awk '{print $2}')} $(echo $status | awk '{print $1}')"
done <<< "$crd_name_1_rec"

unset status
unset crd_name_1_rec

crd_name_2_rec=$(curl --silent -XGET "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}/apis/k8s.tinkoff.ru/v1alpha1/namespaces/${POD_NAMESPACE}/crd_name_2" \
  --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ${token}" \ |
jq '.items[].status.phase' | sort | uniq -c)

echo '# HELP crd_name_2 Count of crd_name_2 statuses according it state'
echo '# TYPE crd_name_2  gauge'

while IFS= read -r status 
do
  echo "crd_name_2{state=$(echo $status | awk '{print $2}')} $(echo $status | awk '{print $1}')"
done <<< "$crd_name_2_rec"

Скрипт складывается в конфигмап metrics-scripts и запускается так

piVersion: apps/v1
kind: Deployment
metadata:
  name: crd-exporter
spec:
  replicas: 1
  template:
    spec:
      containers:
      - image: busybox-bash-jq
        name: crd-exporter
        command:
        - /bin/sh
        - -c
        - |
          busybox httpd -vvv -f -p 9100 -h /httpd
        volumeMounts:
        - name: metrics-scripts
          mountPath: /httpd/cgi-bin
        ports:
        - containerPort: 9100
        resources:
          limits:
            memory: 128Mi
            cpu: 100m
          requests:
            memory: 128Mi
            cpu: 100m
        env:
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
      volumes:
        - name: metrics-scripts
          configMap:
            name: metrics-scripts
            defaultMode: 0744

Ну и промовские аннотации на под или сервис по вкусу

Поздравляю вас с хорошим результатом.

Немного критики:
1) Вы сдавали IELTS General. Практически всегда университеты требуют IELTS Academic. Так же требуют минимум по письму и чтению 7 или 6.5 баллов при среднем балле 7 (например).
2) Вы сдали экзамен на средний бал.

Знание «экзамена» не означает, что носитель знает Английский язык на определенном уровне. Многие специалисты скорее всего подтвердят данный тезис исходя из опыта работы с иностранцами или на иностранную компанию.
Ну, если для чайников, то в разработке нпр.:
Firefox: https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/
Chrome: https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf

А потом, нпр. если Apache:
Header set Access-Control-Allow-Origin "*"
в /etc/apache2/sites-available/000-default.conf

Если делаем React/Next/… итд, a back-end на «каком-то-там-нашем» сервере, то по любому будет CORS головная боль. Back-end там, а сайт (Node) на нашей машине (localhost). Чистой воды CORS. Плагины помогают это превзойти на стадии разработки, пока не залили front-end на наш сервер.

Если и впредь будет Cross Origin, то только настройки веб сервера.
Выключить, что можно, руками, потом:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender]
"DisableAntiSpyware"=dword:00000001
"DisableRealtimeMonitoring"=dword:00000001
"AlowFastServiceStartup"=dword:00000000
"ServiceKeepAlive"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection]
"DisableBehaviorMonitoring"=dword:00000001
"DisableOnAccessProtection"=dword:00000001
"DisableScanOnRealtimeEnable"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Spynet]
"LocalSettingsOverrideSpynetReporting"=dword:00000000
"SubmitSamplesConsen"=dword:00000002

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]
"EnableSmartScreen"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinDefend]
"Start"=dword:00000004


Работать это будет, конечно, только до тех пор пока мс не решит обратного.

Изначально был выбран неправильный тип метрики для решения задачи. Стандартный джентльменский набор для веб-сервисов:


  1. cumulative counter для числа обработанных запросов, отображать как rate
  2. cumulative counter для числа ошибок (с разбивкой по типу ошибки), отображать как rate
  3. histogram для времени обработки запросов, отображать как процентили
  4. gauge для requests in flight, отображать, как есть

Сочетание 3 и 4 дало бы вам совершенно четкую картину вашей аварии: рост latency и рост числа запросов in flight.

При запуске java в докере имеет смысл посмотреть на такие параметры как -XX:MaxRAMPercentage=75 -XX:MinRAMPercentage=75. При правильном подборе этих параметров при необходимости изменить размер памяти достаточно будет поменять только лимиты докера, не меняя при этом Xmx

Использовал это в случае, когда коллегам сетевикам делал из стека ELK remote syslog для сетевого оборудования. Пришлось подстраиваться под некоторые старые HP switch где нельзя было сменить дефолтный 514 порт. Порты ниже 1024 требуют права root и выручил setcap на бинарник Java, так как стек ELK написан на ней. Logstash стал открывать 514 порт и принимать сообщения в ElasticSearch.

Тем не менее, если ключ хранится в реестре, то он может быть извлечен из веток HKLM\SOFTWARE\CryptoPro\Settings\Users\{SID}\Keys\ или HKLM\SOFTWARE\Wow6432Node\CryptoPro\Settings\Users\{SID}\Keys\, а затем, например, сконвертирован утилитой privkey для использования в OpenSSL (прежде нужно удалить пароль с криптоконтейнера через CSP > Сервис > Изменить пароль... > Выбрать контейнер > Не вводить пароль).

Вместо `npm install` следует использовать `npm ci` в связке с `package-lock.json`. Отрабатывает гораздо быстрее из-за пропуска этапа анализа зависимостей.

Мне как-то libpam-google-authenticator показался самым простым способом прикрутить 2FA. Никакой возни на клиенте вообще, и "искаропки" (ибо pam). Кайф же.

Из моих хитростей:
function ssh() {
    if [ -z "$2" ]; then
        /usr/bin/ssh -t $1 'export PS1="\[\033[01;35m\]\u@\h\[\033[01;34m\] \W\[\033[00m\]\[\033[01;34m\] #\[\033[00m\] "; bash -i'
    else
        /usr/bin/ssh "$@"
    fi
}

Теперь при простом подключении к серверу (без дополнительных параметров) приглашение командной строки будет по умолчанию подсвечено пурпурным цветом (если на сервере это не переопределено). Сразу становится видно, что в этой вкладке открыта удалённая машина. Может быть удобно, когда требуется часто работать с чужими серверами, когда невозможно на каждый запихнуть свои настройки PS1 (или когда настройки регулярно сбрасываются; скажем, при работе с парком тестовых машин, где всё переустанавливается с нуля).
Есть способ еще проще через streams (и правильнее, так как шифрование сохранится) с тем же Nginx, и даже ничего в коде скрипта менять не придется.
На стороне приложения пишем в /etc/hosts:

ip.of.my.proxy api.telegram.org

Для Nginx на проксе пишем:

stream {
# Конфигурация апстрима
upstream tgapi {
server api.telegram.org:443;
}
# Вот этот блок ради того, чтобы можно было один сервер использовать как прокси для нескольких имен
map $ssl_preread_server_name $upstream {
hostnames;
default tgapi;
api.telegram.org tgapi;
}
server {
listen 443;
ssl_preread on;
proxy_pass $upstream;
}
}


Кстати, в большинстве дистрибутивов nginx собран без stream, но оно есть в nginx-full в официальной репе самого nginx.
Спасибо за статью.
Есть похожий инструмент для на python diagrams.mingrammer.com
Посоветую, если, внезапно, не знакомы с дальнейшими книгами Голдратта

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

Кроме того, критическая цепь, читать строго после цели-2, она чисто менеджероориентированная, весьма удачная книга, в ней вы будете оптимизировать не просто критический путь, но и критическую цепь! Без спойлеров, крайне годная литература, советую в принципе всем)
Обновленная инструкция…
Настройка nginx для работы с сертификатами ГОСТ 2012 года
Библиотека OpenSSL качается с update.cryptopro.ru/support/nginx-gost
Есть скрипт авто установки, но КриптоПро для linux надо достать скачать самому…

Как прокси работает…
Решение пока никак не дружит с nGinx Plus…
Если область действия сертификата содержит пробелы — надо экранировать строку параметр в конфиге nGinx правильно (ssl_certificate_key 'engine:gostengy: Петя Петров';)…

github.com/deemru/nginx — сборки обновляются, но только под Windows :-(

1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Липецк, Липецкая обл., Россия
Зарегистрирован
Активность