Поиск по сайту:

Как установить и защитить Grafana в Ubuntu 22.04


Введение

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

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

Предпосылки

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

  • Один сервер Ubuntu 22.04, настроенный в соответствии с Руководством по начальной настройке сервера для Ubuntu 22.04, включая пользователя без полномочий root с привилегиями sudo и брандмауэр, настроенный с помощью ufw.
  • Полностью зарегистрированное доменное имя. В этом руководстве везде используется ваш_домен. Вы можете приобрести доменное имя на Freenom или воспользоваться услугами регистратора доменов по вашему выбору.
  • Для вашего сервера настроены следующие записи DNS. Вы можете прочитать статью «Как добавить домены», чтобы узнать, как их добавить, если вы используете DigitalOcean.
    • Запись A с your_domain, указывающая на общедоступный IP-адрес вашего сервера.
    • Запись A с www.your_domain, указывающая на общедоступный IP-адрес вашего сервера.

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

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

    Загрузите вывод Grafana по конвейеру в gpg. Это преобразует ключ GPG из base64 в двоичный формат. Затем направьте вывод в tee, чтобы сохранить ключ в файле /usr/share/keyrings/grafana.gpg.

    1. wget -q -O - https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg > /dev/null

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

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

    1. echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

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

    1. sudo apt update

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

    1. sudo apt install grafana

    После установки Grafana используйте systemctl для запуска сервера Grafana:

    1. sudo systemctl start grafana-server

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

    1. 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 Tue 2022-09-27 14:42:15 UTC; 6s ago Docs: http://docs.grafana.org Main PID: 4132 (grafana-server) Tasks: 7 (limit: 515) ...

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

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

    1. sudo systemctl enable grafana-server

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

    Output
    Synchronizing 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 с помощью Let’s Encrypt в предварительных условиях. Вы можете использовать любой текстовый редактор, но для этого урока мы будем использовать nano:

    1. sudo nano /etc/nginx/sites-available/your_domain

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

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

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

    Удалите существующую строку try_files в этом блоке местоположения и замените ее следующими параметрами:

    ...
    	location / {
    	   proxy_set_header Host $http_host;
    	   proxy_pass http://localhost:3000;
    	}
    ...
    

    Это сопоставит прокси с соответствующим портом и передаст имя сервера в заголовке.

    Кроме того, для правильной работы соединений Grafana Live WebSocket добавьте следующий раздел вне раздела server:

    map $http_upgrade $connection_upgrade {
      default upgrade;
      '' close;
    }
    
    server {
        ...
    

    Затем добавьте следующий раздел location в блок server:

    server {
    ...
    	location /api/live {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_set_header Host $http_host;
            proxy_pass http://localhost:3000;
    	}
    ...
    

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

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

    map $http_upgrade $connection_upgrade {
    	default upgrade;
    	'' close;
    }
    
    server {
    	...
    
    	root /var/www/your_domain/html;
    	index index.html index.htm index.nginx-debian.html;
    
    	server_name your_domain www.your_domain;
    
    	location / {
    		proxy_set_header Host $http_host;
    		proxy_pass http://localhost:3000;
    	}
    
    	location /api/live {
    		proxy_http_version 1.1;
    		proxy_set_header Upgrade $http_upgrade;
    		proxy_set_header Connection $connection_upgrade;
    		proxy_set_header Host $http_host;
    		proxy_pass http://localhost:3000;
    	}
    
       ...
    }
    

    Примечание. Если вы использовали инструмент certbot для настройки SSL-сертификатов Let’s Encrypt, ваш файл конфигурации может содержать дополнительные строки и серверный блок, добавленные Certbot.

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

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

    1. sudo nginx -t

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

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

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

    1. sudo systemctl reload nginx

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

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

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

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

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

    Введите admin в поля «Электронная почта» или «Имя пользователя» и «Пароль», а затем нажмите кнопку «Войти».

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

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

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

    Чтобы повысить безопасность вашей установки Grafana, нажмите «Отправить». Вы перейдете на панель управления «Добро пожаловать в Grafana»:

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

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

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

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

    1. sudo nano /etc/grafana/grafana.ini

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

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

    Включение этой директивы с true добавляет кнопку «Зарегистрироваться» на экран входа в систему, позволяя пользователям регистрироваться и получать доступ к Grafana.

    Отключение этой директивы с помощью false удаляет кнопку «Зарегистрироваться» и усиливает безопасность и конфиденциальность 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:

    1. sudo systemctl restart grafana-server

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

    1. sudo systemctl status grafana-server

    Как и раньше, в выводе будет указано, что Grafana активна (работает).

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

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

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

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

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

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

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

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

    Потому что Grafana использует приложение OAuth в GitHub.

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

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

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

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

    • Имя приложения. Это поможет вам отличить разные приложения OAuth друг от друга.
    • URL-адрес домашней страницы: сообщает GitHub, где найти Grafana. Введите в это поле https://ваш_домен, заменив ваш_домен своим доменом.
    • Описание приложения. Здесь содержится описание назначения вашего приложения OAuth.
    • URL-адрес обратного вызова приложения. Это адрес, на который будут перенаправляться пользователи после успешной аутентификации. Для Grafana в этом поле должно быть указано значение https://ваш_домен/login/github.

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

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

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

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

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

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

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

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

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

    1. sudo nano /etc/grafana/grafana.ini

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

    • ;allowed_domains =
    • ;team_ids =
    • ;role_attribute_path =
    • ;role_attribute_strict=false
    • ;allow_assign_grafana_admin=false

    Далее внесите следующие изменения:

    • Установите для enabled и allow_sign_up значение true. Это включит аутентификацию GitHub и позволит членам разрешенной организации самостоятельно создавать учетные записи. Обратите внимание, что этот параметр отличается от свойства allow_sign_up в разделе [users], которое вы изменили на шаге 4.
    • Задайте для client_id и client_secret значения, которые вы получили при создании приложения GitHub OAuth.
    • Задайте для 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
    ;role_attribute_path =
    ;role_attribute_strict = false
    ;allow_assign_grafana_admin = false
    ...
    

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

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

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

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

    1. sudo systemctl restart grafana-server

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

    1. sudo systemctl status grafana-server

    Вывод покажет, что служба активна (работает).

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

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

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

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

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

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

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

    1. sudo nano /etc/grafana/grafana.ini

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

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

    • Просмотр: может использовать только существующие сводки.
    • Редактор: может использовать, изменять и добавлять информационные панели.
    • Администратор: имеет право делать все.

    В этом руководстве будет установлено автоматическое назначение для Viewer:

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

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

    1. sudo systemctl restart grafana-server

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

    1. sudo systemctl status grafana-server

    Как и раньше, статус будет читаться как active (running).

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

    Заключение

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

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