Linux: настройка мониторинга за 15 минут с помощью Grafana и Prometheus

Поділитися
Вставка
  • Опубліковано 23 лип 2021
  • В этом видео показывается, как организовать мониторинг сервера/компьютера на операционной системе Linux с помощью Grafana, Prometheus и Node Exporter
    Репозиторий: git.digitalstudium.com/digita...
    Этот же мониторинг + настройка уведомлений в Телеграмм: • Linux: Мониторинг с ув...
    Этот же мониторинг, но отказоустойчивый + настройка уведомлений в Телеграмм: • Linux: отказоустойчивы...

КОМЕНТАРІ • 246

  • @DigitalStudium
    @DigitalStudium  Рік тому +9

    Если дашбоард не работает, то попробуйте импортировать дашбоард не так, как я показал в видео, а по id. То есть на этапе импорта в поле "Import via grafana.com" введите 1860 и нажмите Load. Перед этим удалите прежний дашбоард

    • @user-eh8vj2
      @user-eh8vj2 Рік тому

      Здравствуйте. При импорте по id пишет Unavailable For Legal Reasons. И сайт для скачивания файла тоже недоступен. Что в таком случае делать?

    • @DigitalStudium
      @DigitalStudium  Рік тому

      @@user-eh8vj2 странно. Только что зашёл на сайт, специально попробовал от разных провайдеров, работает.
      Хотя я нахожусь в РФ, и пробовал без VPN.
      Вы из какой страны пробуете скачать? Из РФ?

    • @user-eh8vj2
      @user-eh8vj2 Рік тому

      рб, понял, попытаюсь через vpn скачать. спасибо. Теперь работает.

    • @bestofthebest8846
      @bestofthebest8846 Рік тому +1

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

  • @masterbpr0
    @masterbpr0 2 роки тому +3

    О, спасибо. Коротко и без воды

  • @dariavyrvich4004
    @dariavyrvich4004 Рік тому +3

    спасибо за видео! подняла мониторинг за 30 минут, огонь ❤

  • @user-nw9yf3it1f
    @user-nw9yf3it1f Місяць тому

    Просто лучший с документацией можно мучатся ооочень долго. Так хорошо картинка прорисовывается в голове когда сам пощелкаешь понажимаешь))СПАСИБО

  • @Jicefrost
    @Jicefrost Рік тому +1

    спасибо огромное за видео. я думал у вас 100 тыс подписчиков минимум. не бросайте свое дело

  • @michaelshufutinsky2277
    @michaelshufutinsky2277 Рік тому +2

    видео супер, все доходчиво и просто. Было бы клево увидеть видео по backbox exporter и grafana/loki

  • @avkarcr
    @avkarcr 11 місяців тому +1

    Шикарное видео, уже переписывался с автором по деталям, получал обратную связь, все работает супер. Большое спасибо еще раз. Было бы здорово записать еще видео, как при такой связке в докер настроить Графану для работы с https. Было бы очень полезно

  • @bgs12
    @bgs12 5 місяців тому

    Отличный ролик! Спасибо! Все по делу!

  • @djsklife
    @djsklife 4 місяці тому

    Супер, Одназначно подписка, за такой суперский гайд)

  • @RuzalMW
    @RuzalMW Рік тому

    Отличное видео! Кратко и по делу!

  • @oldzas
    @oldzas Рік тому

    Спасибо, получил много ответов на свои вопросы

  • @bossofthegym5469
    @bossofthegym5469 10 місяців тому

    Спасибо большое автору! :)

  • @rpovidlo
    @rpovidlo 2 місяці тому

    Автору огромный респект!!

  • @artorios5192
    @artorios5192 3 місяці тому

    Огромное тебе спасибо!!! Очень помог!

  • @Safon686
    @Safon686 Рік тому +5

    Третий урок по которому пытался поднять мониторинг удаленных серверов и именно по нему получилось :D

  • @powerrsky
    @powerrsky Рік тому

    Спасибо! Со второго раза получилось. Хз в чем была ошибка, но сделал второй раз и завелось!

  • @user-jm2wf5dh4o
    @user-jm2wf5dh4o Рік тому +17

    Спасибо большое. Всё понятно, просто и по делу. Есть же люди, которые объясняют лучше, чем другие за деньги!

    • @cleverscript
      @cleverscript 9 місяців тому +1

      "а че так можно было?" - кучу видосов пересмотрел по 1ч+, и так и не понял как все это паднимается... А тут за 15мину уже понимаю roadmap для своих тыканий)) Спасибо!

  • @artemshumeiko
    @artemshumeiko Рік тому

    Невероятно крутое объяснение

  • @alisherruziev466
    @alisherruziev466 9 місяців тому +1

    Thank you very much. very useful video.

  • @user-og1rg7mz5s
    @user-og1rg7mz5s 6 місяців тому

    Спасибо за инструкцию, все наглядно и просто. В конце ролика вы сказали про подключение других серверов, установить на него node-exporter и прописать в yml файле. Но вот еще бы показали как это сделать, то было бы очень хорошо. Можете выпустить короткое дополнение к этому видео?

    • @user-og1rg7mz5s
      @user-og1rg7mz5s 6 місяців тому +2

      ps. нашел на вашем гитхабе инструкцию по установке node-exporter на другие сервера и подключению их к мониторингу, все ясно :).

  • @tutsw
    @tutsw 2 роки тому +1

    Странно почему ты cadvisor не добавил? И ждем продолжение про уведомления) Интересно спасибо!

  • @76739
    @76739 Рік тому

    Спасибо, буду тестить

  • @mi_hail
    @mi_hail 2 місяці тому

    Приветствую, очень хорошая инструкция, все работает, но у меня вопрос получается открытый порт 9090 и 9100 почему не показали сразу как правильно их закрыть в целях безопасности?

  • @Igor_Glebsky
    @Igor_Glebsky Рік тому

    Добрый день, классный урок, спасибо! Вопрос: при использовании docker-desktop, в какой директории будет лежать файл prometheus.yml?

    • @DigitalStudium
      @DigitalStudium  Рік тому

      Если речь идёт о Windows, то попробуйте наберите такой путь в проводнике:
      \\wsl$
      Внутри этой папки должна быть папка с docker в названии, и в одной из её подпапок можно найти volumes

  • @Tikhon_FaiR
    @Tikhon_FaiR Рік тому

    Привет ещё раз! Решил в к8с поднять мониторинг , на отдельную ноду завернул всё как ты делаешь , столкнулся с проблемой , что в графане не появляются метрики , в проме всё хорошо конфиг видит -работает , куда копать ?

  • @calapsyoutube8336
    @calapsyoutube8336 8 місяців тому

    Лучший)

  • @Iseeyoucrybich
    @Iseeyoucrybich Рік тому

    у меня получилось спустя 4 месяца ахахахах, спасибо вам!!!!!!

  • @user-ko8ri5ef3r
    @user-ko8ri5ef3r 6 місяців тому

    Спасибо!

  • @neophron197
    @neophron197 2 роки тому

    если на сервере уже работают контейнеры видимо в обычном режиме, и для установки node_exporter прописать docker swarm init
    не поломается все?)

    • @DigitalStudium
      @DigitalStudium  2 роки тому +2

      Да не, это ничего не сломает

  • @sergeizen
    @sergeizen 2 роки тому

    Здравствуйте! У меня такой вопрос, я все делал по гайду, спасибо! Но у меня в прометеусе не появился эксплоер. Я нажал другие гайды искать еще хуже получилось. В итоге решил вернуться к вам, но теперь не знаю как быть, понаустанавливал всяких репозиториев на сервер. Если сначала начать так можно? Или нужно все удалить для начала? Как добавлять несколько серверов, у меня ноды работают надо следить за большим количеством серверов, как графану открывать если мы пишем ip и порт в адресную строку , но это для одного сервера. Спасибо, извиняюсь если вопросы дурацкие

    • @DigitalStudium
      @DigitalStudium  2 роки тому +1

      Здравствуйте!
      1. Удалять ничего не нужно если у вас не запущено никаких лишних процессов, которые будут конфликтовать с докер стэком, запущенным по данному видео.

    • @DigitalStudium
      @DigitalStudium  2 роки тому +1

      2. Если вы хотите добавить несколько серверов, то на каждый из серверов нужно установить node-exporter, и затем добавить адрес сервера в prometheus конфиг

    • @DigitalStudium
      @DigitalStudium  2 роки тому +1

      3. Как графану открывать - не понял вопроса. У вас будет одна графана для всех серверов, разумеется.

  • @feelcode_it
    @feelcode_it Рік тому

    Добрый день, подскажите, какая нагрузка у все этой системы и как обезопаситься?
    у меня есть боевой сервер, на него я должен поставить node-exporter, а, например, локально графану и прометеус?

    • @DigitalStudium
      @DigitalStudium  Рік тому

      Нагрузка небольшая. Обезопаситься можно с помощью опции docker swarm под названием deploy resources (можно указать максимум CPU и RAM для контейнера). Как то так:
      services:
      node-exporter:
      image: prom/node-exporter:v1.5.0
      deploy:
      resources:
      limits:
      cpus: '0.5'
      memory: 350M
      reservations:
      cpus: '0.1'
      memory: 100M
      И да, графану и прометей можно локально, но можно и на каком-то другом сервере.

  • @NikSudo
    @NikSudo 2 роки тому

    Я не очень понял, а что конкретно сейчас будет мониториться? Графана сама себя мониторит или где-то произошла магия и это метрики всего хоста?

    • @DigitalStudium
      @DigitalStudium  2 роки тому +2

      Это метрики хоста, разумеется. Их собирает node-exporter, затем prometheus. А из prometheus эти метрики отображает grafana.
      Также вы можете установить node exporter на другие хосты, добавить адреса этих хостов в prometheus, и тогда grafana будет отображать метрики и по этим хостам.

  • @user-nl6im4lq1n
    @user-nl6im4lq1n 8 місяців тому

    можно ли в прометей конфиг файл заложить периодический скан ec2 инстансов в моем aws аккаунте на наличие тега node-exporter=true и добавление их в перечень для получеия данних? (не в кластере ес2 а раздельно)

    • @DigitalStudium
      @DigitalStudium  8 місяців тому

      Привет! Кажется это оно:
      prometheus.io/docs/prometheus/latest/configuration/configuration/#ec2_sd_config
      Хотя сам я такого с EC2 не пробовал, точно не скажу

  • @user-fk1qu2qe5u
    @user-fk1qu2qe5u 7 місяців тому

    С помощью Кали так же будет или есть нюансы? Так же подскажите, есть ли смысл через Кали работать с контейнерами и другими девопс инструментами или лучше в этом случае убунту?

    • @DigitalStudium
      @DigitalStudium  7 місяців тому

      Docker на любом дистрибутиве Linux работает одинаково, так что без разницы - если удобнее Kali, то на нём всё будет работать тоже

  • @Dukapb81
    @Dukapb81 Рік тому

    Здравствуйте. Спасибо за видео. Пытаюсь установить всё на Debian 11, в йамле прописываю
    grafana:
    image: grafana/grafana-oss:9.2
    *(Alpine image (recommended) по официальному мануалу Grafana Open Source edition: grafana/grafana-oss:)
    Дальше
    docker stack deploy со параметрами и путём.
    Всё проходит хорошо.
    Но когда вбиваю docker ps, выходит инфа по названию колонок, но самих контейнеров нет.
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    Сервак свой тоже не могу загрузить с 3000-м портом.
    Подскажите, пожалуйста, что может быть не так? (я ещё совсем в начале пути девопсовских дел)
    Благодарю.

    • @DigitalStudium
      @DigitalStudium  Рік тому

      Наберите docker stack ps monitoring --no-trunc , какой вывод команды?

    • @fizika_tashkent
      @fizika_tashkent 4 місяці тому

      Здравствуйте. У меня такая же проблема. Вот результат команды, которую вы попросили вбить.
      e1264d33d08a985aed0ee6b0b89d0be470592cd Amir Shutdown Failed 20 seconds ago "starting container failed: AppArmor enabled on system but the docker-default profile could not be loaded: running `apparmor_parser apparmor_parser --version` failed with output:
      error: exec: "apparmor_parser": executable file not found in $PATH"
      @@DigitalStudium

    • @fizika_tashkent
      @fizika_tashkent 4 місяці тому +3

      Вдруг кому-то пригодится. Избавиться от этой проблемы и перейти дальше смог при помощи apt install apparmor -y

  • @Iseeyoucrybich
    @Iseeyoucrybich Рік тому

    Привет, отредактировал файл prometheus.yml и node-exporter не поднялся в пррмисиусе, если есть мысль в чем может быть первопричина буду признателен, еще вопрос по докер контейнерам, а в видео вроде не показано как можно объявить вольюмами один для конфигов другой логов, если будут возможность можно этот момент тоже показать за ранее спасибо 👀👀👀👀

    • @DigitalStudium
      @DigitalStudium  Рік тому

      Привет! Зайдите внутрь контейнера prometheus и наберите команду promtool, как ниже:
      $ docker exec -it 0d9fe6950757 sh
      /prometheus $ promtool check config /etc/prometheus/prometheus.yml
      Checking /etc/prometheus/prometheus.yml
      SUCCESS: /etc/prometheus/prometheus.yml is valid prometheus config file syntax
      Тогда станет ясно, где ошибка в конфиге

    • @Iseeyoucrybich
      @Iseeyoucrybich Рік тому

      /var/lib/docker/volumes/monitoring_prom-configs/_data/prometheus.yml
      # my global config
      global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is ever>
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 >
      # scrape_timeout is set to the global default (10s).
      # Alertmanager configuration
      alerting:
      alertmanagers:
      - static_configs:
      - targets:
      # - alertmanager:9093
      # Load rules once and periodically evaluate them according to the global 'evaluation_>
      rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
      # A scrape configuration containing exactly one endpoint to scrape:
      # Here it's Prometheus itself.
      scrape_configs:
      # The job name is added as a label `job=` to any timeseries scraped from >
      - job_name: "prometheus"
      # metrics_path defaults to '/metrics'
      # scheme defaults to 'http'.
      static_configs:
      - targets: ["localhost:9090"]
      - job_name: 'node-exporter'
      static_configs:
      -targets: ['node-exporter:9100']
      честно говоря так и не удалось получить желаемого результата, я извиниюсь конечно за тупые вопросы, но могли бы вы проверить конфиг ?
      P.S. Внутрь контейнера я так и не смог попасть (

    • @DigitalStudium
      @DigitalStudium  Рік тому +2

      @@Iseeyoucrybich похоже у вас отступы не соблюдены. Проверьте конфиг здесь: codebeautify.org/yaml-validator/cb6e91ef

  • @sergejchap62
    @sergejchap62 Рік тому

    было б интересно, как конфигурирован прометей и с какой СУБД.
    Также, как подобное сделать для Zabbix. Всё-таки это более часто используемая модель

    • @DigitalStudium
      @DigitalStudium  8 місяців тому

      Prometheus использует под капотом tsdb. Часто используемая модель - это смотря где.

  • @user-fr1pw3uu5l
    @user-fr1pw3uu5l Рік тому

    Добрый день! Подскажите, пожалуйста, разворачивал по вашему видео, затык произошел на этапе того, что файл должен лежать в папке, docker inspect показывает, что файлы там и должны быть, но в docker volumes вообще папок нет .
    docker inspect monitoring_prom-configs
    [
    {
    "CreatedAt": "2022-11-18T09:11:30Z",
    "Driver": "local",
    "Labels": {
    "com.docker.stack.namespace": "monitoring"
    },
    "Mountpoint": "/var/lib/docker/volumes/monitoring_prom-configs/_data",
    "Name": "monitoring_prom-configs",
    "Options": null,
    "Scope": "local"
    }
    ]
    Подскажите, что не так, в чём проблема?

    • @user-fr1pw3uu5l
      @user-fr1pw3uu5l Рік тому

      ubuntu, возможно проблема в btrfs?

    • @DigitalStudium
      @DigitalStudium  Рік тому

      @@user-fr1pw3uu5l Добрый день! Думаю дело в btrfs, да. Docker нужно отдельно настраивать для работы с btrfs, вы прописывали storage-driver: btrfs в конфигурации докера?

    • @user-fr1pw3uu5l
      @user-fr1pw3uu5l Рік тому

      @@DigitalStudium , перешел на ext4, но всё равно не помогло, теперь новая проблема, docker у не хватает прав, чтобы писать в директорию volumes, chmod просто не помог, как заставить его работать не от рута? Или хотя бы запустить docker desktop от рута), подскажите, пожалуйста.

    • @DigitalStudium
      @DigitalStudium  Рік тому

      @@user-fr1pw3uu5l я бы с радостью помог, но штука в том что я никогда не пользовался docker desktop, поэтому не могу выступить тут экспертом.
      Но в общем случае, если вы хотите запустить любую программу из под root, выясните сначала команду с помощью
      ps aux | grep docker
      А затем запустите эту команду с sudo

  • @1Virkom
    @1Virkom 7 місяців тому

    Хорошее видео, но не ясно только, что делать, если несколько серверов. Понятно, что Grafana и Prometheus будут работать только на одном сервере (ну или на разных, но в одном экземпляре). Вопрос в том, что делать с дашбоардом. Для одного сервера все нормально, а как показывать несколько серверов?

    • @DigitalStudium
      @DigitalStudium  7 місяців тому

      На дашборде есть выпадающий список под названием "Host", он позволяет выбирать нужный сервер.
      Как подключить сами серверы к мониторингу, говорится на моменте 10:51

    • @1Virkom
      @1Virkom 7 місяців тому

      @@DigitalStudium спасибо

  • @aliakseiyushkevich5181
    @aliakseiyushkevich5181 2 роки тому

    как лучше обращаться к node exporter другого сервера, если он запущен в другом docker stack?

    • @DigitalStudium
      @DigitalStudium  2 роки тому

      Либо hostname:9100 либо ip_address:9100

  • @mikhbear3926
    @mikhbear3926 2 роки тому +8

    Промисиус прям слух режет )
    просто Прометей тогда уж )

    • @DigitalStudium
      @DigitalStudium  8 місяців тому

      Не хотел никому резать слух)

  • @andrey.nekrasov
    @andrey.nekrasov 11 місяців тому

    Почему просто не поставить заббикс, получив все те же графики и еще дофига всего? Чем прометеус лучше (если лучше)?

  • @fizika_tashkent
    @fizika_tashkent 3 місяці тому

    Здравствуйте еще раз. У меня проблема. Не работает корректно датчик скорости. Но если другой сервер выбрать, где только node exporter (установка только apt-get install prometheus-node-exporter), то там скорость работает корректно. Как быть?

    • @fizika_tashkent
      @fizika_tashkent 3 місяці тому

      И по дефолту на графике со второго сервера вот эти графики
      recv eno1
      trans eno1.
      А на основном, где графана и прочее, там
      recv eth0
      recv eth1
      recv eth2
      recv lo
      trans eth0
      trans eth1
      trans eth2
      trans lo
      Но при этом данные не корректные. Что-то в районе 0-8 кб. И словно не то что-то отображается. Даже во время бекапов

  • @fergiztechnologies8442
    @fergiztechnologies8442 Рік тому

    можно ли использовать прометеус и графана для мониторинга транзакций?

    • @DigitalStudium
      @DigitalStudium  Рік тому

      Их можно использовать для мониторинга чего угодно. Можно довольно легко написать на python свой prometheus exporter, с него забирать метрики prometheus-ом и визуализировать в графане

  • @vitalykargin
    @vitalykargin 2 роки тому

    Можешь объяснить назначение с 30 по 35 строки? К чему привязаны эти volume? 1:40

    • @DigitalStudium
      @DigitalStudium  2 роки тому +1

      Эти строки, фактически, создают соответствующие директории в папке /var/lib/docker/volumes
      Затем в этих директориях хранятся файлы из контейнеров grafana и prometheus. Таким образом, если остановить контейнеры, данные из них останутся в этих директориях. Если заново стартовать контейнеры, данные из этих директорий будут заново использованы внутри контейнеров

    • @vitalykargin
      @vitalykargin 2 роки тому

      @@DigitalStudium Так вроде ж volume создаются в 7, 14, 21 строках. И описываются директории волумов. Отсюда и возник вопрос а куда цепляются волумы с 30 по 35 строку? к какому собственно контейнеру и какой директории. Или 30-35 строки нужны именно для создания. А уже 7,14,21 для использования?

    • @DigitalStudium
      @DigitalStudium  2 роки тому

      @@vitalykargin мой ответ конечно запоздал, но на всякий случай отвечу: да, 30-35 строки создают вольюмы, а выше они используются

  • @peat1990
    @peat1990 3 дні тому

    Привет. А оборудование вроде свичей и вайфай точек можно добавить туда по снмп?

    • @DigitalStudium
      @DigitalStudium  3 дні тому +1

      Привет! Это возможно через snmp exporter github.com/prometheus/snmp_exporter

    • @peat1990
      @peat1990 3 дні тому

      @@DigitalStudiumоперативно, спасибо

  • @j0ke48
    @j0ke48 2 роки тому

    Подскажите, как оставить работу контейнеров? Или самих процессов. Пытаюсь остановить контейнеры, но они через несколько секунд снова стартуют.

    • @DigitalStudium
      @DigitalStudium  2 роки тому

      Скорее всего вы уже нашли решение проблемы, но на всякий случай отвечу: нужно использовать команду "docker stack rm имястэка"

    • @j0ke48
      @j0ke48 2 роки тому

      @@DigitalStudium спасибо!

    • @gurufx3388
      @gurufx3388 8 місяців тому

      Такой же вопрос возник) теперь знаю ответ, благодарю!

  • @user-oo7ng4he4x
    @user-oo7ng4he4x 2 роки тому +1

    Здравствуйте! Подскажите пожалуйста, у меня не появляется node exporter после редактирования файла (добавление node exporter в prometheus) Обновляю страницу инета а node exporter всё никак не хочет появляться в prometheus. В вашем видео это момент 9:49

    • @Trust_CanE
      @Trust_CanE Рік тому +2

      Подскажи, пожалуйста, смог ли ты решить этот вопрос

    • @DigitalStudium
      @DigitalStudium  Рік тому

      @@Trust_CanE А скиньте текущий конфиг. Думаю скорее всего вы сделали отступ неправильный в конфиге

    • @user-oo7ng4he4x
      @user-oo7ng4he4x Рік тому

      Вроде получилось. Но в конфиге прописал по другому. Как у Вас на видео, у меня не получилось

    • @Trust_CanE
      @Trust_CanE Рік тому

      @@user-oo7ng4he4x у меня тоже. Мои комментарии удалены только. ну да ладно

    • @Trust_CanE
      @Trust_CanE Рік тому

      @@DigitalStudium я только ни как не смог найти норм график, для мониторинга сетевой нагрузки. их там штук 14, а все фиг знает что показывают. А именно хотел бы смотреть загруженность пропускной способности (bandswitch) сервера. Не знаете можно ли смотреть это через графану?

  • @fizika_tashkent
    @fizika_tashkent 4 місяці тому

    Здравствуйте. У вас есть гайд, как добавить мониторинг с другого сервера? Как установить там только node exporter и всё грамотно мониторить на одном сервере. Боюсь запутаться :(

    • @DigitalStudium
      @DigitalStudium  4 місяці тому

      На сервере надо только это:
      docker stack deploy -c node-exporter.yml exporter
      А дальше меняете конфиг Prometheus и делаете релоад, это описано в README.md файле github.com/digitalstudium/grafana-docker-stack/blob/main/README.md

  • @bestofthebest8846
    @bestofthebest8846 Рік тому +1

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

  • @olegmykhailenko8053
    @olegmykhailenko8053 Місяць тому

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

  • @febreze2010
    @febreze2010 19 днів тому

    05:26 не понимаю, почему хост указывается как prometheus:9090, а не скажем localhost либо 127.0.0.1. Откуда мы берем имя prometheus?

    • @DigitalStudium
      @DigitalStudium  19 днів тому

      При использовании docker swarm имя сервиса становится и его доменным именем.
      То есть изнутри любого контейнера можно обратиться по имени сервиса, и оно будет разрешено в IP адрес соответствующего контейнера с помощью внутреннего DNS докера

    • @febreze2010
      @febreze2010 18 днів тому

      @@DigitalStudium спасибо. А почему localhost либо 127.0.0.1 для меня были недоступны в Графане. При тесте нового source выдавало ошибку

  • @user-hg7bp4dj7c
    @user-hg7bp4dj7c Рік тому

    Я успешно дошел до 10-17, но у меня в Графане нет выбора экспортера в HOST. Там просто пусто, когда открываешь. Следовательно графики в N/A, не обновляются

    • @user-hg7bp4dj7c
      @user-hg7bp4dj7c Рік тому

      Надо просто старую версию (ревизию) качнуть с сайта Графаны этого JSON Node Exporter Full от 2021-05-08T22:30:46

    • @abekenf3208
      @abekenf3208 Рік тому

      тоже самое. все сделал как на видео. но на графиках ничего не отображается. админ может когда с вами связаться?

  • @titlov123
    @titlov123 5 місяців тому

    подскажите пожалуйста , что делать если нет такого пути и самого файл
    /var/lib/docker/volumes/monitoring_prom-configs/_data/prometheus.yml
    ( система ubuntu 22.04)
    var/lib/docker/volumes/ и тут только два файла backingFsBlockDev , metadata.db

    • @DigitalStudium
      @DigitalStudium  5 місяців тому

      А вы уже запускали команду docker stack deploy?

    • @titlov123
      @titlov123 5 місяців тому

      docker swarm init
      docker stack deploy -c docker-compose.yml monitoring@@DigitalStudium
      да , конечно. и все поднялось нормально и без ошибок
      а можно както при сборке контейнеров в docker-compose.yml , передать настройки из prometheus.yml ?

    • @kxyfi
      @kxyfi 5 місяців тому

      запускай докер и всё остальное от рута

  • @abdulazizsobirjonov3014
    @abdulazizsobirjonov3014 Рік тому +1

    best

  • @roorbac
    @roorbac 6 місяців тому

    если после команды SIGHUP не появился на 9090 порту node exporter? я что то не так сделал?

    • @DigitalStudium
      @DigitalStudium  6 місяців тому +1

      Команда sighup нужна, чтобы перечитать конфигурационный файл. Если он не перечитался, то нужно посмотреть с помощью команды docker logs логи Prometheus, там обычно написано, что помешало перечитать конфиг.

  • @Tikhon_FaiR
    @Tikhon_FaiR Рік тому

    Привет, при переходе /var/lib/docker/volumes/monitoring_prom-configs/_data/prometheus.yml пишет отказано в доступе или доступ запрёщен подскажи ,что не так

    • @Tikhon_FaiR
      @Tikhon_FaiR Рік тому +1

      теперь пишет ,что не существует такого файла

    • @Tikhon_FaiR
      @Tikhon_FaiR Рік тому

      при этом файл есть - залез внутрь контейнера и нашёл его ,но не могу понять как его отредактировать

    • @nikitosbertone
      @nikitosbertone Рік тому +1

      добавь sudo перед командой cd

    • @Tikhon_FaiR
      @Tikhon_FaiR Рік тому

      @@nikitosbertone да уже сделал в тот же день )

  • @kol9ngames214
    @kol9ngames214 Рік тому

    Не подскажите как сразу импортировать ID dashboard в docker-compose?

    • @DigitalStudium
      @DigitalStudium  Рік тому +1

      Можно добавить Json дашборда в вольюм, как здесь: git.digitalstudium.com/digitalstudium/grafana-docker-stack/src/branch/alertmanager

    • @kol9ngames214
      @kol9ngames214 Рік тому

      @@DigitalStudium Спасибо огромное

  • @user-nw9yf3it1f
    @user-nw9yf3it1f Місяць тому

    Здравствуйте подскажи создал сервер ubuntu в AWS все установил все ок. почему не могу попасть на веб страницу графаны...e

    • @user-nw9yf3it1f
      @user-nw9yf3it1f Місяць тому

      вопрос отпал порты то не открыл 3000 и т д)))

  • @DekardKain311
    @DekardKain311 Рік тому

    А как это запустить потом? Вот я запустил в первый раз, все заработало на моих локальных виртуалках, одна была прометей+графана, а на нескольки других включен нод экспортер.
    Потом я отправил эти виртуалки в suspend.
    Включил обратно, docker ps показывает что контейнеры развернуты, и сами по себе виртуалки пингуются, но по портам ни графана ни прометей не открываются. Порты само собой открыты...

    • @DekardKain311
      @DekardKain311 Рік тому

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

    • @DigitalStudium
      @DigitalStudium  Рік тому +1

      @@DekardKain311 сложно сказать конечно, в чем именно у вас дело. Нужно смотреть syslog/dmesg , также я бы посмотрел логи apparmor (Ubuntu) или SELinux (RedHat based дистрибутивы)

    • @DigitalStudium
      @DigitalStudium  Рік тому +1

      Ну и конечно tcpdump вам в помощь, если ничто другое не поможет

  • @neophron197
    @neophron197 2 роки тому

    а почему после перезапуска постоянно мертвые контейнеры если "docker ps -a" ?

    • @DigitalStudium
      @DigitalStudium  2 роки тому

      А docker ps без -a что показывает? Дело в том, что docker ps -a показывает в том числе и "убитые" контейнеры. Если вы рестартовали контейнеры, то понятно, что у вас должны появиться "убитые" контейнеры

    • @neophron197
      @neophron197 2 роки тому

      @@DigitalStudium понятно, спасибо, без -a показывает только рабочие

  • @imbaskill583
    @imbaskill583 2 місяці тому

    Приветствую, не добавляется нод экспортер в промиссиус, что делаю не верно?

    • @imbaskill583
      @imbaskill583 2 місяці тому

      # my global config
      global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
      # Alertmanager configuration
      alerting:
      alertmanagers:
      - static_configs:
      - targets:
      # - alertmanager:9093
      # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
      rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
      # A scrape configuration containing exactly one endpoint to scrape:
      # Here it's Prometheus itself.
      scrape_configs:
      # The job name is added as a label `job=` to any timeseries scraped from this config.
      - job_name: "prometheus"
      # metrics_path defaults to '/metrics'
      # scheme defaults to 'http'.
      static_configs:
      - targets: ["localhost:9090"]
      - job_name: "node-exporter"
      static_configs:
      - targets: ["node-exporter:9100"]

    • @imbaskill583
      @imbaskill583 2 місяці тому

      Хоть волком вой, вторые сутки сижу, в Targets нод експортер не отображается все равно. Вот такой формат тоже не помогает - job_name: "prometheus"
      static_configs:
      - targets: ["XXX.XX.XX.XX:9090"]
      - job_name: "node-exporter"
      static_configs:
      - targets: ["XXX.XX.XX.XX:9100"]

    • @imbaskill583
      @imbaskill583 2 місяці тому

      Все вопрос решен, спасибо чату GPT)))

  • @blia44
    @blia44 2 роки тому +2

    Ептвоймать я хотел посмотреть одно а нашел решение другой своей проблемы ... Спасибо

  • @imbaskill583
    @imbaskill583 7 місяців тому

    Все сработало, только скажите как поменять имя которое отображается в Hostname? У меня на серве оно изменено, но в grafana отображается не оно

    • @imbaskill583
      @imbaskill583 7 місяців тому

      Дашборд 11074

    • @DigitalStudium
      @DigitalStudium  3 місяці тому

      Не знал о таком, спасибо что поделились :-)

  • @kol9ngames214
    @kol9ngames214 Рік тому

    Здравствуйте, может кто знает, на debian встанет по этому примеру или нет?

    • @DigitalStudium
      @DigitalStudium  Рік тому +1

      Да, конечно, пример из видео работает на любом дистрибутиве Linux

  • @Nini-sv1bd
    @Nini-sv1bd 2 роки тому +2

    Все таки докер это чудо

    • @mikhbear3926
      @mikhbear3926 2 роки тому

      изучите внутренние механизмы ядра Linux.
      тогда придет понимание того что докер это маркетинг.

  • @JhonPreston
    @JhonPreston 11 місяців тому

    Добрый день, подскажите как удалить установленные контейнеры и отключить их запуск

    • @DigitalStudium
      @DigitalStudium  11 місяців тому +1

      docker stack rm monitoring

    • @JhonPreston
      @JhonPreston 11 місяців тому

      @@DigitalStudium спасибо получилось, но в сетевых адаптерах остался докер-мост и еще один неактивный адаптер, их удалить в ручную?

    • @DigitalStudium
      @DigitalStudium  11 місяців тому +1

      @@JhonPreston
      Можете вручную удалить, да. Возможно вольюмы докер тоже не удаляет автоматически

    • @JhonPreston
      @JhonPreston 11 місяців тому

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

    • @DigitalStudium
      @DigitalStudium  11 місяців тому +1

      @@JhonPreston у меня стоит это в целях, как только позволит время хочу создать серию видео и по докер, и по kubernetes

  • @Trust_CanE
    @Trust_CanE 6 місяців тому

    Привет! Вот бы еще видео, как это все удалить :)

    • @DigitalStudium
      @DigitalStudium  6 місяців тому +1

      docker stack rm monitoring

    • @Trust_CanE
      @Trust_CanE 6 місяців тому

      @@DigitalStudiumспасибо)

  • @dropex2142
    @dropex2142 21 день тому

    После команды docker kill -s SIGHUP контейнер не запустился.....Жаль

    • @DigitalStudium
      @DigitalStudium  21 день тому

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

  • @gregoryjenferd9740
    @gregoryjenferd9740 2 роки тому

    После удаления контейнеров создаются новые. Как это остановить?

    • @gregoryjenferd9740
      @gregoryjenferd9740 2 роки тому +1

      Проблему решил - дело было в docker stak deploy. Помогла команда docker stack leave.

    • @DigitalStudium
      @DigitalStudium  8 місяців тому

      Ну либо docker stack rm monitoring

  • @DigitalStudium
    @DigitalStudium  3 дні тому

    Если у вас не получается скачать образы с docker hub, то попробуйте настроить прокси как описано здесь: dockerhub.timeweb.cloud/

  • @xesax
    @xesax Місяць тому

    что делать если прометеус не видит мое приложение?

  • @dedm7759
    @dedm7759 2 роки тому

    хмм у меня возникают ошибки и оне не показывает различные параметры,1:187: parse error: missing unit character in duration"

    • @DigitalStudium
      @DigitalStudium  2 роки тому

      На каком этапе возникает данная ошибка? Попробуйте сделать скриншот и дать мне на него ссылку: pasteboard.co/

    • @dedm7759
      @dedm7759 2 роки тому

      @@DigitalStudium забей я решил эту проблему , вообще я использовал шаблон node explore full , а он не даёт возможности деталь alert , просто создаём новую панель копируем метрики с прометеуса и в ней делаем Алерт

    • @dedm7759
      @dedm7759 2 роки тому

      и я просто использовал другой шаблон не как у вас на видео и все получилось

    • @DigitalStudium
      @DigitalStudium  2 роки тому +1

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

    • @neophron197
      @neophron197 2 роки тому

      @@dedm7759 какой шаблон использовали?

  • @avkarcr
    @avkarcr Рік тому

    Отличное видео. Спасибо. Много пересмотрел но это реально лучшее. Короткое и четкое.
    Только вот не работает почему-то 😂
    Оно вроде как должно работать. И конфиг смотрел, все отступы четкие, SUCCESS, и каждый шаг по гайду.
    Графана отображает н/д. При этом, повторюсь, каждый шаг по гайду - ошибок не было. При заходе через веб в prometheus 9090 метрики отображаются. При заходе на порт 9100 видны метрики экспортера. Но графана не отображает почему-то. Источник выбран prometheus. Dashboard привязан к prometheus.
    Еду в Питер 4 часа уже из Москвы и до сих пор не победил. Все. Сдаюсь. Пишу автору :) Дай совет, плз

    • @DigitalStudium
      @DigitalStudium  Рік тому +1

      Привет! Если зайти в Configuration -> Data Sources -> Prometheus в графане, и ткнуть "Save & Test", то появляется ли надпись "Datasource is working"?

    • @avkarcr
      @avkarcr Рік тому

      @@DigitalStudium спасибо за ответ, вернулся из Питера, готов продолжать бороться и победить настройку ) Итак, при нажатии Save & Test отображается "Data source is working". Все зеленое. Все выглядит так, что работает. Но графана в дашборде ничего не показывает по-прежнему (

    • @DigitalStudium
      @DigitalStudium  Рік тому

      ​@@avkarcr Скопируйте содержимое из Dashboard Settings -> JSON Model, вставьте его сюда: pastebin.com и вышлите ссылку мне

    • @avkarcr
      @avkarcr Рік тому

      @@DigitalStudium И вот мой конфиг (IP скрыт, не localhost)
      # my global config
      global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      alerting:
      alertmanagers:
      - static_configs:
      - targets:
      'evaluation_interval'.
      rule_files:
      scrape_configs:
      from this config.
      - job_name: "prometheus"
      static_configs:
      - targets: ["XXX.XX.XX.XX:9090"]
      - job_name: "node-exporter"
      static_configs:
      - targets: ["XXX.XX.XX.XX:9100"]

    • @avkarcr
      @avkarcr Рік тому

      @@DigitalStudium ссылка не отправляется. Не стоит ли запретов на публикацию ссылок от гостей? Пару раз пробовал

  • @user-yn8pv7kp6y
    @user-yn8pv7kp6y 6 днів тому

    база

  • @biomozgjele
    @biomozgjele 8 місяців тому

    У меня Prometheus - Targets не появился node exporter

    • @DigitalStudium
      @DigitalStudium  8 місяців тому

      reload делали?

    • @biomozgjele
      @biomozgjele 7 місяців тому

      @@DigitalStudium да

    • @DigitalStudium
      @DigitalStudium  7 місяців тому

      @@biomozgjele Посмотрите логи контейнера prometheus. Возможно, в конфиге допущена ошибка, в таком случае при reload-е prometheus не сможет обработать конфиг, и в логах выдаст ошибку

    • @biomozgjele
      @biomozgjele 7 місяців тому

      странно. Сейчас проверил - у меня docker ps выдает только два активных контейнера. prometheus нет
      268d5423ae55 prom/node-exporter:v1.3.1
      3eea707ae9f7 grafana/grafana:8.5.3-ubuntu

    • @DigitalStudium
      @DigitalStudium  7 місяців тому +1

      @@biomozgjele docker ps -a
      А затем смотрите логи с которыми Prometheus упал
      Если и это не поможет, то
      docker service ps
      И смотреть причину там

  • @Dukapb81
    @Dukapb81 Рік тому

    Всё, сдаюсь. Всё перебровал (плюс прошлое сообщение).
    Часов 12 в итоге сидел.
    Сервисы запускаются нормально, но образы из докер-хранилища не подгружают - ни один.
    По команде docker ps, выходит инфа по названию колонок, но самих контейнеров нет.
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    Если вбивать по очереди docker service ps test_grafana
    docker service ps test_prometheus
    docker service ps test_node-exporter
    То выходит сообщение одно и тоже (только имя сервиса меняется).
    И везде написано, что реджектед - нет такого образа (см. ниже).
    Какие я только адреса для образов в файл .yml - ваши, с разными latest, с двоеточием на конце, без двоеточий... чего только не пробовал.
    Система Debian и я это учитывал в адресах образа.
    Резюме - сервисы запускаются. Образы к этим сервисам - нет (
    Пример:
    ~# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    ~# docker service ls
    ID NAME MODE REPLICAS IMAGE PORTS
    zr0pv1dybjpc test_grafana replicated 0/1 grafana/grafana-enterprise:v9.2.0 *:3000->3000/tcp
    s2axt1ab1fjt test_node-exporter replicated 0/1 bitnami/node-exporter:latest *:9100->9100/tcp
    bv7m1r1evx8l test_prometheus replicated 0/1 prom/prometheus:latest *:9090->9090/tcp
    ~# docker service ps test_grafana
    ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
    l2cuhml5j784 test_grafana.1 grafana/grafana-enterprise:latest debian-ulyanov Ready Rejected 3 seconds ago "No such image: grafana/grafan…"
    vjvj2p0ay9sz \_ test_grafana.1 grafana/grafana-enterprise:latest debian-ulyanov Shutdown Rejected 4 seconds ago "No such image: grafana/grafan…"
    9nbn9hpiso07 \_ test_grafana.1 grafana/grafana-enterprise:latest debian-ulyanov Shutdown Rejected 18 seconds ago "No such image: grafana/grafan…"
    a58z647eq4x2 \_ test_grafana.1 grafana/grafana-enterprise:latest debian-ulyanov Shutdown Rejected 41 seconds ago "No such image: grafana/grafan…"
    qr7l1y7xoflh \_ test_grafana.1 grafana/grafana-enterprise:latest debian-ulyanov Shutdown Rejected 42 seconds ago "No such image: grafana/grafan…

    • @DigitalStudium
      @DigitalStudium  Рік тому +1

      А, ну тут проще простого. image для графаны называется просто grafana, а не grafana-oss или grafana-enterprise. См. здесь: hub.docker.com/r/grafana/grafana

    • @Dukapb81
      @Dukapb81 Рік тому

      @@DigitalStudium за ответ спасибо. У меня уведомление пришло и вашем ответе - какую команду вы говорили написать? Открыл сообщение, а тут уже обновлено.
      Разумеется, grafana/grafana я попробовал в первую очередь и в самых разных комбинациях.
      Кстати, grafana-oss или grafana-enterprise тоже имеют место быть.
      Кроме того, что образы не находятся нужные в автоматическом режиме при деплое стэка, то если делать это вручную, то пишет ошибку что-то типа - не найден нужный образ llinux/386, хотя в описании к образу эта архитектура имеется.
      Короче - ни в какую ни руками, ни через йамл.

    • @DigitalStudium
      @DigitalStudium  Рік тому

      @@Dukapb81 А если попробовать просто набрать команду docker pull grafana/grafana, то какой будет вывод команды?

    • @Dukapb81
      @Dukapb81 Рік тому

      @@DigitalStudium Спасибо за отзывчивость.
      Вот, да. Я уже писал про это выше в прошлом посте - "если делать это вручную, то пишет ошибку что-то типа - не найден нужный образ llinux/386, хотя в описании к образу эта архитектура имеется".
      docker pull grafana/grafana
      Using default tag: latest
      latest: Pulling from grafana/grafana
      no matching manifest for linux/386 in the manifest list entries
      Я хз в чём проблема. Может, в архитектуре - intel + debian... Не знаю.

    • @DigitalStudium
      @DigitalStudium  Рік тому +1

      @@Dukapb81 Проблема в том, что у вас похоже 32-битный linux, все докер имэджи заточены обычно под 64 битный linux.
      Есть 2 варианта решения проблемы:
      1. Установить 64-битный Linux вместо 32-битного
      2. Найти докер имэджи для 32-битного Linux, что довольно-таки сложновато

  • @Tikhon_FaiR
    @Tikhon_FaiR Рік тому

    Потратил больше 2 часов просто из-за не внимательности ))) Ребят ,а может кто привести пример как будет выглядеть пример ,чтобы добавить сервера или установить экспортёр через энсибл)

  • @C0D3O
    @C0D3O 2 роки тому

    а зачем это делать в докере?

    • @DigitalStudium
      @DigitalStudium  2 роки тому +1

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

    • @wh1tequark
      @wh1tequark 2 роки тому

      @@DigitalStudium это если собирать пакет. Если ставить с репозитория там это уже включено. Проверено на деб10

    • @DigitalStudium
      @DigitalStudium  2 роки тому +1

      @@wh1tequark Да, но в репозитории, как правило, лежит не самая свежая версия той или иной программы. Docker позволяет вам установить самую последнюю версию того же prometheus без лишних движений

    • @wh1tequark
      @wh1tequark 2 роки тому

      @@DigitalStudium само собой это одна из причин почему собирают. Мне вот интересно другое в чем принципиальные отличия методик докер сварма от комповсера? Тк я со свармом не работал то делаю через комповсер который собирает докерфайл ну и естественно если что-то нужно изменить то меняем в докер-комповсере/докер файле > ребилд на новую версию без дт

    • @DigitalStudium
      @DigitalStudium  2 роки тому +2

      @@wh1tequark swarm не умеет билдить имэджи, но зато swarm умеет запускать контейнеры в нескольких репликах и много чего другого. Иногда более удобно использовать сворм, иногда компоуз, иногда без разницы :-)

  • @byldozer100
    @byldozer100 8 місяців тому

    подход когда все в докере - не для обучающего видео 😞

  • @ArtegaFM
    @ArtegaFM 7 місяців тому

    Это стандарт так называть «промисиус»?

    • @DigitalStudium
      @DigitalStudium  7 місяців тому

      Смотря где.

    • @ArtegaFM
      @ArtegaFM 7 місяців тому

      @@DigitalStudium а в каких случаях так говорят? В англоязычной среде?

    • @DigitalStudium
      @DigitalStudium  7 місяців тому +1

      @@ArtegaFM да, как минимум в англоязычной среде в общении между русскоязычными ) В российских компаниях чаще говорят "прометей"

    • @ArtegaFM
      @ArtegaFM 7 місяців тому

      @@DigitalStudium понятно, спасибо 😉

  • @MultiHbox
    @MultiHbox Рік тому

    ++

  • @azizmamoyan5428
    @azizmamoyan5428 22 дні тому

    Сложно

  • @ITAll
    @ITAll Місяць тому

    Как остановить эти контейнеры...... Как я за-лся)))) и stop и rm и rmi и все вместе с && и НИЧЕГО... Автостартует это Д....о.... АААААААААААААААА))))

  • @sergeyshestakov607
    @sergeyshestakov607 2 роки тому

    Cpasibo

  • @aleksandrtimashov8145
    @aleksandrtimashov8145 2 роки тому

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

    • @DigitalStudium
      @DigitalStudium  2 роки тому +2

      Ну сам по себе мониторинг без оповещений о проблемах несёт мало пользы, согласен. Хотя иногда и помогает, когда нужно что то в ретроспективе посмотреть. Но если прикрутить оповещения о каких то проблемах с диском, памятью, cpu и т.п., то он очень даже полезен

  • @user-jw6xg4lo9i
    @user-jw6xg4lo9i 8 місяців тому +5

    Клюнул на превью.. Зачем показывать красивую девушку, а потом рассказывать мужским голосом? хDD

  • @deady2791
    @deady2791 2 місяці тому

    Здравствуйте, в чем мб причина закрытия контейнеров grafana и prometheus? при команде docker ps показывается либо только node-exporter либо node-exporter и grafana с prometheus у которых в статусе написано: up less than a second.🥲

    • @DigitalStudium
      @DigitalStudium  2 місяці тому

      Нужно смотреть логи контейнеров упавших.
      docker ps -a
      Затем docker logs
      Если ps -a ничего не показывает, надо смотреть что случилось с помощью команды
      docker service ps

  • @WriterMayorov
    @WriterMayorov Місяць тому

    Все такие умные или просто я тупой? Судя по комментариям всем всё понятно и всё всё сразу же установили.