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

Вступление

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

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

Предпосылки

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

  • Один сервер Ubuntu 16.04, настроенный с помощью учебника Initial Server Setup с Ubuntu 16.04, включая sudo non -руткит и брандмауэр.

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

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

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

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

  • Nginx настроен, следуя первым двум шагам учебника https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 как установить Nginx в Ubuntu 16.04] ,

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

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

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

Вы можете установить 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 16.04, версия Grafana там может быть не самой последней, поэтому мы будем использовать официальный репозиторий Grafana на https: // packagecloud.io/[packagecloud].

Загрузите пакет с облаком GPG key с помощью + curl +, затем https: // www .digitalocean.com / community / tutorials / anstruction-to-linux-io-redirection # pipe [направить вывод] в + apt-key +. Это добавит ключ в список доверенных ключей вашей установки APT, что позволит вам загрузить и проверить подписанный GPG пакет Grafana.

curl https://packagecloud.io/gpg.key | sudo apt-key add -

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

sudo add-apt-repository "deb https://packagecloud.io/grafana/stable/debian/ stretch main"

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

sudo apt-get update

И убедитесь, что Grafana будет установлена ​​из репозитория packagecloud.

apt-cache policy grafana

Выходные данные сообщают вам версию Grafana, которая будет установлена ​​и откуда будет получен пакет. Убедитесь, что кандидат на установку поступит из официального репозитория Grafana по адресу + https: // packagecloud.io / grafana / stable / debian +.

Output of apt-cache policy grafanagrafana:
 Installed: (none)
 Candidate: 4.6.2
 Version table:
    4.6.2 500
       500  stretch/main amd64 Packages
...

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

sudo apt-get install grafana

После установки Grafana вы готовы запустить его.

sudo systemctl start grafana-server

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

sudo systemctl status grafana-server

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

Если статус службы не + активный (работает) +, просмотрите выходные данные и повторно проследите предыдущие шаги, чтобы решить проблему.

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 Thu 2017-12-07 12:10:33 UTC; 19s ago
    Docs: http://docs.grafana.org
Main PID: 14796 (grafana-server)
   Tasks: 6
  Memory: 32.0M
     CPU: 472ms
  CGroup: /system.slice/grafana-server.service
          └─14796 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins
...

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

sudo systemctl enable grafana-server

Вывод подтверждает, что + systemd + создал необходимые символические ссылки для автозапуска Grafana. Если вы получили сообщение об ошибке, следуйте инструкциям в терминале, чтобы устранить проблему, прежде чем продолжить.

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

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

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

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

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

sudo nano /etc/nginx/sites-available/

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

/etc/nginx/sites-available/example.com

...
   location / {
       # First attempt to serve request as file, then
       # as directory, then fall back to displaying a 404.
       try_files $uri $uri/ =404;
   }
...

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

Удалите существующую строку + try_files + в этом блоке местоположения и замените ее следующим содержимым, которое начинается с + proxy_ +.

/etc/nginx/sites-available/example.com

...
   location / {
       proxy_pass http://localhost:3000;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'upgrade';
       proxy_set_header Host $host;
       proxy_cache_bypass $http_upgrade;
   }
...

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

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

sudo nginx -t

Выходные данные должны сообщать вам, что синтаксис + в порядке + и что + тест успешен +. Если вы получили сообщение об ошибке, следуйте инструкциям на экране.

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

sudo systemctl reload nginx

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

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

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

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

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

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/default-login.png [Вход Grafana]

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

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

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

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/main-menu.png [Меню Grafana]

Теперь вы находитесь на странице * Профиль пользователя *, где вы можете изменить * Имя *, * Электронная почта * и * Имя пользователя *, связанные с вашей учетной записью. Вы также можете обновить настройки * Preferences *, например * UI Theme *, и изменить свой пароль.

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/user-profile.png [настройки профиля Grafana]

Введите свое имя, адрес электронной почты и имя пользователя, которое вы хотите использовать в полях * Имя *, * Электронная почта * и * Имя пользователя *, а затем нажмите кнопку * Обновить * в разделе * Информация *, чтобы сохранить настройки.

При желании вы также можете изменить * UI Theme * и * Timezone * в соответствии со своими потребностями, а затем нажать кнопку * Update * в области * Preferences *, чтобы сохранить изменения. Grafana предлагает темы темных интерфейсов * Dark * и * Light *, а также тему * Default *, для которой по умолчанию установлено значение * Dark *.

Наконец, измените пароль, связанный с вашей учетной записью, нажав кнопку * Изменить пароль * внизу страницы. Вы попадете на экран * Изменить пароль *.

Введите свой текущий пароль * admin * в поле * Старый пароль *, а затем введите пароль, который вы хотели бы начать использовать, в поля * Новый пароль * и * Подтверждение пароля *.

Нажмите * Изменить пароль *, чтобы сохранить новую информацию, или нажмите * Отмена *, чтобы отменить изменения.

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

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/user-profile2.png [Графана сменила пароль успешно]

Теперь вы защитили свою учетную запись, изменив учетные данные по умолчанию, поэтому давайте также позаботимся о том, чтобы никто не мог создать новую учетную запись 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

Как и прежде, выходные данные должны сообщать, что Grafana + active (running) +. Если это не так, просмотрите любые сообщения терминала для получения дополнительной помощи.

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

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

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

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

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

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

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

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/github-settings.png [страница настроек GitHub]

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

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

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

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/organization-profile.png [Настройки организации GitHub]

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

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

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

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

  • * URL-адрес домашней страницы * - сообщает GitHub, где найти Grafana.

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

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

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

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

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/new-oauth-application.png [Приложение GitHub Register OAuth]

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

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

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/client-id.png [Сведения о приложении GitHub]

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

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

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

sudo nano /etc/grafana/grafana.ini

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

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

  • Установите для + enabled + и + allow_sign_up + значение true. Это включит аутентификацию GitHub и позволит членам разрешенной организации самостоятельно создавать учетные записи. Обратите внимание, что этот параметр отличается от свойства + 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, нажмите на маленький логотип Grafana в верхнем левом углу экрана, наведите курсор мыши на свое имя пользователя и нажмите * Выйти * в дополнительном меню, которое появляется справа от твое имя.

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

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/login-with-github.png [Страница входа Grafana с помощью GitHub]

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

Нажмите зеленую кнопку * Authorize your_github_organization *. В этом примере кнопка гласит: * Авторизовать SharkTheSammy *.

изображение: http: //assets.digitalocean.com/articles/install-and-secure-grafana/authorize-grafana.png [Авторизоваться с помощью GitHub]

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

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

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

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

sudo nano /etc/grafana/grafana.ini

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

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

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

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

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

/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://www.digitalocean.com/community/tutorials/how-to-install-prometheus-on-ubuntu-16-04[Как установить Prometheus в Ubuntu 16.04] и How для добавления панели Prometheus в Grafana.

Чтобы расширить текущую установку Grafana, см. Https://grafana.com/dashboards[list официальных и созданных сообществом панелей мониторинга].

А чтобы узнать больше об использовании Grafana в целом, см. Документацию official Grafana.

Related