Архив метки: Linux

Установка и использование Grafana Loki на Linux

В нашей инструкции мы рассмотрим процесс установки и настройки Grafana Loki в качестве сервера сбора логов. Есть несколько способов ее установки — Helm chart, в качестве контейнера Docker, скачать готовый бинарник или собрать его из исходника. Мы выполним установку из последнего на систему Linux. Также, в качестве примера, мы прочитаем лог веб-сервера nginx и сделаем его вывод в Grafana.




Подготовка




Прежде чем устанавливать Loki, подготовим наш сервер для работы.




Установка пакетов




Для загрузки исходников нам понадобиться загрузить некоторые файлы. Для этого в системе должны быть установлены соответствующие пакеты. В зависимости от типа системы процесс установки будет незначительно отличаться.




а) на системах Red Hat:




yum install git wget




б) для систем на основе Debian:




apt-get install git wget




Установка Go




Для компиляции исходника, нам необходимо установить Golang. Для этого переходим на страницу загрузки и копируем ссылку на архив с его последней версией:







Воспользовавшись ссылкой, скачиваем архив на наш сервер:




wget https://golang.org/dl/go1.15.6.linux-amd64.tar.gz




* на момент написания инструкции, последняя версия была 1.15.6.




Распаковываем архив в каталог /usr/local:




tar -v -C /usr/local -xzf go*.tar.gz




Открываем файл:




vi /etc/profile




Добавляем в самый низ строку:




export PATH=$PATH:/usr/local/go/bin




Один раз выполняем данную команду:




export PATH=$PATH:/usr/local/go/bin




Проверяем, что go установлен и готов выполнять команды:




go version




Мы должны увидеть версию скачанного пакета.




Настройка безопасности




1. Брандмауэр




В зависимости от используемого брандмауэра, необходимо выполнить следующие настройки.




а) если используем iptables (по умолчанию, в системах на базе Debian):




iptables -I INPUT 1 -p tcp --dport 3100 -j ACCEPT




* данная команда добавит правило на разрешение порта 3100 (на котором, по умолчанию, запускается Grafana Loki).




Для сохранения правил устанавливаем пакет:




apt-get install iptables-persistent




Сохранение правил теперь можно выполнить командой: 




netfilter-persistent save




б) если используем firewalld (по умолчанию, в системах на базе Red Hat):




firewall-cmd --permanent --add-port=3100/tcp

firewall-cmd --reload




* данная команда добавит правило на разрешение порта 3100 (на котором, по умолчанию, запускается Grafana Loki).




2. SELinux




Как правило, в системах на базе Red Hat активирована дополнительная система безопасности. В нашей инструкции мы ее отключаем командами:




setenforce 0

sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config




* первая команда вводится до разового отключения SELinux. Вторая не дает ему запуститься после перезагрузки.




Установка




Установка Grafana Loki сводится к загрузке готового бинарника или исходника с последующей компиляцией. Также мы настроим юнит в systemd для работы приложения в качестве сервиса.




Копирование бинарника и конфигурационного файла




Переходим в каталог:




cd /usr/src/




Загружаем исходные файлы проекта:




git clone https://github.com/grafana/loki




Переходим в каталог loki:




cd loki/




Запускаем компиляцию бинарника:




go build ./cmd/loki




В текущем каталоге появится файл loki — перенесем его в каталог /usr/local/bin:




mv loki /usr/local/bin/




Создадим каталог:




mkdir /etc/loki




… и перенесем в него конфигурационный файл:




mv cmd/loki/loki-local-config.yaml /etc/loki/




В конфиге, который идет в исходнике в качестве рабочего каталога для Grafana Loki используется /tmp — мы это исправим двумя командами:




sed -i 's//tmp/wal//opt/loki/wal/g' /etc/loki/loki-local-config.yaml




* первой командой мы меняем настройку dir для wal (журнала предзаписи). 




sed -i 's//tmp/loki//opt/loki/g' /etc/loki/loki-local-config.yaml




* в данном примере мы заменили путь для storage_configworking_directory и ruler storage на /opt/loki.




Создаем каталог:




mkdir /opt/loki




Выполним первый тестовый запуск сервиса:




/usr/local/bin/loki -config.file=/etc/loki/loki-local-config.yaml




Открываем браузер и переходим по адресу http://192.168.0.15:3100/metrics, где 192.168.0.15 — IP-адрес нашего сервера Grafana Loki. Мы должны увидеть страницу с метриками:







Значит наш сервис запустился и нормально работает. Можно прервать его работу на сервере комбинацией клавиш Ctrl + С и продолжать настройку.




Автозапуск




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




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




useradd --no-create-home --shell /bin/false loki




* данной командой мы создадим пользователя loki. Ему нельзя будет входить в систему в качестве интерактивного пользователя, также для него не будет создана домашняя директория.




Делаем владельцем loki бинарник для запуска сервиса:




chown loki:loki /usr/local/bin/loki




Задаем владельца для рабочих каталогов Loki: 




chown -R loki:loki /etc/loki

chown -R loki:loki /opt/loki




Создаем юнит в systemd:




vi /etc/systemd/system/loki.service




[Unit]

Description=Grafana Loki Service

After=network.target



[Service]

User=loki

Group=loki

Type=simple

ExecStart=/usr/local/bin/loki -config.file=/etc/loki/loki-local-config.yaml

ExecReload=/bin/kill -HUP $MAINPID

Restart=on-failure



[Install]

WantedBy=multi-user.target




Перечитываем конфигурацию systemd:




systemctl daemon-reload




Теперь можно разрешить и стартовать наш сервис:




systemctl enable loki --now




Проверить, что он запустился и работает можно командой:




systemctl status loki




Установка серверной части завершена.




Отправка логов на сервер




В нашем примере мы передадим логи веб-сервера NGINX в нашу Grafana Loki. Для этого переходим на сервер с NGINX и выполним следующие действия.




Установка Promtail




Promtail — агент, который читает и отправляет логи на сервер. Его установка во многом напоминает установку сервера — получаем бинарник и добавляем его в автозагрузку. В нашем примере мы загрузим уже скомпилированный файл для запуска.




Для начала, установим следующие пакеты:




yum install unzip wget




unzip нужен для распаковки архива с бинарником; wget — для скачивания архива.




Загружаем последнюю версию promtail для Linux:




wget https://github.com/grafana/loki/releases/latest/download/promtail-linux-amd64.zip




* в нашем примере загружается бинарник на систему 64-бит. На странице https://github.com/grafana/loki/releases можно скачать файлы для установки под Linux и Windows.




Распаковываем скачанный архив:




unzip promtail-linux-amd64.zip




Переносим бинарник в каталог /usr/local/bin:




mv promtail-linux-amd64 /usr/local/bin/promtail




* обратите внимание, что мы его сразу переименовали в promtail.




Создаем каталог для конфигурационных файлов promtail:




mkdir /etc/promtail




Создаем конфигурационный файл:




vi /etc/promtail/promtail.yaml




server:

  http_listen_port: 9080

  grpc_listen_port: 0



positions:

  filename: /tmp/positions.yaml



clients:

  - url: http://192.168.0.15:3100/loki/api/v1/push




* где 9080 — номер порта, на котором будет слушать promtail; 192.168.0.15 — IP-адрес нашего сервера Loki, куда нужно отправлять данные.




Создаем юнит в systemd для promtail:




vi /etc/systemd/system/promtail.service




[Unit]

Description=Promtail Service

After=network.target



[Service]

Type=simple

ExecStart=/usr/local/bin/promtail -config.file=/etc/promtail/promtail.yaml

ExecReload=/bin/kill -HUP $MAINPID

Restart=on-failure



[Install]

WantedBy=multi-user.target




Перечитываем конфигурацию systemd:




systemctl daemon-reload




Разрешаем запуск сервиса promtail и стартуем его:




systemctl enable promtail --now




Проверяем статус:




systemctl status promtail




На клиенте в настройки брандмауэра добавляем правило на разрешение порта 9080.




а) если используем iptables (Debian, Ubuntu): 




iptables -I INPUT 1 -p tcp --dport 9080 -j ACCEPT




apt-get install iptables-persistent




netfilter-persistent save




б) если используем firewalld (CentOS, Red Hat):




firewall-cmd --permanent --add-port=9080/tcp




firewall-cmd --reload




После установки promtail открываем браузер и переходим на страницу http://192.168.0.25:9080/targets, где 192.168.0.25 — IP-адрес клиентского компьютера с NGINX. Мы должны увидеть страницу:







Promtail работает. Можно приступать к сбору логов.




Настройка сбора логов




Открываем конфигурационный файл promtail:




vi /etc/promtail/promtail.yaml




… и добавляем:




...



scrape_configs:

- job_name: nginx

  static_configs:

  - targets:

      - localhost

    labels:

      job: nginxlogs

      __path__: /var/log/nginx/*log




* где:







Перезапускаем сервис promtail:




systemctl restart promtail




Снова заходим по адресу http://192.168.0.25:9080/targets — мы должны увидеть настроенное нами задание:







Сбор логов настроен.




Настройка Grafana




Переходим к серверу с Grafana. Он может быть установлен на отдельном сервере или на том же сервере с Loki.




Заходим в веб-интерфейс и переходим в Configuration — Data Sources:







Добавляем новый источник, кликая по Add data source:







Среди списка возможных источников выбираем Loki:







В настройках задаем имя и указываем IP-адрес сервера Loki:







* в нашем примере задается имя Loki и подключение к серверу 192.168.0.15.




Нажимаем на Save & Test:







Если мы увидели сообщение «Data source connected and labels found.»:







… значит подключение выполнено и можно двигаться дальше.




Переходим в раздел Create — Dashboard:







Кликаем по кнопке Add new panel:







В открывшемся окне выбираем в качестве источника данных Loki, затем кликаем по Log labels — выбираем job и nginxlogs:







Мы увидим Unable to graph data (так как логи представляют из себя данные, на основе которых нельзя постоить график) — кликаем по Switch to table view:







Мы должны увидеть строки из логов:







Логи NGINX отображаются в Grafana.




Парсинг лога




Мы увидели логи в графане, но они представленны в неудобном для отбора и фильрации виде. Попробуем это исправить с помощью парсинга логов на стороне promtail.




Открываем файл для редактирования:




vi /etc/promtail/promtail.yaml




Дополним нашу задачу для сбора логов NGINX:




...



scrape_configs:

- job_name: nginx

  static_configs:

  - targets:

      - localhost

    labels:

      job: nginxlogs

      __path__: /var/log/nginx/*log

  pipeline_stages:

    - match:

        selector: '{job="nginxlogs"}'

        stages:

        - regex:

            expression: '^(?P<remote_addr>[w.]+) - (?P<remote_user>[^ ]*) [(?P<time_local>.*)] "(?P<method>[^ ]*) (?P<request>[^ ]*) (?P<protocol>[^ ]*)" (?P<status>[d]+) (?P<body_bytes_sent>[d]+) "(?P<http_referer>[^"]*)" "(?P<http_user_agent>[^"]*)"?'

        - labels:

            remote_addr:

            remote_user:

            time_local:

            method:

            request:

            protocol:

            status:

            body_bytes_sent:

            http_referer:

            http_user_agent:




* обратите внимание, что к имеющейся настройки мы добавили pipeline_stages:







Перезапускаем сервис для promtail:




systemctl restart promtail




Идем в Grafana — в Log labels мы должны увидеть новые критерии для фильтра по тегам:







Пробуем добавить, например, фильтр по статусу ответа веб-сервера:







Источник: https://www.dmosk.ru/instruktions.php?object=grafana-loki



2021-08-15T19:31:52
Software

Как установить подсистему Windows для Linux в Windows 11

Вы когда-нибудь представляли, что можете установить подсистему Windows для Linux с помощью одной командной строки ? Теперь он официально доступен, с помощью которого вы можете легко установить WSL на свою Windows 11.

Раньше процесс установки подсистемы Windows для Linux был слишком сложным и требовал большого количества пакетов. Вам нужно обойти несколько настроек и установить WSL на свой компьютер. Microsoft упростила этот процесс, и теперь это всего лишь команда.

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

Чтобы установить подсистему Windows для Linux (WSL) в Windows 11

  1. Запустите командную строку от имени администратора
  2. Скопируйте/вставьте команду wsl.exe --install и нажмите Enter.
  3. Перезагрузите компьютер, чтобы установка была готова к использованию.

Чтобы начать, откройте командную строку с правами администратора в меню «Пуск», введите следующую команду и нажмите Enter .

wsl --install

Теперь команда включит компоненты WSL и платформы виртуальных машин на вашем ПК, исключив все ручные шаги, которые будут устанавливать WSL. Затем он загрузит и установит последнюю версию ядра Linux, а затем дистрибутив Linux. Вы увидите статус в окне командной строки. Когда это будет сделано, перезагрузите компьютер с подсистемой Windows для Linux (WSL), прочтите, чтобы использовать.

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

Как посмотреть список доступных дистрибутивов Linux

Помимо команды для установки подсистемы Windows для Linux (WSL) на ваш компьютер, есть еще пара команд, которые позволяют вам увидеть полный список дистрибутивов Linux, доступных для установки на ваш компьютер.

Чтобы увидеть их, откройте командную строку с правами администратора, введите следующую команду и нажмите Enter:

wsl --list --online

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

wsl --install -d <Имя дистрибутива>

Эта команда остановит установку версии дистрибутива Linux по умолчанию и начнет установку выбранной. Его также можно использовать для установки дополнительных дистрибутивов Linux к существующей установке. Чтобы увидеть статус подсистемы Windows для Linux с общей информацией о конфигурации, типе распространения, дистрибутиве по умолчанию, версии ядра, вы можете использовать следующую команду.

wsl --status

Он отобразит всю информацию о WSL на вашем ПК.

Как вручную обновить подсистему Windows для Linux

Доступны команды, которые можно использовать для обновления ядра WSL Linux или отката и обновления до предыдущего.

Чтобы вручную обновить подсистему Windows для Linux, введите следующую команду в командной строке и нажмите Enter.

wsl --update

Чтобы откатить обновление до предыдущей версии, используйте следующую команду.

wsl --update rollback

Это различные команды, которые можно использовать для установки подсистемы Windows для Linux (WSL) на ваш компьютер, просмотра списка доступных дистрибутивов Linux, обновления или отката обновленного WSL.

Эти команды можно использовать не только в Windows 11, но если вы участвуете в программе предварительной оценки Windows и имеете предварительную сборку ОС Windows 10 (сборка 20262 или выше), вы можете использовать эти команды для получения всех вышеперечисленных функций на своем ПК с Windows 10. .

Что я могу делать с подсистемой Windows для Linux?

Если на вашем компьютере установлена ​​подсистема Windows для Linux, вы можете использовать инструменты и приложения командной строки Linux вместе с существующими инструментами Windows. Вы можете получить доступ ко всем файлам из WSL с помощью команд.

Как установить WSL вручную?

Вы можете установить WSL в Windows 11/10 двумя способами. Старый добрый метод, при котором вам нужно загрузить все установочные пакеты, включить компоненты платформы виртуальных машин на вашем компьютере и т.д. Теперь, если вы участвуете в программе предварительной оценки Windows и используете последние сборки Windows 11/10, вы можете установить с помощью команды.



2021-08-03T08:57:18
Вопросы читателей

Что делает сообщество Linux особенным

В 2021 существует множество причин почему люди любят Linux ещё больше чем раньше. Сообщество пользователей Linux — одна из краеугольных причин использовать эту операционную систему.

Многие пользователи скажут, что ключевая особенность Linux — это его сообщество. Это может показаться странным новым пользователям, потому что термин «сообщество» уже достаточно популярен в наши дни. Существуют даже менеджеры по созданию и управлению сообществами. Давайте разберемся что же выделяет сообщество Linux на фоне всех остальных.

Читать

Как удалить раздел в Linux

Если вы работаете с дисками в Linux, то у вас время от времени возникает необходимость создавать таблицы разделов, создавать и форматировать новые разделы, а также удалять разделы. Это может понадобится для установки ещё одной системы, или просто перераспределения свободного места между разделами.

Удалить раздел в Linux можно как в графическом интерфейсе, так и в командной строке. Причем, в командной строке для этого есть несколько утилит. Есть да утилита с псевдографическим интерфейсом. В этой статье мы рассмотрим как выполняется удаление разделов Linux разными способами.

Читать

Облегченные дистрибутивы Linux

Small Linux DistributiveУ вас дома есть старый компьютер, который не используется из-за современных операционных систем, требующих высокопроизводительных ресурсов? Что ж, вы можете вернуть этот компьютер в рабочее состояние с помощью некоторых облегченных дистрибутивов Linux. Существует множество небольших дистрибутивов Linux, которые достаточно надежны для выполнения вашей повседневной личной работы.

Эти дистрибутивы настолько крошечные, что даже не получают достаточного внимания. Итак, сегодня мы собираемся познакомить вас с самыми маленькими дистрибутивами Linux. Перечисленные здесь дистрибутивы оживят старые компьютеры. Давайте начнем.

Читать

Команда ifconfig в Linux

ifconfig(настройка интерфейса) — это инструмент управления сетью. Он используется для настройки и просмотра состояния сетевых интерфейсов в операционных системах Linux. С его помощью ifconfig вы можете назначать IP-адреса, включать или отключать интерфейсы, управлять кешем ARP, маршрутами и т. д.

В этой статье мы рассмотрим, как использовать команду ifconfig. Читать