API администрирования

Warning

[ru] DOCS_SHARED: "docs/grafana/latest/developer-resources/api-reference/http-api/api-legacy/admin.ru.md" ("/hugo/content/docs/grafana/latest/developer-resources/api-reference/http-api/api-legacy/admin.ru.md:23:1") shared directory "docs/grafana/latest/shared" not found

Требования

Чтобы использовать конечные точки API администрирования, необходимо применять basic-аутентификацию, и пользователь Grafana должен иметь право администратора сервера Grafana. Пользователь admin, с которым Grafana создаётся по умолчанию, имеет права на использование этих конечных точек API.

Вы не можете аутентифицироваться в HTTP API администрирования с помощью токенов сервисных учётных записей. Сервисные учётные записи ограничены организацией и ролью в организации, и им нельзя предоставить права администратора сервера Grafana.

Если вы используете Grafana Enterprise, для некоторых конечных точек потребуются определённые права. Дополнительные сведения см. в разделе Права управления доступом на основе ролей.

Получение настроек

GET /api/admin/settings

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
settings:read settings:*
settings:auth.saml:

settings:auth.saml:enabled (уровень свойства)

Пример запроса:

http
GET /api/admin/settings
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{
  "DEFAULT": {
    "app_mode":"production"
  },
  "analytics": {
    "google_analytics_ua_id":"",
    "reporting_enabled":"false"
  },
  "auth.anonymous":{
    "enabled":"true",
    "org_name":"Main Org.",
    "org_role":"Viewer"
  },
  "auth.basic":{
    "enabled":"false"
  },
  "auth.github":{
    "allow_sign_up":"false",
    "allowed_domains":"",
    "allowed_organizations":"",
    "api_url":"https://api.github.com/user",
    "auth_url":"https://github.com/login/oauth/authorize",
    "client_id":"some_id",
    "client_secret":"************",
    "enabled":"false",
    "scopes":"user:email,read:org",
    "team_ids":"",
    "token_url":"https://github.com/login/oauth/access_token"
  },
  "auth.google":{
    "allow_sign_up":"false","allowed_domains":"",
    "api_url":"https://www.googleapis.com/oauth2/v1/userinfo",
    "auth_url":"https://accounts.google.com/o/oauth2/auth",
    "client_id":"some_client_id",
    "client_secret":"************",
    "enabled":"false",
    "scopes":"https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
    "token_url":"https://accounts.google.com/o/oauth2/token"
  },
  "auth.ldap":{
    "config_file":"/etc/grafana/ldap.toml",
    "enabled":"false"
  },
  "auth.proxy":{
    "auto_sign_up":"true",
    "enabled":"false",
    "header_name":"X-WEBAUTH-USER",
    "header_property":"username"
  },
  "dashboards.json":{
    "enabled":"false",
    "path":"/var/lib/grafana/dashboards"
  },
  "database":{
    "host":"127.0.0.1:0000",
    "name":"grafana",
    "password":"************",
    "path":"grafana.db",
    "ssl_mode":"disable",
    "type":"sqlite3",
    "user":"root"
  },
  "emails":{
    "templates_pattern":"emails/*.html, emails/*.txt",
    "welcome_email_on_sign_up":"false",
    "content_types":"text/html"
  },
  "log":{
    "buffer_len":"10000",
    "level":"Info",
    "mode":"file"
  },
  "log.console":{
    "level":""
  },
  "log.file":{
    "daily_rotate":"true",
    "file_name":"",
    "level":"",
    "log_rotate":"true",
    "max_days":"7",
    "max_lines":"1000000",
    "max_lines_shift":"28",
    "max_size_shift":""
  },
  "paths":{
    "data":"/tsdb/grafana",
    "logs":"/logs/apps/grafana"},
    "security":{
    "admin_password":"************",
    "admin_user":"admin",
    "cookie_remember_name":"grafana_remember",
    "cookie_username":"grafana_user",
    "disable_gravatar":"false",
    "login_remember_days":"7",
    "secret_key":"************"
  },
  "server":{
    "cert_file":"",
    "cert_key":"",
    "certs_watch_interval": "0s",
    "domain":"mygraf.com",
    "enable_gzip":"true",
    "enforce_domain":"false",
    "http_addr":"127.0.0.1",
    "http_port":"0000",
    "protocol":"http",
    "root_url":"%(protocol)s://%(domain)s:%(http_port)s/",
    "router_logging":"true",
    "data_proxy_logging":"true",
    "static_root_path":"public"
  },
  "session":{
    "cookie_name":"grafana_sess",
    "cookie_secure":"false",
    "gc_interval_time":"",
    "provider":"file",
    "provider_config":"sessions",
    "session_life_time":"86400"
  },
  "smtp":{
    "cert_file":"",
    "enabled":"false",
    "from_address":"admin@grafana.localhost",
    "from_name":"Grafana",
    "ehlo_identity":"dashboard.example.com",
    "host":"localhost:25",
    "key_file":"",
    "password":"************",
    "skip_verify":"false",
    "user":""
  },
  "users":{
    "allow_org_create":"true",
    "allow_sign_up":"false",
    "auto_assign_org":"true",
    "auto_assign_org_role":"Viewer"
  }
}

Обновление настроек

PUT /api/admin/settings

Note

Доступно в Grafana Enterprise v8.0+.

Обновляет/удаляет и перезагружает настройки базы данных. Необходимо предоставить либо updates, либо removals, либо и то и другое.

Эта конечная точка поддерживает только изменения конфигурации auth.saml.

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
settings:write settings:*
settings:auth.saml:

settings:auth.saml:enabled (уровень свойства)

Пример запроса:

http
PUT /api/admin/settings
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

{
  "updates": {
    "auth.saml": {
      "enabled": "true"
    }
  },
  "removals": {
    "auth.saml": ["single_logout"]
  },
}

Пример ответа:

http
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 32

{
  "message":"Settings updated"
}

Коды состояния:

  • 200 — OK
  • 400 — Некорректный запрос
  • 401 — Не авторизован
  • 403 — Запрещено
  • 500 — Внутренняя ошибка сервера

Статистика Grafana

GET /api/admin/stats

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
server.stats:read н/д

Пример запроса:

http
GET /api/admin/stats
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{
  "users":2,
  "orgs":1,
  "dashboards":4,
  "snapshots":2,
  "tags":6,
  "datasources":1,
  "playlists":1,
  "stars":2,
  "alerts":2,
  "activeUsers":1
}

Предварительный просмотр отчёта об использовании Grafana

GET /api/admin/usage-report-preview

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

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Пример запроса:

http
GET /api/admin/usage-report-preview
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{
	"version": "8_4_0",
	"metrics": {
		"stats.active_admins.count": 1,
		"stats.active_editors.count": 1,
		"stats.active_sessions.count": 0,
		"stats.active_users.count": 2,
		"stats.active_viewers.count": 0,
		"stats.admins.count": 1,
		"stats.alert_rules.count": 0,
		"stats.alerting.ds.other.count": 0,
		"stats.alerts.count": 5,
		"stats.annotations.count": 6,
		"stats.api_keys.count": 1
  }
}

Глобальные пользователи

POST /api/admin/users

Создаёт нового пользователя.

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
users:create н/д

Пример запроса:

http
POST /api/admin/users HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "name":"User",
  "email":"user@graf.com",
  "login":"user",
  "password":"userpassword",
  "OrgId": 1
}

Обратите внимание, что OrgId — необязательный параметр, который можно использовать для назначения нового пользователя другой организации, когда auto_assign_org установлен в true.

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{"id":5,"message":"User created"}

Пароль пользователя

PUT /api/admin/users/:id/password

Меняет пароль конкретного пользователя.

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
users.password:write global.users:*

Пример запроса:

http
PUT /api/admin/users/2/password HTTP/1.1
Accept: application/json
Content-Type: application/json

{"password":"userpassword"}

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{"message": "User password updated"}

Права

PUT /api/admin/users/:id/permissions

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
users.permissions:write global.users:*

Пример запроса:

http
PUT /api/admin/users/2/permissions HTTP/1.1
Accept: application/json
Content-Type: application/json

{"isGrafanaAdmin": true}

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{"message": "User permissions updated"}

Удаление глобального пользователя

DELETE /api/admin/users/:id

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
users:delete global.users:*

Пример запроса:

http
DELETE /api/admin/users/2 HTTP/1.1
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{"message": "User deleted"}

Токены аутентификации пользователя

GET /api/admin/users/:id/auth-tokens

Возвращает список всех токенов аутентификации (устройств), с которых пользователь в настоящий момент авторизован.

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
users.authtoken:read global.users:*

Пример запроса:

http
GET /api/admin/users/1/auth-tokens HTTP/1.1
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "id": 361,
    "isActive": false,
    "clientIp": "127.0.0.1",
    "browser": "Chrome",
    "browserVersion": "72.0",
    "os": "Linux",
    "osVersion": "",
    "device": "Other",
    "createdAt": "2019-03-05T21:22:54+01:00",
    "seenAt": "2019-03-06T19:41:06+01:00"
  },
  {
    "id": 364,
    "isActive": false,
    "clientIp": "127.0.0.1",
    "browser": "Mobile Safari",
    "browserVersion": "11.0",
    "os": "iOS",
    "osVersion": "11.0",
    "device": "iPhone",
    "createdAt": "2019-03-06T19:41:19+01:00",
    "seenAt": "2019-03-06T19:41:21+01:00"
  }
]

Отзыв токена аутентификации пользователя

POST /api/admin/users/:id/revoke-auth-token

Отзывает указанный токен аутентификации (устройство) для пользователя. Пользователь выданного токена аутентификации (устройства) больше не будет авторизован, и при следующей активности потребуется аутентификация заново.

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
users.authtoken:write global.users:*

Пример запроса:

http
POST /api/admin/users/1/revoke-auth-token HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "authTokenId": 364
}

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{
  "message": "User auth token revoked"
}

Выход пользователя

POST /api/admin/users/:id/logout

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

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область
users.logout global.users:*

Пример запроса:

http
POST /api/admin/users/1/logout HTTP/1.1
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{
  "message": "User auth token revoked"
}

Перезагрузка конфигураций провижининга

POST /api/admin/provisioning/dashboards/reload

POST /api/admin/provisioning/datasources/reload

POST /api/admin/provisioning/plugins/reload

POST /api/admin/provisioning/access-control/reload

POST /api/admin/provisioning/alerting/reload

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

Требуемые права

Работает только с basic-аутентификацией (имя пользователя и пароль). Дополнительные сведения см. в разделе Требования.

Действие Область Сущность провижининга
provisioning:reload provisioners:accesscontrol accesscontrol
provisioning:reload provisioners:dashboards dashboards
provisioning:reload provisioners:datasources datasources
provisioning:reload provisioners:plugins plugins
provisioning:reload provisioners:alerting alerting

Пример запроса:

http
POST /api/admin/provisioning/dashboards/reload HTTP/1.1
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json

{
  "message": "Dashboards config reloaded"
}

Перезагрузка конфигурации LDAP

Эта конечная точка была удалена из API администрирования. Начиная с Grafana 12.4.0 настройки SSO автоматически перезагружают настройки LDAP из базы данных или из .toml-файла.

POST /api/admin/ldap/reload

Пример ответа:

http
HTTP/1.1 410
Content-Type: application/json

{"message":"This endpoint has been removed. LDAP configuration is now loaded from SSO settings."}

Ротация ключей шифрования данных

POST /api/admin/encryption/rotate-data-keys

Ротирует ключи шифрования данных.

Пример запроса:

http
POST /api/admin/encryption/rotate-data-keys HTTP/1.1
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 204
Content-Type: application/json

Повторное шифрование ключей шифрования данных

POST /api/admin/encryption/reencrypt-data-keys

Повторно шифрует ключи шифрования данных.

Пример запроса:

http
POST /api/admin/encryption/reencrypt-data-keys HTTP/1.1
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 204
Content-Type: application/json

Повторное шифрование секретов

POST /api/admin/encryption/reencrypt-secrets

Повторно шифрует секреты.

Пример запроса:

http
POST /api/admin/encryption/reencrypt-secrets HTTP/1.1
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 204
Content-Type: application/json

Откат секретов

POST /api/admin/encryption/rollback-secrets

Откатывает секреты.

Пример запроса:

http
POST /api/admin/encryption/rollback-secrets HTTP/1.1
Accept: application/json
Content-Type: application/json

Пример ответа:

http
HTTP/1.1 204
Content-Type: application/json