Как установить и обезопасить Grafana на Ubuntu 18.04

_ Автор выбрал Dev Color, чтобы получить пожертвование в рамках программы Write for DOnations.

Вступление

Grafana - это инструмент для визуализации и мониторинга данных с открытым исходным кодом, который интегрируется со сложными данными из таких источников, как Prometheus, ​​https: //www.influxdata. com / [InfluxDB], Graphite и ElasticSearch. Grafana позволяет создавать оповещения, уведомления и специальные фильтры для ваших данных, а также облегчает сотрудничество с вашими товарищами по команде благодаря встроенным функциям обмена.

В этом руководстве вы установите Grafana и защитите его с помощью SSL сертификата и обратный прокси-сервер Nginx. После того, как вы настроили Grafana, у вас будет возможность настроить аутентификацию пользователей через GitHub, что позволит вам лучше организовать разрешения вашей команды.

Предпосылки

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

  • Один сервер Ubuntu 18.04, настроенный в соответствии с Initial Руководство по установке сервера для Ubuntu 18.04, включая не пользователь root с правами + sudo + и брандмауэр, настроенный с помощью + ufw +.

  • Полностью зарегистрированное доменное имя. Этот учебник использует ++ повсюду. Вы можете приобрести доменное имя по адресу Namecheap, получить его бесплатно на Freenom или использовать регистратор домена своего выбор.

  • Следующие записи DNS настроены для вашего сервера. Вы можете следовать How для того, чтобы настроить имя хоста с DigitalOcean для получения подробной информации о том, как добавь их.

  • Запись * A * с ++ указывает на публичный IP-адрес вашего сервера.

  • Запись * A *, где + www. + Указывает на публичный IP-адрес вашего сервера.

  • Nginx настраивается, следуя инструкции Как установить Nginx в Ubuntu 18.04, включая https: //www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04#step-5-%E2%80%93-setting-up-server-blocks-(recommended) [блок сервера] для вашего домена.

  • Серверный блок Nginx с настроенным Let’s Encrypt, который можно настроить, следуя https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu- 18-04 [Как защитить Nginx с помощью Let’s Encrypt в Ubuntu 18.04].

  • При желании для настройки аутентификации https://github.com [GitHub] вам потребуется учетная запись GitHub, связанная с организацией.

Шаг 1 - Установка Графана

На этом первом этапе вы установите Grafana на свой сервер Ubuntu 18.04. Вы можете установить Grafana либо по адресу downdownload, либо прямо с официального сайта, либо перейдя через https://www.digitalocean.com/community/tutorials/ubuntu-and-debian. -package-management-essentials # debian-package-management-tools-Overview [APT-репозиторий]. Поскольку хранилище APT упрощает установку и управление обновлениями Grafana, вы будете использовать этот метод в этом руководстве.

Хотя Grafana доступна в the официальное хранилище пакетов Ubuntu 18.04, версия Grafana там может быть не самой последней, поэтому используйте официальный репозиторий Grafana.

Загрузите Grafana GPG key с https://www.gnu.org/software / wget / [+ wget +], затем pipe выходных данных в + apt-key + , Это добавит ключ в список доверенных ключей вашей установки APT, что позволит вам загрузить и проверить подписанный GPG пакет Grafana.

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

В этой команде опция + -q + отключает сообщение об обновлении статуса для + wget +, а + -O + выводит файл, который вы скачали в терминал. Эти две опции гарантируют, что только содержимое загруженного файла передается по конвейеру в + apt-key +.

Затем добавьте репозиторий Grafana к своим источникам APT:

sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

Обновите кэш APT, чтобы обновить списки пакетов:

sudo apt update

Затем убедитесь, что Grafana будет установлена ​​из репозитория Grafana:

apt-cache policy grafana

Выходные данные предыдущей команды сообщают вам версию Grafana, которую вы собираетесь установить, и откуда вы получите пакет. Убедитесь, что кандидат на установку в верхней части списка поступит из официального репозитория Grafana по адресу + https: // packages.grafana.com / oss / deb +.

Output of apt-cache policy grafanagrafana:
 Installed: (none)
 Candidate: 6.3.3
 Version table:
    6.3.3 500
       500 https://packages.grafana.com/oss/deb stable/main amd64 Packages
...

Теперь вы можете продолжить установку:

sudo apt install grafana

После установки Grafana используйте + systemctl +, чтобы запустить сервер Grafana:

sudo systemctl start grafana-server

Затем убедитесь, что Grafana работает, проверив состояние службы:

sudo systemctl status grafana-server

Вы получите вывод, похожий на этот:

Output of grafana-server status● grafana-server.service - Grafana instance
  Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
  Active:  since Tue 2019-08-13 08:22:30 UTC; 11s ago
    Docs: http://docs.grafana.org
Main PID: 13630 (grafana-server)
   Tasks: 7 (limit: 1152)
...

Этот вывод содержит информацию о процессе Grafana, включая его статус, основной идентификатор процесса (PID) и многое другое. ++ показывает, что процесс работает правильно.

Наконец, включите сервис для автоматического запуска Grafana при загрузке:

sudo systemctl enable grafana-server

Вы получите следующий вывод:

Output of systemctl enable grafana-serverSynchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

Это подтверждает, что + systemd + создал необходимые символические ссылки для автозапуска Grafana.

Grafana теперь установлена ​​и готова к использованию. Затем вы защитите свое соединение с Grafana с помощью обратного прокси-сервера и SSL-сертификата.

Шаг 2 - Настройка обратного прокси

Использование SSL-сертификата обеспечит безопасность ваших данных, зашифровав соединение с Grafana и обратно. Но, чтобы использовать это соединение, вам сначала нужно перенастроить Nginx в качестве обратного прокси-сервера для Grafana.

Откройте файл конфигурации Nginx, который вы создали, когда настраивали серверный блок Nginx с помощью команды «Зашифровать» по ссылке: #prerequisites [Prerequisites]. Вы можете использовать любой текстовый редактор, но для этого урока мы будем использовать + nano +:

sudo nano /etc/nginx/sites-available/

Найдите следующий блок:

/ И т.д. / Nginx / сайты Недоступные / your_domain

...
   location / {
       try_files $uri $uri/ =404;
   }
...

Поскольку вы уже настроили Nginx для связи по SSL и поскольку весь веб-трафик на ваш сервер уже проходит через Nginx, вам просто нужно указать Nginx перенаправлять все запросы в Grafana, который по умолчанию работает на порту + 3000 +.

Удалите существующую строку + try_files + в этом блоке + location + и замените ее следующей опцией + proxy_pass +.

/ И т.д. / Nginx / сайты Недоступные / your_domain

...
   location / {
       proxy_pass http://localhost:3000;
   }
...

Это отобразит прокси на соответствующий порт. Когда вы закончите, сохраните и закройте файл, нажав + CTRL + X +, затем + Y + и затем + ENTER +, если вы используете + nano +.

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

sudo nginx -t

Вы получите следующий вывод:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Наконец, активируйте изменения, перезагрузив Nginx:

sudo systemctl reload nginx

Теперь вы можете получить доступ к экрану входа Grafana по умолчанию, указав в веб-браузере + https: // +. Если вы не можете связаться с Grafana, убедитесь, что ваш брандмауэр настроен на пропуск трафика на порт + 443 +, а затем повторно проследите предыдущие инструкции.

Зашифровав соединение с Grafana, вы можете применять дополнительные меры безопасности, начиная с изменения учетных данных Grafana по умолчанию.

Шаг 3 - Обновление учетных данных

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

Начните с перехода к + https: // + в вашем веб-браузере. Это откроет экран входа по умолчанию, где вы увидите логотип Grafana, форму с просьбой ввести * адрес электронной почты или имя пользователя * и * пароль *, кнопку * Войти в систему и ссылку * Забыли пароль? * ,

изображение: https: //assets.digitalocean.com/articles/66778/Grafana_Login.png [Вход Grafana]

Введите + admin + в оба поля * User * и * Password *, а затем нажмите кнопку * Log in *.

На следующем экране вас попросят сделать вашу учетную запись более безопасной, изменив пароль по умолчанию:

изображение: https: //assets.digitalocean.com/articles/66778/Change_Password.png [Изменить пароль]

Введите пароль, который вы хотите начать использовать, в поля * Новый пароль * и * Подтвердите новый пароль *.

Здесь вы можете нажать * Сохранить *, чтобы сохранить новую информацию, или нажмите * Пропустить *, чтобы пропустить этот шаг. Если вы пропустите, вам будет предложено сменить пароль при следующем входе в систему.

Чтобы повысить безопасность вашей настройки Grafana, нажмите * Сохранить *. Вы вернетесь на страницу * Home Dashboard *:

изображение: https: //assets.digitalocean.com/articles/66778/Home_Dashboard.png [Домашняя панель инструментов]

Теперь вы защитили свою учетную запись, изменив учетные данные по умолчанию. Затем вы внесете изменения в конфигурацию Grafana, чтобы никто не мог создать новую учетную запись Grafana без вашего разрешения.

Шаг 4 - Отключение регистрации Grafana и анонимного доступа

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

Начните с открытия основного файла конфигурации Grafana для редактирования:

sudo nano /etc/grafana/grafana.ini

Найдите следующую директиву + allow_sign_up + под заголовком + [users] +:

/etc/grafana/grafana.ini

...
[users]
# disable user signup / registration
;allow_sign_up = true
...

Включение этой директивы с помощью + true + добавляет кнопку * Sign Up * на экран входа в систему, позволяя пользователям зарегистрироваться и получить доступ к Grafana.

Отключение этой директивы с помощью + false + удаляет кнопку * Sign Up * и повышает безопасность и конфиденциальность Grafana.

Раскомментируйте эту директиву, удалив +; + в начале строки и затем установив опцию + false +:

/etc/grafana/grafana.ini

...
[users]
# disable user signup / registration
allow_sign_up =
...

Затем найдите следующую директиву + enabled + под заголовком + [auth.anonymous] +:

/etc/grafana/grafana.ini

...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

Установка + enabled + в + true + дает незарегистрированным пользователям доступ к вашим информационным панелям; установка этой опции в + false + ограничивает доступ к панели мониторинга только для зарегистрированных пользователей.

Раскомментируйте эту директиву, удалив +; + в начале строки, а затем установив опцию + false +.

/etc/grafana/grafana.ini

...
[auth.anonymous]
enabled =
...

Сохраните файл и выйдите из текстового редактора.

Чтобы активировать изменения, перезапустите Grafana:

sudo systemctl restart grafana-server

Убедитесь, что все работает, проверив статус сервиса Grafana:

sudo systemctl status grafana-server

Как и прежде, выходные данные сообщат, что Графана + активен (работает) +.

Теперь укажите вашему веб-браузеру + https: // +. Чтобы вернуться к экрану * Зарегистрироваться *, наведите курсор на свой аватар в левом нижнем углу экрана и нажмите появившийся вариант * Выход *.

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

На данный момент Grafana полностью настроена и готова к использованию. Затем вы можете упростить процесс входа в свою организацию, пройдя аутентификацию через GitHub.

(Необязательно) Шаг 5. Настройка приложения GitHub OAuth

Для альтернативного подхода к входу вы можете настроить Grafana для аутентификации через GitHub, который предоставляет доступ для входа всем членам авторизованных организаций GitHub. Это может быть особенно полезно, когда вы хотите разрешить нескольким разработчикам совместно работать и получать доступ к метрикам, не создавая учетные данные для Grafana.

Начните с входа в учетную запись GitHub, связанную с вашей организацией, а затем перейдите на страницу своего профиля GitHub по адресу https://github.com/settings/profile [+ https: // github.com / settings / profile +].

Нажмите на название вашей организации в разделе «Настройки организации» в меню навигации в левой части экрана.

изображение: https: //assets.digitalocean.com/articles/66778/GitHub_Organization_Settings.png [Настройки организации GitHub]

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

Поскольку Grafana использует OAuth - открытый стандарт для предоставления удаленным третьим сторонам доступа к локальным ресурсам - для аутентификации пользователей через GitHub вам необходимо создать новый https: //developer.github. com / apps / building-oauth-apps / creation-an-oauth-app / [приложение OAuth в GitHub].

Нажмите на ссылку * OAuth Apps * в разделе * Настройки разработчика * в левой нижней части экрана.

Если у вас еще нет приложений OAuth, связанных с вашей организацией, на GitHub, вам сообщат, что * нет приложений, принадлежащих организации *. В противном случае вы увидите список приложений OAuth, уже подключенных к вашей учетной записи.

Нажмите кнопку * Зарегистрировать приложение *, чтобы продолжить.

На следующем экране введите следующие сведения об установке Grafana:

  • * Имя приложения * - Это помогает вам отличать ваши различные приложения OAuth друг от друга.

  • * URL-адрес домашней страницы * - сообщает GitHub, где найти Grafana. Введите + https: // + в это поле, заменив ++ своим доменом.

  • * Описание приложения * - Это описание цели вашего приложения OAuth.

  • * URL обратного вызова приложения * - это адрес, по которому пользователи будут отправлены после успешной аутентификации. Для Grafana это поле должно быть установлено в + https: /// login / github +.

Имейте в виду, что пользователи Grafana, входящие через GitHub, увидят значения, введенные вами в первых трех предыдущих полях, поэтому обязательно введите что-то значимое и подходящее.

После заполнения форма будет выглядеть примерно так:

изображение: https: //assets.digitalocean.com/articles/66778/GitHub_Register_OAuth_Application.png [Приложение OAuth для регистрации в GitHub]

Нажмите зеленую кнопку * Зарегистрировать приложение *.

Теперь вы будете перенаправлены на страницу, содержащую * Client ID * и * Client Secret *, связанные с вашим новым приложением OAuth. Запишите оба значения, так как вам нужно будет добавить их в основной файл конфигурации Grafana для завершения установки.

Создав приложение GitHub OAuth, вы теперь готовы перенастроить Grafana для использования GitHub для аутентификации.

(Необязательно) Шаг 6. Настройка Grafana в качестве приложения GitHub OAuth

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

Для начала откройте основной файл конфигурации Grafana.

sudo nano /etc/grafana/grafana.ini

Найдите заголовок + [auth.github] + и раскомментируйте этот раздел, удалив +; + в начале каждой строки, кроме +; team_ids = +, которая не будет изменена в этом уроке.

Затем настройте Grafana для использования GitHub со значениями + client_id + и + client_secret + вашего приложения OAuth.

  • Установите + enabled и` + разрешить подписку` на + true. Это активирует GitHub Authentication и позволяет членам разрешенной организации самостоятельно создавать учетные записи. Обратите внимание, что этот параметр отличается от свойства + allow_sign_up + в + [users] +, которое вы изменили в ссылке: # step-4-% E2% 80% 94-disabling-grafana-registrations-and-anonymous-access [Шаг 4].

  • Установите + client_id + и + client_secret + в значения, которые вы получили при создании приложения GitHub OAuth.

  • Задайте для + allow_organizations + 'имя вашей организации, чтобы только члены вашей организации могли зарегистрироваться и войти в Grafana.

Полная конфигурация будет выглядеть так:

/etc/grafana/grafana.ini

...
[auth.github]
enabled =
allow_sign_up =
client_id =
client_secret =
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;team_ids =
allowed_organizations =
...

Теперь вы рассказали Grafana все, что нужно знать о GitHub. Для завершения настройки вам необходимо включить перенаправления за обратным прокси-сервером. Это делается путем установки значения + root_url + под заголовком + [server] +.

/etc/grafana/grafana.ini

...
[server]
root_url = https://
...

Сохраните вашу конфигурацию и закройте файл.

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

sudo systemctl restart grafana-server

Наконец, убедитесь, что служба запущена и работает.

sudo systemctl status grafana-server

Выходные данные будут указывать, что служба + active (выполняется) +.

Теперь протестируйте вашу новую систему аутентификации, перейдя к + https: // +. Если вы уже вошли в Grafana, наведите указатель мыши на журнал аватаров в левом нижнем углу экрана и нажмите «Выйти» * в дополнительном меню, которое отображается рядом с вашим именем.

На странице входа в систему вы увидите новый раздел под исходной кнопкой * Вход в систему *, который включает в себя кнопку * Вход в GitHub * с логотипом GitHub.

изображение: https: //assets.digitalocean.com/articles/66778/Grafana_Login_Page_With_GitHub.png [Страница входа Grafana с помощью GitHub]

Нажмите кнопку * Войти через GitHub *, чтобы перейти на GitHub, где вы войдете в свою учетную запись GitHub и подтвердите свое намерение * Авторизовать Grafana *.

Нажмите зеленую кнопку * Авторизоваться *.

Теперь вы войдете в свою учетную запись Grafana. Если учетная запись Grafana еще не существует для пользователя, в который вы вошли, Grafana создаст новую учетную запись пользователя с разрешениями * Viewer *, гарантируя, что новые пользователи смогут использовать только существующие панели мониторинга.

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

sudo nano /etc/grafana/grafana.ini

Найдите директиву + auto_assign_org_role + под заголовком + [users] + и раскомментируйте параметр, удалив +; + в начале строки.

Установите директиву на одно из следующих значений:

  • + Viewer + - может использовать только существующие панели

  • + Editor + - может изменять использование, модифицировать и добавлять информационные панели

  • + Admin + - имеет разрешение на все

Этот урок установит автоматическое назначение + Viewer +:

/etc/grafana/grafana.ini

...
[users]
...
auto_assign_org_role =
...

После сохранения изменений закройте файл и перезапустите Grafana:

sudo systemctl restart grafana-server

Проверьте статус услуги:

sudo systemctl status grafana-server

Как и раньше, статус будет выглядеть как + active (выполняется) +.

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

Заключение

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

Чтобы расширить текущую установку Grafana, см. Https://grafana.com/dashboards[list официальных и созданных сообществом панелей мониторинга]. Чтобы узнать больше об использовании Grafana в целом, см. Http://docs.grafana.org/[official Grafana документацию] или ознакомьтесь с нашими https://www.digitalocean.com/community/tags/monitoring?type=tutorials [другие учебные пособия по мониторингу].

Related