-
-
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
-
avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100
avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100
avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[15m])) * 100 -
node_memory_MemFree_bytes
-
node_filesystem_size_bytes{fstype="ext4"}
-
- Dashboard
- Модели:
- Плюсы Push:
- Возможность направлять данные с одного агента в несколько систем.
- Каждый клиент можно конфигурировать отдельно.
- На мой взгляд есть некий элемент безопасности в такой схеме. Нет единого сервера с административным доступом ко всем агентам.
- В случае отсутствия коннекта, агент может хранить инфу на себе, пока сервер не станет доступен, потом передаст.
- Минусы Push:
- Необходимость установки и обновления агентов.
- Контроль жизни агентов.
- Плюсы Pull:
- Нет необходимость ставить агентов.
- Мониторим только те объекты которые хотим. Никто "левый" не будет спамить.
- Возможность реализации прокси, в случае разграничения сетей между сервером и агентами.
- Минусы Push:
- Нужен административный доступ до всех хостов.
- в случае отсутствия коннекта, потеряем исторические данные.
- Плюсы Push:
- Системы:
- Push:
- Zabbix
- TICK
- VictoriaMetrics
- Pull:
- Prometheus
- Zabbix
- VictoriaMetrics
- Nagios
- Push:
-
- В первую очередь я бы мониторил платформу изнутри:
- CPU
- RAM
- HDD
- Время на обработку отчета
- Очередь из запросов
- Так же я бы мониторил доступность системы из вне:
- Доступность по http
- Может быть время отклика.
- В первую очередь я бы мониторил платформу изнутри:
- С точки зрения бизнеса можно предложить соглашение об уровне оказания услуг (SLA). Бизнесу интересны показатели доступности систем и время реагирования на возникающие инциденты. Например:
- Доступность системы 96% - означает, что в год допускается 15 дней простоя системы.
- 96% инцидентов решено в срок. Инциденты можно делить на категории критичные, высокие, средние и тд. В зависимости от приоритета выставить разные сроки реагирования.
-
- ELK. Является неким стандартом в силу своего долголетнего существования. Много плагинов. В моей практике единственный минус был в невозможности разделения доступа к логам в кибане. Так же отсутствует система оповещений. В платной версии вроде этот функционал присутствует. Непростой процесс установки.
- Graylog. Похож на ELK. Есть оповещение. Меньше возможностей для интеграций. Отсутствует поддержка Markdown. Процесс установки проще.
- Monq. Молодой продукт со всеми вытекающими последствиями.
- Нужно добавить еще коды ответов (summ_2xx_requests + summ_3xx_requests)/summ_all_requests
- resource и data_source
-
- Параметр name конфликтует с параметром name_prefix
- Вроде 26 символов
- [[:xdigit:]]{%d}%s$
-
-
package main import "fmt" func main() { fmt.Print("Enter count of meters: ") var input float64 fmt.Scanf("%f", &input) output := input * 0.3048 fmt.Println("In", input, "meters", output, "foots") }
-
package main import ( "fmt" "sort" ) func main() { x := []int{48, 96, 86, 68, 57, 82, 63, 70, 37, 34, 83, 27, 19, 97, 9, 17} sort.Ints(x) fmt.Println(x[0]) }
-
package main import "fmt" func main() { for i := 1; i < 100; i++ { if i%3 == 0 { fmt.Println(i) } } }
-
-
- Выполняя все условия задачи (использование count и for each) получилось, что для прода создается 4 инстанса. Вывод команды запихал в файл, показалось что так удобнее.
tfPlanProd
-
- При помощи Packer
- https://github.com/Gasan66/devops-netology/tree/main/terraform/demo
-
-
- Я бы использовал изменяемый тип архитектуры, так как придется вносить много изменений в окружение и делать это быстро. Когда все устаканится можно сделать и неизменяемую.
- С моей точки зрения, если нет четкого ТЗ и четкого понимания архитектуры, то лучше не городить огород и использовать простые и действенные средства. Я бы не заморачивался с сервером.
- Так как есть ansible скрипты, то я бы его и использовал, т.е. без агентов.
- Есть terraform и ansible поэтому я бы их и использовал в качестве управления конфигурациями и инициализацией ресурсов.
- Packer, Terraform, Docker, TeamCity
- Я бы добавил nexus для хранения артефактов и в качестве registry для образов докера.
-
-
- Сначала я найду этот запрос командой db.currentOp({"sec_running":{$qte: 180}}), затем применю killSessionsю
- Вычислить запрос из-за которого деградирует база и использовать explain для анализа проблемы.
- На сколько я понял у редиса есть встроенные механизмы работы с истекшими ключами. Соотношение истекших ключей к общему количеству превышает 25%, те редис начинает блокировать записи, чтобы снизиться до 25%.
- Такая ситуация может возникать, если в одном или нескольких запросах идет запись миллионов строк. Мы можем увеличить время таймаута net_read_timeout.
- При нехватке памяти postgres начинает прибивать процессы. Можно либо отключить эту опцию, но лучше проверить настройки памяти для железа.
-
- вывод списка БД - \l
- подключения к БД - \c
- вывода списка таблиц - \dt
- вывода описания содержимого таблиц - \d+
- выхода из psql - \q
- File "Ручное" разбиение можно было исключить на этапе проектирования, если сразу задать приложению условие как распределять данные по табличкам.
- ALTER TABLE public.orders ADD CONSTRAINT title_unique UNIQUE (title);
- File
- update clients set order_id = 3 where surname = 'Иванов Иван Иванович';
update clients set order_id = 4 where surname = 'Петров Петр Петрович';
update clients set order_id = 5 where surname = 'Иоганн Себастьян Бах';
- sd
- pg_dump -U test-admin-user test_db > /backup/test_db.dump
- psql -U test-admin-user test_db < /backup/test_db.dump
-
- Документо-ориентированные
- Реляционная
- Иерархическая
- Ключ-значение
- Графовая
-
- AP; PA/EC
- PA; PA/EC
- CP; PC/EL
- На мой взгляд одна система не может удовлетворять обоим принципам, так как ACID про точность данных, а BASE про доступность и скорость.
- На сколько я понял речь идет о брокере сообщений. В данном случае есть возможность реализовать асинхронное взаимодействие, например, для шины данных. На мой взгляд проблемы в такой системе могут возникать в случае "нецелевого" использования. Т.е если пытаться ее использовать для долгого хранения данных. По сути данная система реализует очереди, которые разбираются асинхронно и удаляются, а не хранятся.
-
- replicated - количество сервисов указывается нами
- global - сервис запускается на каждой ноде
- Кластер использует Raft
- Overlay Network - сеть для создания кластера swarm.
-
- VM
- Container
- Container
- Container
- Container
- Container
- VM
- VM
- Image
-
- Основные преимущества IaaC: идентичность настроек всех ландшафтов, бэкап настроек, культура инженерного состава.
- Основопологающий принцип на мой взгляд это идемпотентность.
-
- У ansible низкий порог входа и push модель.
- pull более надежен, но требует установки агентов.
5.1. Введение в виртуализацию. Типы и функции гипервизоров. Обзор рынка вендоров и областей применения.
-
- Аппаратная виртуализация - гипервизор является и ОС. Нет прослойки в виде ОС.
- Паравиртуализация - гипервизор ставится на ОС хоста в виде отдельного севрвиса. главное отличие от аппаратной это необходимость изменения ядра гостевой ОС
- Виртуализация уровня ОС - нет гипервизора, ОС сама отвечает за разделение ресурсов.
-
- Для высоконагруженных БД я бы использовал аппаратную виртуализвацию нескольких серверов объединенных в кластер для обеспечения отказоустойчивости.
- Для различных веб приложений я бы использовал виртуализацию на уровне ОС (контейнеризация), если не требуется обеспечить изолированность от ядра.
- Для виртуалок бухгалтеров я бы использовал паравиртуализацию для возоможности ограничения ресурсов и разделения виртуалок друг от друга.
- Предполагаю, что для GPU лучше использовать виртуализацию на уровне ОС, чтобы можно было напрямую подключить устройство gpu.
-
- Если рассматривать платные решения, то я бы использовал Hyper-V. Многое идет из коробки.
- Использовал бы KVM так как оно интегрировано в ядро линукса, что дает хорошую производительность.
- Использовал бы Hyper-V так как идет с winserver по умолчанию.
- Использовал бы Docker
- Достоинства гетерогенной системы, на мой взгляд, заключаются в том, что можно сэкономить средства, а так же "не сесть на вендорскую иглу". Минусы конечно же в том, что сопровождать этот зоопарк очень сложно. Я бы выбрал одно решение. Были бы деньги, то использовал бы VMware. Иначе KVM.
- Добавил ковычки к ключу ip и к его значению "71.78.22.43". Не понял нужно ли что то делать со значением 7175, с точки зрения синтаксиса вроде норм, а с точки зрения логики не понятно что тут хотели. File
- Script
- В переменной $c будет содержаться "a+b", так как в баше все строка. В $d будет содержаться 1+2, произошла конкатенация. В $e уже будет сумма равная 3.
-
while ((1==1))
do
curl http://localhost:5000
if (($? != 0))
then
date > curl.log
else
break
fi
done - Задание 3
- Задание 4
- Работаю на ubuntu. Использую команду ip. (ip a|addr|address). Интерфейсы:
- lo
- eth0
- llpd. пакет lldpd. команда lldpctl
- VLAN. пакет vlan. команды:
-
- типы агрегации:
- статический
- динамический
- опции для балансировки:
- mode=0 (balance-rr)
- mode=2 (balance-xor)
- mode=5 (balance-tlb)
- mode=6 (balance-alb)
- конфиг:
iface bond0 inet static
address 10.0.1.5
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.254
bond_mode balance-tlb
bond_miimon 100
bond_downdelay 200
bond_updelay 200
slaves eth0 eth1
- типы агрегации:
-
- адресов 6
- сетей 32
- подсети:
- 10.10.10.0/29
- 10.10.10.8/29
- 10.10.10.16/29
-
- 100.64.0.0/10
- 100.64.0.0/26
-
- ip neigh
- sudo ip neigh flush all
- sudo ip neighbour flush to
- 301 Moved Permanently - значит что ресурс перемещен на постоянной основе.
- Дольше всего выполнялся запрос "https://sb.scorecardresearch.com/cs/17440561/beacon.js".
- 77.223.93.200
- CJSC "ER-Telecom Holding" Yekaterinburg branch. AS51604
-
1 ec2-54-93-0-91.eu-central-1.compute.amazonaws.com (54.93.0.91) [AS16509/AS14618] 4.062 ms ec2-54-93-0-161.eu-central-1.compute.amazonaws.com (54.93.0.161) [AS16509/AS14618] 57.730 ms ec2-54-93-0-93.eu-central-1.compute.amazonaws.com (54.93.0.93) [AS16509/AS14618] 3.178 ms
2 100.65.17.80 (100.65.17.80) [*] 48.314 ms 243.253.18.254 (243.253.18.254) [*] 0.376 ms 0.359 ms
3 240.0.92.20 (240.0.92.20) [*] 0.347 ms 240.0.92.16 (240.0.92.16) [*] 0.378 ms 240.0.92.28 (240.0.92.28) [*] 0.427 ms
4 100.66.10.194 (100.66.10.194) [*] 1.438 ms 242.1.93.225 (242.1.93.225) [*] 7.060 ms 100.66.11.102 (100.66.11.102) [*] 9.921 ms
5 100.95.4.12 (100.95.4.12) [*] 1.711 ms 243.253.17.70 (243.253.17.70) [*] 0.527 ms 243.253.20.66 (243.253.20.66) [*] 0.466 ms
6 240.0.92.16 (240.0.92.16) [*] 0.453 ms 100.100.6.14 (100.100.6.14) [*] 0.936 ms 100.100.4.100 (100.100.4.100) [*] 1.056 ms
7 242.1.92.113 (242.1.92.113) [*] 0.705 ms 0.683 ms 142.250.166.96 (142.250.166.96) [AS15169] 2.672 ms
8 100.95.20.14 (100.95.20.14) [*] 0.325 ms 100.95.20.8 (100.95.20.8) [*] 1.132 ms * 9 dns.google (8.8.8.8) [AS15169] 0.766 ms 0.974 ms 0.773 ms - Наибольшая задержка на 11. AS15169 74.125.146.150
-
dns.google. 286 IN A 8.8.4.4
dns.google. 286 IN A 8.8.8.8 -
;; ANSWER SECTION:
4.4.8.8.in-addr.arpa. 300 IN PTR dns.google.;; ANSWER SECTION:
8.8.8.8.in-addr.arpa. 300 IN PTR dns.google.
- насколько я понял, жесткие ссылки не являются отдельным объектом (файлом), поэтому на них нельзя устанавливать права и менять владельца
- sudo fdisk /dev/xvdb (n p 1 +2G) (n p 2 остаток) (w). В скобках указал параметры вводимые в интерактивном режиме
- sudo sfdisk -d /dev/xvdb > part_table
sudo sfdisk /dev/xvdf < part_table - sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/xvdb1 /dev/xvdf1
- sudo mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/xvdb2 /dev/xvdf2
- sudo pvcreate /dev/md0 /dev/md1
- sudo vgcreate vol_grp1 /dev/md0 /dev/md1
- sudo lvcreate -L 100M -n logical_vol1 vol_grp1 /dev/md1
- sudo mkfs.ext4 /dev/vol_grp1/logical_vol1
- mkdir /tmp/new
sudo mount /dev/vol_grp1/logical_vol1 /tmp/new - sudo pvmove -n logical_vol1 /dev/md1 /dev/md0
- sudo mdadm /dev/md0 -f /dev/xvdb1
-
[Unit]
Description=Node Exporter
After=network.target[Service]
EnvironmentFile=/usr/local/bin/simpleUnit.conf
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter $ARG1
[Install]
WantedBy=multi-user.target -
node_cpu_seconds_total{cpu="0",mode="system"} 42.45 node_cpu_seconds_total{cpu="0",mode="user"} 80.75 node_memory_MemFree_bytes gauge node_disk_io_time_seconds_total node_network_receive_drop_total
-
походу можно. Booting paravirtualized kernel on Xen HVM xen_netfront: Initialising Xen virtual ethernet driver systemd[1]: Detected virtualization xen.
-
fs.nr_open = 1048576. - возможное кол-во открытых дескрипторов по умолчанию. я так понял что /etc/security/limits.conf не даст достигнуть этого значения.
-
root@ip-172-31-9-40:~# nsenter --target 1311 --pid --mount root@ip-172-31-9-40:/# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 8968 3980 pts/1 S+ 18:51 0:00 /bin/bash root 8 0.0 0.0 7236 528 pts/1 S 18:51 0:00 sleep 1h root 31 0.0 0.4 10040 4976 pts/2 S 18:57 0:00 -bash root 42 0.0 0.3 10624 3360 pts/2 R+ 18:57 0:00 ps aux
-
я так понял, что нормализовал это безобразие некий pids controller. изменить ограничение вроде б как можно в /sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.max
- chdir("/tmp")
- /usr/share/misc/magic.mgc
- я тут не совсем понял задачу. если нужно просто обнулить удаленный файл, то, зная PID, мы находим его дескриптор через lsof и командой : > /proc/PID/fd/number очищаем файл.
- как я понял они потребляют, но очень мало
- ну в первую секунду больше всего вызовов пришлось на /proc/PID/stat; /proc/PID/status; /proc/PID/cmdline; но были и другие: /usr/lib/; /lib/
- uname. Part of the utsname information is also accessible via /proc/sys/kernel/{ostype, hostname, osrelease, version, domainname}
- && используется для объединения последовательного выполнения команд. Вторая команда выполнится только в случае удачного выполнения первой. ; не ждет завершения предыдущей команды set -e так же как как и && остановит последовательность команд при ошибке. поэтому нет смысла использовать &&
- set -e - остановит последовательность при ошибке set -u - выведет необъявленный параметр при попытке его вызова set -o pipefail - как я понял этот параметр должен передать в пайп сообщение которое ушло в stderr set -x - отражает все исполняемые команды в терминале set -euxo pipefail - используя такую последовательность очень удобно дебажить получается.
- вот такую команду сделал ps -eo stat | cut -c 1-1 | sort | uniq -c. Если есть более умная, подскажите пожалуйста). Больше всего получилось S
- cd is a shell builtin.
- grep <some_string> <some_file> -c
- systemd
- ls 2> /dev/pts/1
- cat < 1.txt > 2.txt
- Получится данные не будет видно.
- bash 5>&1 - создали fd 5 и перенаправили его вывод в stdout. Поэтому и команда echo netology > /proc/$$/fd/5 выводит netology в stdout.
- ls $ 3>&1 1>&2 2>&3 | tee text
- env
- cmdline - Этот файл содержит полную командную строку запуска процесса exe - является символьной ссылкой, содержащей фактическое полное имя выполняемого файла
- sse4_2
- виртуалка в облаке. если нужно подружиться с вагрантом, то сделаю.
- разница в том, что ech встроенная програмка и запускается с правами shell, а tee можно запустить от sudo, так как она не встроенная.
devops-netologyfirst line */.terraform/ - будут проигнорированы все файлы в папке .terraform вне зависимости от родительских каталогов. *.tfstate - будут проигнорированы все файлы с расширением tfstate .tfstate. - будут проигнорированы все файлы расширения которых содержат .tfstate. crash.log - файл crash.log будет проигнорирован *.tfvars - будут проигнорированы все файлы с расширением .tfvars override.tf - файл override.tf будет проигнорирован override.tf.json - файл override.tf.json будет проигнорирован *_override.tf - будут проигнорированы все файлы заканчивающиеся на _override.tf *_override.tf.json - будут проигнорированы все файлы заканчивающиеся на _override.tf.json .terraformrc - будут проигнорированы все файлы с расширением .terraformrc terraform.rc - файл terraform.rc будет проигнорирован