Commit bc664eb1 authored by Pavel Vainerman's avatar Pavel Vainerman

(LogDB): сделал единую утилиту uniset2-logdb-adm, для работы с БД

(создание, загрузка логов, ...)
parent 3b4b4066
......@@ -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).
......
......@@ -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
......
......@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment