Автор выбрал COVID-19 Relief Fund для получения пожертвования в рамках программы Write for DOnations.
Grafana — это инструмент визуализации и мониторинга данных с открытым исходным кодом, который интегрируется со сложными данными из таких источников, как Prometheus, InfluxDB, Graphite, ElasticSearch. Grafana позволяет создавать предупреждения, уведомления и специальные фильтры для данных, а также проще взаимодействовать с коллегами посредством встроенных функций обмена данными.
В этом обучающем руководстве вы установите Grafana и защитите его сертификатом SSL и обратным прокси-сервером Nginx. После настройки Grafana у вас будет возможность настроить аутентификацию пользователя через GitHub, что позволит лучше организовать разрешения для вашей команды.
Для данного обучающего модуля вам потребуется следующее:
sudo
и настроенный брандмауэр ufw
.your_domain
. Вы можете купить доменное имя на Namecheap, получить его бесплатно на Freenom или воспользоваться услугами любого предпочитаемого регистратора доменных имен.your_domain
указывает на публичный IP-адрес вашего сервера.www.your_domain
указывает на публичный IP-адрес вашего сервера.На этом первом шаге вы установите Grafana на сервер Ubuntu 20.04. Вы можете установить Grafana либо путем загрузки непосредственно с официального веб-сайта, либо через репозиторий APT. Поскольку репозиторий APT упрощает установку обновлений Grafana и управление ими, в этом обучающем руководстве мы будем использовать этот метод.
Скачайте ключ GPG Grafana с помощью wget
, а затем выведите результат на apt-key
. Это добавит ключ в список надежных ключей установки APT, что позволит загрузить и проверить пакет Grafana с подписью GPG:
- 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
Теперь вы можете перейти к установке:
- sudo apt install grafana
После установки Grafana используйте systemctl
для запуска сервера Grafana:
- sudo systemctl start grafana-server
Затем убедитесь в работе Grafana, проверив состояние службы:
- sudo systemctl status grafana-server
Вывод должен выглядеть примерно так:
Output● grafana-server.service - Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-21 08:08:10 UTC; 4s ago
Docs: http://docs.grafana.org
Main PID: 15982 (grafana-server)
Tasks: 7 (limit: 1137)
...
В этом выводе содержится информация о процессе Grafana, включая его статус, главный идентификатор процесса (PID) и многое другое. active (running)
указывает, что процесс выполняется корректно.
Наконец, активируйте службу для автоматического запуска Grafana при загрузке:
- sudo systemctl enable grafana-server
Результат будет выглядеть следующим образом:
OutputSynchronizing 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.
Использование сертификата SSL гарантирует безопасность ваших данных путем шифрования подключения к Grafana и от него. Однако для использования этого подключения сначала необходимо перенастроить Nginx в обратный прокси-сервер для Grafana.
Откройте файл конфигурации Nginx, который вы создали при настройке блока сервера Nginx с помощью Let’s Encrypt в предварительных требованиях. Вы можете использовать любой текстовый редактор, но для этого обучающего руководства мы будем использовать nano
:
- sudo nano /etc/nginx/sites-available/your_domain
Найдите следующий блок:
...
location / {
try_files $uri $uri/ =404;
}
...
Поскольку вы уже настроили Nginx для связи через SSL и поскольку весь веб-трафик на ваш сервер уже проходит через Nginx, вам просто нужно сообщить Nginx, чтобы он пересылал все запросы в Grafana, который работает в порту 3000
по умолчанию.
Удалите существующую строку try_files
в этом location block
и замените ее на proxy_pass
:
...
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://your_domain
. Если вы не можете получить доступ к Grafana, убедитесь, что брандмауэр установлен на разрешение приема трафика в порту 443
, и затем отследите предыдущие инструкции.
После шифрования подключения к Grafana вы можете предпринять дополнительные меры защиты, начиная с изменения административных учетных данных Grafana по умолчанию.
Поскольку для каждой установки Grafana используются одни и те же административные учетные данные по умолчанию, лучше изменить данные для входа как можно скорее. На этом шаге вы обновите учетные данные для повышения безопасности.
Начнем с перехода к https://your_domain
из вашего веб-браузера. Это выведет экран входа по умолчанию, где вы увидите логотип Grafana, форму для ввода адреса электронной почты или имени пользователя (Email or username) и пароля (Password), кнопку входа (Log in) и ссылку восстановления пароля (Forgot your password?).
Введите admin
в поля Адрес электронной почты или имя пользователя и Пароль, а затем нажмите на кнопку Вход.
На следующем экране вам будет предложено лучше защитить учетную запись путем изменения пароля по умолчанию:
Введите пароль для запуска в поле New password (Новый пароль) и Confirm new password (Подтвердить новый пароль).
Здесь можно нажать Submit (Отправить) для сохранения новой информации и Skip (Пропустить), чтобы пропустить это действие. Если вы пропустите этот шаг, вам будет предложено изменить пароль при следующем входе.
Чтобы повысить безопасность настройки Grafana, нажмите Submit (Отправить). Вы попадете на приветственную панель управления Grafana:
Теперь вы защитили свою учетную запись, изменив учетные данные по умолчанию. Затем вы измените конфигурацию Grafana, чтобы никто не смог создать новую учетную запись Grafana без вашего разрешения.
Grafana предоставляет опции, позволяющие посетителям создавать пользовательские собственные учетные записи и просматривать панель управления без регистрации. Если доступ к Grafana через Интернет отсутствует или при работе с общедоступными данными, например состояние службы, возможно, вы захотите разрешить эти функции. Однако при использовании Grafana в режиме онлайн для работы с чувствительными данными анонимный доступ может сказаться на безопасности. Для решения этой проблемы необходимо немного изменить конфигурацию Grafana.
Запустите для редактирования главный файл конфигурации Grafana:
- sudo nano /etc/grafana/grafana.ini
Найдите директиву allow_sign_up
под заголовком [users]
:
...
[users]
# disable user signup / registration
;allow_sign_up = true
...
При активации этой директивы с помощью true
появится кнопка Sign Up (Регистрация) на экране входа, позволяющая пользователям самостоятельно регистрироваться и получать доступ к Grafana.
При отключении этой директивы с помощью false
кнопка Sign Up (Регистрация) удаляется, что повышает безопасность и конфиденциальность Grafana.
Раскомментируйте эту директиву, удалив ;
в начале строки, а затем установите опцию false
:
...
[users]
# disable user signup / registration
allow_sign_up = false
...
Затем найдите следующую директиву enabled
под заголовком [auth.anonymous]
:
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...
Установка enabled
вместо true
дает незарегистрированным пользователям доступ к вашим панелям управления; установка false
предоставляет доступ к панели управления только для зарегистрированных пользователей.
Раскомментируйте эту директиву, удалив ;
в начале строки, а затем измените опцию false
:
...
[auth.anonymous]
# enable anonymous access
enabled = false
...
Сохраните файл и выйдите из текстового редактора.
Чтобы активировать изменения, перезапустите Grafana:
- sudo systemctl restart grafana-server
Убедитесь, что все работает, проверив состояние службы Grafana:
- sudo systemctl status grafana-server
Как и ранее, вывод сообщит, что Grafana active (running)
.
Теперь впишите в строке браузера https://your_domain
. Чтобы вернуться на экран Регистрации, установите курсор на ваш аватар в нижнем левом углу экрана и нажмите на появившуюся кнопку Выход.
После выхода проверьте, что кнопка Sign Up (Регистрация) отсутствует и вы не можете зарегистрироваться, не введя учетные данные для входа.
На этом этапе Grafana полностью настроен и готов к работе. Затем вы можете упростить процесс входа для вашей организации путем аутентификации через GitHub.
Для регистрации альтернативным способом можно настроить аутентификацию Grafana через GitHub, что предоставляет доступ для входа всем членам авторизованных организаций GitHub. Это может быть особенно полезно, если вы хотите разрешить нескольким разработчикам взаимодействовать и получать доступ к метрическим показателям без необходимости создавать специальные учетные данные для Grafana.
Сначала войдите в учетную запись GitHub, связанную с вашей организацией, а затем перейдите на страницу профиля GitHub на https://github.com/settings/profile
Переключите контекст настроек, нажав на имя в левой части экрана, а затем выбрав свою организацию в выпадающем меню. Это позволит переключить контекст с Personal settings (Персональные настройки) на Organization settings (Настройки организации).
На следующем экране вы увидите Organization profile (Профиль организации), где можно будет изменить такие настройки, как Organization display name (Отображаемое имя организации), Email (Адрес электронной почты) организации и URL (URL-адрес) организации.
Поскольку Grafana использует OAuth — открытый стандарт для предоставления удаленного доступа к локальным ресурсам третьим сторонам — для аутентификации пользователей через GitHub, вам нужно будет создать новое приложение OAuth в GitHub.
Нажмите на ссылку OAuth Apps (Приложения OAuth) в Developer settings (Настройки разработчика) в нижнем левом углу экрана.
Если у вас уже нет приложений OAuth, связанных с вашей организацией на GitHub, вы получите уведомление No Organization Owned Applications (Нет приложений, принадлежащих организации). В противном случае вы увидите список приложений OAuth, уже подключенных к вашей учетной записи.
Нажмите на кнопку New OAuth App (Новое приложение OAuth), чтобы продолжить.
На следующем экране впишите следующие данные об установке Grafana:
https://your_domain
в это поле, заменив your_domain
на свой домен.https://your_domain/login/github
.Помните, что пользователи Grafana, которые выполняют вход через GitHub, будут видеть данные, введенные в первые три предыдущих поля, поэтому следует вводить значимую и соответствующую информацию.
После завершения форма будет выглядеть примерно следующим образом:
Нажмите на зеленую кнопку Register application (Регистрация приложения).
Теперь вы будете перенаправлены на страницу, содержащую Client ID (Идентификатор клиента) и Client Secret (Секрет клиента), связанные с вашим новым приложением OAuth. Запишите оба значения, так как потребуется добавить их в главный файл конфигурации Grafana для завершения настройки.
Предупреждение! Держите свой Идентификатор клиента и Секрет клиента в надежном закрытом месте, так как они могут быть использованы для атаки.
После создания вашего приложения OAuth для GitHub вы готовы изменить конфигурацию Grafana для использования GitHub для аутентификации.
Чтобы завершить аутентификацию GitHub для настройки Grafana, вы внесете некоторые изменения в файлы конфигурации Grafana.
Для начала откройте главный файл конфигурации Grafana.
- sudo nano /etc/grafana/grafana.ini
Найдите заголовок [auth.github]
и раскомментируйте этот раздел, удалив ;
в начале каждой строки, кроме ;allowed_domains =
и ;team_ids =
, которые не будут изменены в этом обучающем руководстве.
Затем выполните следующие изменения:
enabled
и allow_sign_up
вместо true
. Это позволит выполнить аутентификацию GitHub разрешит членам дозволенной организации самостоятельно создавать учетные записи. Обратите внимание, что эта настройка отличается от свойства allow_sign_up
в [users]
, которое вы изменили в Шаге 4.client_id
и client_secret
вместо значений, полученных во время создания приложения OAuth для GitHub.allowed_organizations
в качестве имени вашей организации, чтобы только члены вашей организации могли регистрироваться и входить в Grafana.Полная конфигурация будет выглядеть следующим образом:
...
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
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
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name
...
Теперь вы сообщили Grafana всю необходимую информацию о GitHub. Чтобы завершить настройку, вам нужно будет активировать переадресации за обратным прокси-сервером. Это выполняется путем установки значения root_url
под заголовком [server]
.
...
[server]
root_url = https://your_domain
...
Сохраните конфигурацию и закройте файл.
Затем перезапустите Grafana для активации изменений:
- sudo systemctl restart grafana-server
Наконец, убедитесь, что служба запущена и работает.
- sudo systemctl status grafana-server
Вывод будет указывать, что служба active (running)
.
Теперь протестируйте новую систему аутентификации, перейдя на https://your_domain
. Если вы уже вошли в Grafana, наведите мышку на аватар для входа в нижнем левом углу экрана и нажмите Sign out (Выход) в дополнительном меню, которое появляется рядом с вашим именем.
На странице входа вы увидите новый раздел под начальной кнопкой Log in (Вход), который включает кнопку Sign in with GitHub (Регистрация с помощью GitHub) с логотипом GitHub.
Нажмите на кнопку Sign in with GitHub (Регистрация с помощью GitHub) для перенаправления на GitHub, где вы зарегистрируете свою учетную запись GitHub и подтвердите свое намерение авторизовать Grafana (Authorize Grafana).
Нажмите на зеленую кнопку Authorize your_github_organization (Авторизовать your_github_organization).
Примечание. Убедитесь, что ваша учетная запись GitHub принадлежит к утвержденной организации, а ваш адрес электронной почты Grafana соответствует вашему адресу электронной почты GitHub. Если вы попытаетесь аутентифицировать учетную запись GitHub, которая не принадлежит к утвержденной организации, вы получите сообщение Login Failed (Ошибка входа) с текстом User not a member of one of the required organizations (Пользователь не является участником ни одной из утвержденных организаций).
Теперь вы выполните вход с помощью существующей учетной записи Grafana. Если учетная запись уже не существует для пользователя, в качестве которого вы выполнили вход, Grafana создаст новую учетную запись пользователя с разрешениями для просмотра (Viewer), чтобы новые пользователи могли использовать только существующие панели управления.
Чтобы изменить разрешения по умолчанию для новых пользователей, откройте главный файл конфигурации Grafana для редактирования.
- sudo nano /etc/grafana/grafana.ini
Найдите директиву auto_assign_org_role
под заголовком [users]
и раскомментируйте настройку, удалив ;
в начале строки.
Измените директиву на одно из следующих значений:
Viewer
— может использовать только существующие панели управленияEditor
— может использовать, изменять и добавлять панели управленияAdmin
— имеет разрешение выполнять все действияВ этом руководстве будет установлено автоматическое присвоение Viewer
:
...
[users]
...
auto_assign_org_role = Viewer
...
После сохранения изменений закройте файл и перезапустите Grafana:
- sudo systemctl restart grafana-server
Проверьте состояние службы:
- sudo systemctl status grafana-server
Как и ранее, состояние будет выглядеть как active (running)
.
На этом этапе вы полностью настроили Grafana, чтобы члены вашей организации GitHub могли регистрироваться и использовать вашу установку Grafana.
В этом обучающем руководстве вы установили, настроили и обеспечили защиту Grafana, а также научились давать разрешение членам вашей организации на аутентификацию через GitHub.
Чтобы расширить текущую установку Grafana, используйте список официальных и созданных сообществом панелей управления и плагинов. Дополнительную информацию об использовании Grafana в целом можно найти в официальной документации Grafana или обратиться к нашим другим обучающим руководствам по мониторингу.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!