Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
bc664eb1
Commit
bc664eb1
authored
Sep 22, 2017
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(LogDB): сделал единую утилиту uniset2-logdb-adm, для работы с БД
(создание, загрузка логов, ...)
parent
3b4b4066
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
8 deletions
+69
-8
LogDB.h
extensions/LogDB/LogDB.h
+34
-3
Makefile.am
extensions/LogDB/Makefile.am
+1
-1
uniset2-logdb-adm
extensions/LogDB/uniset2-logdb-adm
+34
-4
No files found.
extensions/LogDB/LogDB.h
View file @
bc664eb1
...
...
@@ -45,7 +45,7 @@ namespace uniset
{
//------------------------------------------------------------------------------------------
/*!
\page page_LogDB База логов
\page page_LogDB База логов
(LogDB)
- \ref sec_LogDB_Comm
- \ref sec_LogDB_Conf
...
...
@@ -53,6 +53,7 @@ namespace uniset
- \ref sec_LogDB_REST
- \ref sec_LogDB_WEBSOCK
- \ref sec_LogDB_DETAIL
- \ref sec_LogDB_ADMIN
\section sec_LogDB_Comm Общее описание работы LogDB
...
...
@@ -62,10 +63,11 @@ namespace uniset
REST сервиса, позволяющего получать логи за указанный период в виде json.
Реализация намеренно простая, т.к. пока неясно нужно ли это и в каком виде.
Ожидается что контролируемых логов будет не очень много (максимум несколько десятков)
Ожидается что контролируемых лог
сервер
ов будет не очень много (максимум несколько десятков)
и каждый лог будет генерировать не более 2-5 мегабайт записей. Поэтому sqlite должно хватить.
\section sec_LogDB_Conf Конфигурирование LogDB
Для конфигурования необходимо создать секцию вида:
\code
<LogDB name="LogDB" ...>
<logserver name="" ip=".." port=".." cmd=".." description=".."/>
...
...
@@ -74,6 +76,17 @@ namespace uniset
</LogDB>
\endcode
При этом доступно два способа:
* Первый - это использование секции в общем файле проекта (cofigure.xml).
* Второй способ - позволят просто создать xml-файл с одной настроечной секцией и указать его
в аргументах командной строки
\code
uniset2-logdb --single-confile logdbconf.xml
\endcode
\section sec_LogDB_DB LogDB Работа с БД
Для оптимизации, запись в БД сделана не по каждому сообщению, а через промежуточнй буффер.
Т.е. только после того как в буфере скапливается \a qbufSize сообщений (строк) буфер скидывается в базу.
...
...
@@ -106,7 +119,7 @@ namespace uniset
\section sec_LogDB_WEBSOCK LogDB Поддержка web socket
В LogDB встроена возможность
realtime чтения логов
, через websocket.
В LogDB встроена возможность
просмотра логов в реальном времени
, через websocket.
Список доступных для подключения лог-серверов доступен по адресу:
\code
ws://host:port/logdb/ws/
...
...
@@ -125,6 +138,24 @@ namespace uniset
чтение данных от логсерверов, посылка сообщений в websockets, запись в БД.
При этом обработка запросов REST API реализуется отдельными потоками контролируемыми libpoco.
\section sec_LogDB_ADMIN LogDB Вспомогательная утилита (uniset2-logdb-adm).
Для "обслуживания БД" (создание, конвертирование, ротация) имеется специальная утилита uniset2-logdb-adm.
Т.к. logdb при своём запуске подразумевает, что БД уже создана. То для создания БД можно воспользоваться
командой
\code
uniset2-logdb-adm create dbfilename
\endcode
Для того, чтобы конвертировать (загрузить) отдельные лог-файлы в базу, можно воспользоваться командой
\code
uniset2-logdb-adm load logfile1 logfile2...logfileN
\endcode
Более детальное описание параметров см. \b uniset2-logdb-adm \b help
\todo conf: может быть даже добавить поддержку конфигурирования в формате yaml.
\todo Добавить настройки таймаутов, размера буфера, размера для резервирования под строку, количество потоков для http и т.п.
\todo db: Сделать настройку, для формата даты и времени при выгрузке из БД (при формировании json).
...
...
extensions/LogDB/Makefile.am
View file @
bc664eb1
...
...
@@ -2,7 +2,7 @@ if DISABLE_SQLITE
else
bin_SCRIPTS
=
@PACKAGE@-logdb-
create
bin_SCRIPTS
=
@PACKAGE@-logdb-
adm
bin_PROGRAMS
=
@PACKAGE@-logdb @PACKAGE@-logdb-conv
@PACKAGE@
_logdb_LDADD
=
$(top_builddir)
/extensions/DBServer-SQLite/libUniSet2-sqlite.la
$(top_builddir)
/lib/libUniSet2.la
...
...
extensions/LogDB/uniset2-logdb-
create
→
extensions/LogDB/uniset2-logdb-
adm
View file @
bc664eb1
...
...
@@ -3,16 +3,32 @@
usage
()
{
echo
"Usage:
${
0
##*/
}
dbfile"
echo
"Usage:
${
0
##*/
}
command [arguments]"
echo
"Commands:"
echo
" help - this mesage"
echo
" create dbfile - create database"
echo
" load dbfile [logname1:]logfile1.log [logname2:]logfile2.log... - load logs to database"
echo
" logfile - log file"
echo
" [lognameX] - log name for db. Default: name of logfile"
echo
" : - separator for logname"
echo
""
}
[
-z
"
$1
"
]
&&
usage
&&
exit
1
dbfile
=
"
$1
"
[
-a
"
$dbfile
"
]
&&
echo
"
$dbfile
already exists.."
&&
exit
1
# create database
if
[
"
$1
"
==
"create"
]
;
then
sqlite3
$dbfile
<<
"_EOF_"
shift
dbfile
=
"
$1
"
[
-z
"
$dbfile
"
]
&&
usage
&&
exit
1
[
-a
"
$dbfile
"
]
&&
echo
"
$dbfile
already exists.."
&&
exit
1
sqlite3
$dbfile
<<
"_EOF_"
PRAGMA
foreign_keys
=
ON
;
...
...
@@ -26,3 +42,17 @@ CREATE TABLE logs (
)
;
_EOF_
exit
$?
fi
# load
if
[
"
$1
"
==
"load"
]
;
then
shift
[
-z
"
$1
"
]
&&
usage
&&
exit
1
[
-z
"
$2
"
]
&&
usage
&&
exit
1
uniset2-logdb-conv
$*
exit
$?
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment