Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
perxis-proto
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
12
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
perxis
perxis-proto
Commits
163bb2f7
Commit
163bb2f7
authored
1 year ago
by
Pavel Antonov
Browse files
Options
Downloads
Plain Diff
Добавлено описание протокола сервиса логирования
parents
ecd75686
b3370a43
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!30
Добавлено описание протокола сервиса логирования
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
proto/common/common.proto
+5
-2
5 additions, 2 deletions
proto/common/common.proto
proto/log/log.proto
+102
-0
102 additions, 0 deletions
proto/log/log.proto
proto/log/log_service.proto
+97
-0
97 additions, 0 deletions
proto/log/log_service.proto
with
204 additions
and
2 deletions
proto/common/common.proto
+
5
−
2
View file @
163bb2f7
...
...
@@ -14,10 +14,13 @@ message Filter {
message
FindOptions
{
repeated
string
sort
=
1
;
int32
page_num
=
2
;
int32
page_size
=
3
;
int32
page_num
=
2
;
// Deprecated
int32
page_size
=
3
;
// Deprecated
repeated
string
fields
=
4
;
bool
exclude_fields
=
5
;
int32
offset
=
6
;
int32
limit
=
7
;
}
...
...
This diff is collapsed.
Click to expand it.
proto/log/log.proto
0 → 100644
+
102
−
0
View file @
163bb2f7
syntax
=
"proto3"
;
package
log
;
import
"google/protobuf/timestamp.proto"
;
import
"google/protobuf/any.proto"
;
import
"common/error.proto"
;
option
go_package
=
"git.perx.ru/perxis/perxis-go/proto/log;log"
;
// LogLevel задает уровень журналирования.
enum
LogLevel
{
// INFO - обозначает сообщения с нормальным, операционным уровнем журналирования.
INFO
=
0
;
// WARNING - обозначает сообщения, которые содержат потенциально вредные ситуации.
WARNING
=
1
;
// ERROR - обозначает другие ошибки в работе.
ERROR
=
2
;
// CRITICAL - обозначает серьезные ошибки, из-за которых программа может не выполнять некоторые функции.
CRITICAL
=
3
;
// FATAL - обозначает очень серьезные ошибки, которые могут привести к остановке приложения.
FATAL
=
4
;
}
// LogEntry представляет собой структуру данных для хранения информации о журнале.
message
LogEntry
{
// id является уникальным идентификатором каждой записи в журнале.
string
id
=
1
;
// timestamp указывает на временную метку, указывающую когда было создано данное сообщение.
google.protobuf.Timestamp
timestamp
=
2
;
// level это поле, обозначающее уровень приоритета сообщения в логе.
LogLevel
level
=
3
;
// message это основное сообщение, которое требуется записать в лог.
string
message
=
4
;
// category указывает на категорию события.
// Примеры:
// -
string
category
=
5
;
// component обозначает компонент системы, где произошло данное событие.
// Примеры:
// - Items.Service
// - Items.API
// - Users.Service
// - Users.API
// - Janitor.Service
// - Tasks.Worker
string
component
=
6
;
// action описывает действие, которое было произведено. Это поле может принимать разные значения в зависимости от сервиса.
// Примеры:
// - item.create
// - item.update
// - organization.create
// - action.run
// - reference.create
string
event
=
7
;
// object это идентификатор объекта связанного с событием
// Идентификатор объекта должен быть в формате GlobalID:
// <контекст>/<тип объекта>/<идентификатор объекта>
// где:
// - <контекст> - представляет собой иднетификатор родительского объекта, если таковой имеется
// - <тип объекта> - представляет собой тип объекта, например:
// spaces, envs, cols, items, revs, fields, clients, roles, orgs, users
// - <идентификатор объекта> - представляет собой идентификатор объекта
//
// Примеры:
// /spaces/<space_id> - пространство
// /spaces/<space_id>/envs/<env_id> - окружение
// /spaces/<space_id>/envs/<env_id>/cols/<collection_id> - коллекция
// /spaces/<space_id>/cols/<collection_id> - коллекция в окружении "master"
// /spaces/<space_id>/envs/<env_id>/schema/<collection_id> - схема коллекции
// /spaces/<space_id>/envs/<env_id>/cols/<collection_id>/items/<item_id> - элемент коллекции
// /spaces/<space_id>/cols/<collection_id>/items/<item_id> - элемент коллекции в окружении "master"
// /spaces/<space_id>/envs/<env_id>/cols/<collection_id>/items/<item_id>/fields/<field_name> - поле элемента коллекции
// /spaces/<space_id>/envs/<env_id>/cols/<collection_id>/items/<item_id>/revs/<rev_id> - ревизия элемента коллекции
// /spaces/<space_id>/clients/<client_id> - клиент
// /spaces/<space_id>/roles/<role_id> - роль
// /orgs/<org_id> - организация
// /users/<user_id> - пользователь
// /services/<service_id> - сервис
string
object
=
8
;
// caller содержит идентификатор сущности вызвавшей событиe, аналогично полю object
//
// Примеры:
// /users/<user_id> - пользователь
// /spaces/<space_id>/clients/<client_id> - клиент
// /services/<service_id> - сервис
string
caller
=
9
;
// attr содержит дополнительные связанные с событием атрибуты в формате Any
// позволяет добавить дополнительные данные в событие
google.protobuf.Any
attr
=
10
;
// tags содержит теги связанные с событием, на усмотрение сервиса
repeated
string
tags
=
11
;
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
proto/log/log_service.proto
0 → 100644
+
97
−
0
View file @
163bb2f7
syntax
=
"proto3"
;
package
log
;
import
"common/common.proto"
;
import
"common/error.proto"
;
import
"log/log.proto"
;
import
"google/protobuf/timestamp.proto"
;
option
go_package
=
"git.perx.ru/perxis/perxis-go/proto/log;log"
;
// Сервис для записи активности в системе
// Позволяет всем компонентам системы записывать логи в единое хранилище и получать их оттуда
service
LogService
{
// Метод для записи логов
rpc
Log
(
stream
LogRequest
)
returns
(
LogResponse
)
{}
// Метод для записи одного лога
rpc
LogEntry
(
LogRequest
)
returns
(
LogResponse
)
{}
// Метод для поиска логов по заданным параметрам
rpc
Find
(
FindRequest
)
returns
(
FindResponse
)
{}
// Метод для удаления логов по заданным параметрам
rpc
Delete
(
DeleteRequest
)
returns
(
DeleteResponse
)
{}
}
// Запрос для лога
message
LogRequest
{
// Запись лога
LogEntry
entry
=
1
;
}
// Ответ сервера на запрос лога
message
LogResponse
{
// Содержит информацию об ошибке, если таковая имеется
common.Error
error
=
1
;
}
message
Filter
{
// Запрос на поиск логов
// Примеры:
// 1. `timestamp > '2019-01-01' AND timestamp < '2019-01-02'`
// 2. `timestamp > '2019-01-01' AND timestamp < '2019-01-02' AND level = 'error'`
// 3. `component = 'api' AND object_id = '123' AND object_type = 'item' AND space = 'spc1'`
// 4. `id in ['1', '2', '3']`
repeated
string
q
=
3
;
// Список выражений для фильтрации
}
// Запрос на поиск логов
message
FindRequest
{
// Фильтры для поиска
Filter
filter
=
2
;
// Опции поиска
common.FindOptions
options
=
3
;
}
// Результат поиска
message
FindResult
{
// Найденные записи лога
repeated
LogEntry
entries
=
1
;
// Использовавшийся для поиска фильтр
// Для
Filter
filter
=
2
;
// Использовавшиеся для поиска опции
common.FindOptions
options
=
3
;
// Общее количество найденных записей
uint32
total
=
4
;
}
// Ответ сервера на запрос поиска
message
FindResponse
{
oneof
response
{
// Результаты поиска
FindResult
result
=
1
;
// Информация об ошибке, если таковая имеется
common.Error
error
=
2
;
}
}
// Запрос на удаление логов
message
DeleteRequest
{
// Фильтры для удаления
Filter
filter
=
2
;
}
// Ответ сервера на запрос удаления
message
DeleteResponse
{
// Информация об ошибке, если таковая имеется
common.Error
error
=
1
;
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment