1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/calvinwilliams-logpipe

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

1. Введение

Здесь описывается проект LogPipe.

2. Установка

  • 2.1. Подготовка к установке
    • 2.1.1. Компиляция и установка LogPipe
    • 2.1.2. Компиляция и установка LogPipe с зависимостями
    • 2.1.3. Сборка и установка LogPipe с зависимостями:
      • 2.1.3.1. LogPipe-output-HDFS
      • 2.1.3.2. LogPipe-output-ES
    • 2.1.4. Тестирование установки

3. Использование

  • 3.1. Примеры
    • 3.1.1. Пример сбора журналов из файлов
    • 3.1.2. Пример сбора журналов из системного журнала
    • 3.1.3. Пример тестирования
    • 3.1.4. Пример конфигурации LogPipe
    • 3.1.5. Пример настройки событий

4. Анализ

  • 4.1. LogPipe
  • 4.2. Зависимости:
    • 4.2.1. Входной файл LogPipe
    • 4.2.2. Выходной файл LogPipe
    • 4.2.3. Входной TCP LogPipe
    • 4.2.4. Выходной TCP LogPipe
    • 4.2.5. Входной Exec LogPipe
    • 4.2.6. Выходной HDFS LogPipe
    • 4.2.7. Выходной ES LogPipe

5. Развёртывание

  • 5.1. Запуск
  • 5.2. Остановка
  • 5.3. Перезапуск

6. Характеристики

  • 6.1. Flume-NG
  • 6.2. LogPipe
  • 6.3. Сравнение

7. Реализация

  • 7.1. Архитектура LogPipe
  • 7.2. Входные данные:
    • 7.2.1. Чтение из файла logpipe-input-file
    • 7.2.2. TCP ввод logpipe-input-tcp
    • 7.2.3. Выполнение команд logpipe-input-exec
    • 7.2.4. Kafka ввод logpipe-input-kafka
  • 7.3. Передача данных
  • 7.4. Выходные данные:
    • 7.4.1. Запись в файл logpipe-output-file
    • 7.4.2. TCP вывод logpipe-output-tcp
    • 7.4.3. Вывод на стандартный вывод logpipe-output-stdout
    • 7.4.4. Kafka вывод logpipe-output-kafka
    • 7.4.5. ES вывод logpipe-output-es
    • 7.4.6. HDFS вывод logpipe-output-hdfs

8. Заключение Данный текст представляет собой техническую документацию, связанную с разработкой и использованием программного обеспечения. Основной язык текста — английский.

К сожалению, без контекста сложно точно определить тематику и содержание исходного текста. Однако можно предположить, что речь идёт о программном обеспечении для обработки логов (журналов событий) под названием LogPipe. В тексте описывается архитектура и компоненты этого ПО, а также приводятся инструкции по его сборке и запуску.

В тексте также упоминаются различные плагины и настройки, которые могут быть использованы при работе с LogPipe, но их конкретное назначение не раскрывается.

Для более точного перевода и понимания содержания исходного текста рекомендуется обратиться к специалистам в области разработки программного обеспечения или предоставить контекст использования данного фрагмента. Перевод текста запроса на русский язык:

-std=gnu99 -c worker.c gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -o logpipe main.o monitor.o worker.o -L. -L/home/calvin/lib -rdynamic -ldl -lz -llogpipe_api


��ִ�г���logpipe������־�ɼ����ش�������̬��liblogpipe_api.so����������á�

Ȼ��װ����Ŀ�꣬Ĭ��`logpipe`��װ��`$HOME/bin`��`liblogpipe_api.so`��װ��`$HOME/lib`��`logpipe_api.h`��һЩͷ�ļ���װ��`$HOME/include/logpipe`�������Ҫ�ı䰲װĿ¼���޸�`makeinstall`���`_HDERINST`��`_LIBINST`��`_BININST`��

$ make -f makefile.Linux install rm -f /home/calvin/bin/logpipe cp -rf logpipe /home/calvin/bin/ rm -f /home/calvin/lib/liblogpipe_api.so cp -rf liblogpipe_api.so /home/calvin/lib/ rm -f /home/calvin/include/logpipe/rbtree.h cp -rf rbtree.h /home/calvin/include/logpipe/ rm -f /home/calvin/include/logpipe/LOGC.h cp -rf LOGC.h /home/calvin/include/logpipe/ rm -f /home/calvin/include/logpipe/fasterjson.h cp -rf fasterjson.h /home/calvin/include/logpipe/ rm -f /home/calvin/include/logpipe/rbtree_tpl.h cp -rf rbtree_tpl.h /home/calvin/include/logpipe/ rm -f /home/calvin/include/logpipe/logpipe_api.h cp -rf logpipe_api.h /home/calvin/include/logpipe/

2.1.2. Установка logpipe

Файлы в директориях src и src-plugins:

$ cd ../src-plugins
$ make -f makefile.Linux 
gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -I. -I/home/calvin/include -std=gnu99 -I/home/calvin/include/logpipe  -c logpipe-input-file.c
gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -o logpipe-input-file.so logpipe-input-file.o -shared -L. -L/home/calvin/so -L/home/calvin/lib -llogpipe_api -rdynamic 
gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -I. -I/home/calvin/include -std=gnu99 -I/home/calvin/include/logpipe  -c logpipe-output-file.c
gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -o logpipe-output-file.so logpipe-output-file.o -shared -L. -L/home/calvin/so -L/home/calvin/lib -llogpipe_api -rdynamic 
gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -I. -I/home/calvin/include -std=gnu99 -I/home/calvin/include/logpipe  -c logpipe-input-tcp.c
gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -o logpipe-input-tcp.so logpipe-input-tcp.o -shared -L. -L/home/calvin/so -L/home/calvin/lib -llogpipe_api -rdynamic 
gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -I. -I/home/calvin/include -std=gnu99 -I/home/calvin/include/logpipe  -c logpipe-output-tcp.c
gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -o logpipe-output-tcp.so logpipe-output-tcp.o -shared -L. -L/home/calvin/so -L/home/calvin/lib -llogpipe_api -rdynamic 

Ȼ��װ����Ŀ�꣬Ĭ���Դ������װ��$HOME/so�������Ҫ�ı䰲װĿ¼���޸�makeinstall���_LIBINST��

$ make -f makefile.Linux install
rm -f /home/calvin/so/logpipe-input-file.so
cp -rf logpipe-input-file.so /home/calvin/so/
rm -f /home/calvin/so/logpipe-output-file.so
cp -rf logpipe-output-file.so /home/calvin/so/
rm -f /home/calvin/so/logpipe-input-tcp.so
cp -rf logpipe-input-tcp.so /home/calvin/so/
rm -f /home/calvin/so/logpipe-output-tcp.so
cp -rf logpipe-output-tcp.so /home/calvin/so/
### 2.1.3. Установка плагинов logpipe
#### 2.1.3.1. logpipe-output-hdfs

Настройка переменных окружения для работы с hadoop:

`~/.bash_profile`

for hadoop

export HADOOP_HOME=/home/hdfs/expack/hadoop export PATH=$HADOOP_HOME/bin:$PATH export HADOOP_CLASSPATH=hadoop classpath --glob export CLASSPATH=$HADOOP_CLASSPATH:$CLASSPATH export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server:$LD_LIBRARY_PATH


`makefile.Linux`

... CFLAGS_hdfs = $(CFLAGS) -I/home/hdfs/expack/hadoop/include ... LFLAGS_hdfs = $(LFLAGS) -L/home/hdfs/expack/hadoop/lib/native -lhdfs -L$(HOME)/expack/jdk1.8.0_152/jre/lib/amd64/server -ljvm ...


��`src-plugins`���ֹ������������Ƶ�`$HOME/so`Ŀ¼

$ make -f makefile.Linux logpipe-output-hdfs.so gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -I. -I/home/calvin/include -std=gnu99 -I/home/calvin/include/logpipe -I/home/hdfs/expack/hadoop/include -c logpipe-output-hdfs.c gcc -g -fPIC -O2 -Wall -Werror -fno-strong-aliasing -o logpipe-output-hdfs.so 4.2. Конфигурация

4.2.1. logpipe-input-file

inotify — это механизм ядра Linux, который отслеживает изменения в файловой системе и уведомляет об этом приложения.

Параметры:

path — путь к файлу или каталогу, за которым будет вестись наблюдение;
files, files2, files3 — регулярные выражения для имён файлов, которые будут отслеживаться;
exclude_files, exclude_files2, exclude_files3 — регулярные выражения для исключения файлов из наблюдения;
rotate_size — размер файла после достижения которого произойдёт ротация;
exec_before_rotating — команда, которая будет выполнена перед ротацией;
exec_after_rotating — команда, которая будет выполнена после ротации;
compress_algorithm — алгоритм сжатия данных;
max_append_count — максимальное количество добавлений в файл;
max_usleep_interval — максимальный интервал ожидания между проверками размера файла;
min_usleep_interval — минимальный интервал ожидания между проверками размера файла;
inheritance_lines_after_rotating — количество строк, которые будут унаследованы новым файлом после ротации;
line_mode — режим работы с файлами, содержащими строки;

Переменные окружения:

LOGPIPE_ROTATING_PATHNAME — имя файла до ротации;
LOGPIPE_ROTATING_OLD_FILENAME — старое имя файла после ротации;
LOGPIPE_ROTATING_NEW_FILENAME — новое имя файла после ротации.

Пример конфигурации:

{ "plugin":"so/logpipe-input-file.so" , "path":"/home/ecif/log" , "compress_algorithm":"deflate" }

Пример расширенной конфигурации:

{ "plugin":"so/logpipe-input-file.so" , "path":"/home/calvin/log" , "exec_before_rotating":"echo \"BEFORE ROTATING ${LOGPIPE_ROTATING_OLD_FILENAME}\">>/tmp/logpipe_case2_collector.log" , "rotate_size":10 , "exec_after_rotating":"echo \"AFTER ROTATING ${LOGPIPE_ROTATING_NEW_FILENAME}\">>/tmp/logpipe_case2_collector.log" , "compress_algorithm":"deflate" }

Обратите внимание, что в примере расширенной конфигурации используется переменная окружения LOGPIPE_ROTATING_OLD_FILENAME, которая содержит старое имя файла после ротации. Это позволяет выполнить команду echo с этим именем файла и записать результат в лог-файл.

Также обратите внимание на использование переменной окружения LOGPIPE_ROTATING_NEW_FILENAME. Она содержит новое имя файла после ротации и позволяет выполнить аналогичную команду с новым именем файла.

4.2.2. logpipe-output-file

Конфигурация logpipe-output-file определяет параметры вывода данных в файл.

Параметры:

path — путь к выходному файлу;
uncompress_algorithm — алгоритм распаковки данных;
rotate_size — размер выходного файла, при достижении которого происходит ротация;
exec_after_rotating — команда, выполняемая после ротации файла.

Переменные окружения:

LOGPIPE_ROTATING_PATHNAME — путь к входному файлу до ротации;
LOGPIPE_ROTATING_NEW_FILENAME — путь к новому файлу после ротации.

Пример конфигурации:

{ "plugin":"so/logpipe-output-file.so" , "path":"/home/iblog/log" , "uncompress_algorithm":"deflate" }

4.2.3. logpipe-input-tcp

Конфигурация logpipe-input-tcp определяет параметры ввода данных через TCP-соединение.

Параметры:

ip — IP-адрес сервера;
port — порт, на котором сервер ожидает подключения.

Пример конфигурации:

{ "plugin":"so/logpipe-input-tcp.so" , "ip":"158.1.0.55" , "port":5151 }

4.2.4. logpipe-output-tcp

Конфигурация logpipe-output-tcp определяет параметры отправки данных через TCP-соединение.

Параметры:

ip — IP-адрес клиента;
port — порт клиента;
ip2~8 — дополнительные IP-адреса клиентов;
port2~8 — порты дополнительных клиентов;
disable_timeout — отключение таймаута ожидания ответа от клиента.

Пример конфигурации:

{
    "plugin":"so/logpipe-output-tcp.so",
    "ip":"192.168.0.1",
    "port":6001,
    "ip2":"192.168.0.2",
    "port2":6002,
    "disable_timeout":false
}
``` ```
funcLoadOutputPluginConfig LoadOutputPluginConfig ;
int LoadOutputPluginContext( struct LogpipeEnv *p_env , struct LogpipeOutputPlugin *p_logpipe_output_plugin , void **pp_context )
{
    struct OutputPluginContext   **pp_plugin_ctx = (struct OutputPluginContext **)pp_context ;
    
    /* �ͷ��ڴ��Դ�Ų�������� */
    *pp_plugin_ctx = malloc( sizeof(struct OutputPluginContext) ) ;
    if ( *pp_plugin_ctx == NULL ) {
        return -1 ;
    }
    memset( *pp_plugin_ctx , 0 , sizeof(struct OutputPluginContext) );
    return 0;
}
  • В коде есть функция LoadInputPluginConfig, которая загружает конфигурацию входного плагина, и функция UnloadInputPluginConfig, которая выгружает эту конфигурацию.

  • Функции InitInputPluginContexth и CleanInputPluginContext инициализируют и очищают контекст входного плагина соответственно.

  • Функция OnInputPluginEvent обрабатывает события входного плагина и вызывает функцию WriteAllOutputPlugins, которая записывает данные во все выходные плагины.

  • Также в коде есть функции BeforeReadOutputPlugin и BeforeWriteOutputPlugin, которые выполняют предварительную обработку перед чтением и записью данных соответственно.

  • Есть функции ReadInputPlugin и AfterReadOutputPlugin, которые читают и обрабатывают данные из входных плагинов.

  • После чтения данных из входного плагина функция ReadInputPlugin возвращает значение LOGPIPE_READ_END_OF_INPUT, если достигнут конец ввода.

5.2. Заключение

Здесь представлен код на языке C, который реализует логику работы с входными и выходными плагинами в системе Logpipe. FilterPluginContext

{ ... } ;

func LoadFilterPluginConfig LoadFilterPluginConfig; int LoadFilterPluginConfig(struct LogpipeEnv *p_env, struct LogpipeFilterPlugin *p_logpipe_filter_plugin, struct LogpipePluginConfigItem *p_plugin_config_items, void **pp_context) { struct FilterPluginContext *p_plugin_ctx = NULL;

p_plugin_ctx = (struct FilterPluginContext *)malloc(sizeof(struct FilterPluginContext));
if (p_plugin_ctx == NULL)
{
    ERRORLOG("malloc failed, errno[%d]", errno);
    return -1;
}
memset(p_plugin_ctx, 0x00, sizeof(struct FilterPluginContext));

p_plugin_ctx->... = QueryPluginConfigItem(p_plugin_config_items, "...");
INFOLOG("...[%s]", p_plugin_ctx->...);

...

/* Здесь что-то происходит */
(*pp_context) = p_plugin_ctx;

return 0;

}

func InitFilterPluginContext InitFilterPluginContext; int InitFilterPluginContext(struct LogpipeEnv *p_env, struct LogpipeFilterPlugin *p_logpipe_filter_plugin, void *p_context) { struct FilterPluginContext *p_plugin_ctx = (struct FilterPluginContext *)p_context;

...

/* Что-то происходит */
AddFilterPluginEvent(p_env, p_logpipe_filter_plugin, .); /* Здесь вызывается OnFilterPluginEvent */

return 0;

}

func BeforeProcessFilterPlugin BeforeProcessFilterPlugin; /* Здесь что-то происходит */ int BeforeProcessFilterPlugin(struct LogpipeEnv *p_env, struct LogpipeFilterPlugin *p_logpipe_filter_plugin, void *p_context, uint16_t filename_len, char *filename) { struct FilterPluginContext *p_plugin_ctx = (struct FilterPluginContext *)p_context;

...

return 0;

}

func ProcessFilterPlugin ProcessFilterPlugin; int ProcessFilterPlugin(struct LogpipeEnv *p_env, struct LogpipeFilterPlugin *p_logpipe_filter_plugin, void *p_context, uint32_t *p_block_len, char *block_buf) { struct FilterPluginContext *p_plugin_ctx = (struct FilterPluginContext *)p_context;

...

return 0;

}

func AfterProcessFilterPlugin AfterProcessFilterPlugin; /* Здесь что-то происходит */ int AfterProcessFilterPlugin(struct LogpipeEnv *p_env, struct LogpipeFilterPlugin *p_logpipe_filter_plugin, void *p_context, uint16_t filename_len, char *filename) { struct FilterPluginContext *p_plugin_ctx = (struct FilterPluginContext *)p_context;

...

return 0;

}

func CleanFilterPluginContext CleanFilterPluginContext; int CleanFilterPluginContext(struct LogpipeEnv *p_env, struct LogpipeFilterPlugin *p_logpipe_filter_plugin, void *p_context) { return 0; }

func UnloadFilterPluginConfig UnloadFilterPluginConfig; int UnloadFilterPluginConfig(struct LogpipeEnv *p_env, struct LogpipeFilterPlugin *p_logpipe_filter_plugin, void **pp_context) { struct FilterPluginContext **pp_plugin_ctx = (struct FilterPluginContext **)pp_context;

/* Освобождение памяти */
free((*pp_plugin_ctx)); (*pp_plugin_ctx) = NULL;

return 0;

} connected to [s1, k1]

2017-12-17 23:33:15,389 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:137)] Starting new configuration: { sourceRunners:{s1=EventDrivenSourceRunner: { source:Spool Directory source s1: { spoolDir: /home/calvin/log } }} sinkRunners:{k1=SinkRunner: { policy:org.apache.flume.sink.DefaultSinkProcessor@4224eda0 counterGroup:{ name:null counters:{} } }} channels:{c1=org.apache.flume.channel.MemoryChannel{name: c1}} }

2017-12-17 23:33:15,394 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:144)] Starting Channel c1

2017-12-17 23:33:15,395 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:159)] Waiting for channel: c1 to start. Sleeping for 500 ms

2017-12-17 23:33:15,432 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:119)] Monitored counter group for type: CHANNEL, name: c1: Successfully registered new MBean.

2017-12-17 23:33:15,432 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:95)] Component type: CHANNEL, name: c1 started

2017-12-17 23:33:15,900 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:171)] Starting Sink k1

2017-12-17 23:33:15,901 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.sink.RollingFileSink.start(RollingFileSink.java:110)] Starting org.apache.flume.sink.RollingFileSink{name:k1, channel:c1}...

2017-12-17 23:33:15,901 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:182)] Starting Source s1

2017-12-17 23:33:15,903 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.source.SpoolDirectorySource.start(SpoolDirectorySource.java:83)] SpoolDirectorySource source starting with directory: /home/calvin/log

2017-12-17 23:33:15,904 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:119)] Monitored counter group for type: SINK, name: k1: Successfully registered new MBean.

2017-12-17 23:33:15,904 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:95)] Component type: SINK, name: k1 started

2017-12-17 23:33:15,908 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.sink.RollingFileSink.start(RollingFileSink.java:142)] RollingFileSink k1 started.

2017-12-17 23:33:15,962 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:119)] Monitored counter group for type: SOURCE, name: s1: Successfully registered new MBean.

2017-12-17 23:33:15,962 (lifecycleSupervsor-1-4) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:95)] Component type: SOURCE, name: s1 started

2017-12-17 23:33:23,822 (pool-3-thread-1) [INFO - org.apache.flume.client.avro.ReliableSpoolingFileEventReader.readEvents(ReliableSpoolingFileEventReader.java:324)] Last read took us just up to a file boundary. Rolling to the next file, if there is one.

2017-12-17 23:33:23,823 (pool-3-thread-1) [INFO - org.apache.flume.client.avro.ReliableSpoolingFileEventReader.rollCurrentFile(ReliableSpoolingFileEventReader.java:433)] Preparing to move file /home/calvin/log/a.log to /home/calvin/log/a.log.COMPLETED

�鿴�ɼ�Ŀ¼�͹鼯Ŀ¼

$ cd $HOME/log
$ ls -l
������ 109896
-rw-rw-r-- 1 calvin calvin 112530011 12�� 17 23:33 a.log.COMPLETED

$ cd $HOME/log3

$ ls -l ������ 131008 -rw-rw-r-- 1 calvin calvin 112530011 12�� 17 23:33 1513524795383-1**

$ ps aux | grep java

calvin 39254 2.4 8.0 3136484 81028 pts/8 Sl+ 23:33 0:15 /home/calvin/expack/jdk1.8.0_152/bin/java -Xmx20m -Dflume.root.logger=INFO,console -cp /home/calvin/expack/apache-flume-1.8.0-bin/conf:/home/calvin/expack/apache-flume-1.8.0-bin/lib/:/lib/ -Djava.library.path= org.apache.flume.node.Application -n a1 -f conf/test.conf**

Примечание: в тексте запроса присутствуют непечатаемые символы, которые не удалось перевести. Logpipe

Logpipe — это программа, которая используется для обработки и анализа лог-файлов. Она позволяет настраивать различные параметры для фильтрации, обработки и вывода данных.

В приведённом тексте описывается конфигурация программы logpipe. В ней определены следующие параметры:

  • log: настройки ведения журнала;
  • inputs: входные плагины, которые используются для чтения данных из файлов;
  • filter: фильтры, которые применяются к данным перед их обработкой;
  • outputs: выходные плагины, используемые для записи обработанных данных в различные системы.

Конфигурация программы logpipe представлена в виде JSON-объекта. В нём определены различные параметры, такие как пути к файлам, имена хостов, порты и другие настройки.

Также в тексте описываются функции, связанные с работой программы logpipe: LoadInputPluginConfig, InitInputPluginContext, OnInputPluginIdle, OnInputPluginEvent, BeforeReadInputPlugin, ReadInputPlugin, AfterReadInputPlugin, CleanInputPluginContext, UnloadInputPluginConfig. Эти функции используются для загрузки конфигурации входных плагинов, инициализации контекста, обработки событий, чтения данных и других операций.

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

Функции работы с входными плагинами

Функции LoadInputPluginConfig и UnloadInputPluginConfig используются для загрузки и выгрузки конфигурации входных плагинов соответственно. Они принимают в качестве параметров структуру LogpipeEnv, указатель на входной плагин и указатель на контекст.

Функция InitInputPluginContext используется для инициализации контекста входного плагина. Она принимает в качестве параметров структуру LogpipeEnv, входной плагин и контекст.

Функции OnInputPluginIdle и OnInputPluginEvent используются для обработки событий, связанных с входным плагином. Они принимают в качестве параметров структуру LogpipeEnv и входной плагин.

Функции BeforeReadInputPlugin и AfterReadInputPlugin используются для управления чтением данных из входного файла. Они принимают в качестве параметров структуру LogpipeEnv, входной плагин, контекст, смещение файла, номер строки и другие параметры.

Функция ReadInputPlugin используется для чтения блока данных из файла. Она принимает в качестве параметров структуру LogpipeEnv, входной плагин, контекст, смещение файла, номер строки, размер блока и буфер для хранения данных.

Функция CleanInputPluginContext используется для очистки контекста входного плагина после его использования. Она принимает в качестве параметров структуру LogpipeEnv и входной плагин.

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

Процесс работы программы

Программа logpipe работает следующим образом:

  1. Инициализация контекста входных плагинов.
  2. Обработка событий, связанных с входными файлами.
  3. Чтение данных из входных файлов.
  4. Применение фильтров к данным.
  5. Запись обработанных данных в выходные файлы.
  6. Очистка контекста входных плагинов после их использования.

Этот процесс повторяется до тех пор, пока не будут обработаны все данные. Программа logpipe может использоваться для различных целей, таких как мониторинг производительности, анализ безопасности и другие задачи. ### 7.4.5. ES

Инициализация контекста плагина вывода InitOutputPluginContext для Kafka с использованием протокола HTTP.

OnOutputPluginEvent:

rd_kafka_poll — не удалось перевести.

7.4.6. HDFS

Инициализация контекста плагина вывода InitOutputPluginContext для HDFS.

Путь: $system/$path/YYYYMMDD_hhmmss.

Перед записью данных в плагин вывода BeforeWriteOutputPlugin происходит проверка существования каталога YYYYMMDD в HDFS и его создание, если он отсутствует.

После записи данных вызывается метод hdfsHFlush для синхронизации данных с диском.

8. Заключение

Информация о проекте logpipe.

Ссылки:

Контакты разработчика:

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Logpipe — это распределённый, высокодоступный инструмент для сбора, передачи и подключения приземлённых журналов. Он имеет каркасную структуру в стиле плагинов и поддерживает гибкую конфигурацию компонентов с несколькими входами и выходами для потоковой архитектуры сбора журналов. Развернуть Свернуть
C и 3 других языков
LGPL-2.1
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/calvinwilliams-logpipe.git
git@api.gitlife.ru:oschina-mirror/calvinwilliams-logpipe.git
oschina-mirror
calvinwilliams-logpipe
calvinwilliams-logpipe
release