logo
Search

    FluentBit v3.2 | C Library API

    원본 : https://docs.fluentbit.io/manual/development/library_api
    FLUENT_BIT
    #방장봇 · # 2025/3/22
    9 0 0 0
    좋아요
    별로
    #editor: 방장봇# 수정됨: 0
    9 0 0 0

    Fluent Bit 라이브러리는 C 언어로 작성되었으며, 모든 C 또는 C++ 애플리케이션에서 사용할 수 있습니다. 사양을 자세히 살펴보기 전에 런타임에 관련된 워크플로우를 이해하는 것이 좋습니다.

    워크플로우에 대한 자세한 정보

    Fluent Bit는 서비스로 실행되며, 개발자를 위해 노출된 API는 컨텍스트를 생성하고 관리하며, 입력/출력을 지정하고, 구성 매개변수를 설정하고, 이벤트/레코드의 라우팅 경로를 설정하는 인터페이스를 제공합니다. 라이브러리의 일반적인 사용은 다음과 같습니다:

    • 라이브러리 인스턴스/컨텍스트를 생성하고 속성을 설정합니다.
    • input 플러그인을 활성화하고 속성을 설정합니다.
    • output 플러그인을 활성화하고 속성을 설정합니다.
    • 라이브러리 런타임을 시작합니다.
    • 선택적으로 레코드를 수동으로 수집합니다.
    • 라이브러리 런타임을 중지합니다.
    • 라이브러리 인스턴스/컨텍스트를 파괴합니다.

    데이터 타입에 대한 자세한 정보

    Fluent Bit v0.9부터 라이브러리에서 노출되는 데이터 타입은 하나뿐이며, 관례적으로 flb_로 접두사가 붙습니다.

    타입설명
    flb_ctx_t주요 라이브러리 컨텍스트. _flb_create();_에 의해 반환된 컨텍스트를 참조하는 것을 목표로 합니다.

    API 참조에 대한 자세한 정보

    라이브러리 컨텍스트 생성에 대한 자세한 정보

    앞서 설명한 바와 같이, 라이브러리를 사용하기 위한 첫 번째 단계는 컨텍스트를 생성하는 것이며, 이를 위해 flb_create() 함수를 사용합니다.

    프로토타입

    flb_ctx_t *flb_create();

    반환 값

    성공 시, **flb_create()**는 라이브러리 컨텍스트를 반환하며, 오류가 발생하면 NULL을 반환합니다.

    사용법

    flb_ctx_t *ctx;

    ctx = flb_create(); if (!ctx) { return NULL; }

    서비스 속성 설정에 대한 자세한 정보

    flb_service_set() 함수를 사용하여 컨텍스트 속성을 설정할 수 있습니다.

    프로토타입

    int flb_service_set(flb_ctx_t *ctx, ...);

    반환 값

    성공 시 0을 반환하며, 오류가 발생하면 음수를 반환합니다.

    사용법

    **flb_service_set()**는 키/값 문자열 모드로 하나 이상의 속성을 설정할 수 있습니다. 예를 들어:

    int ret;

    ret = flb_service_set(ctx, "Flush", "1", NULL);

    위의 예제는 Flush 속성의 값을 지정하며, 값은 항상 문자열(char *)임을 유의해야 하며, 더 이상 매개변수가 없을 경우 NULL 인수를 목록의 끝에 추가해야 합니다.

    입력 플러그인 인스턴스 활성화에 대한 자세한 정보

    빌드 시, Fluent Bit 라이브러리는 특정 수의 내장 input 플러그인을 포함합니다. input 플러그인을 활성화하기 위해 flb_input() 함수를 사용하여 인스턴스를 생성합니다.

    플러그인에서 _인스턴스_는 활성화된 플러그인의 컨텍스트를 의미합니다. 동일한 플러그인의 여러 인스턴스를 생성할 수 있습니다.

    프로토타입

    int flb_input(flb_ctx_t *ctx, char *name, void *data);

    인수 ctx는 **flb_create()**에 의해 생성된 라이브러리 컨텍스트를 나타내며, name은 활성화해야 하는 입력 플러그인의 이름입니다.

    세 번째 인수 data는 플러그인 인스턴스에 대한 사용자 정의 참조를 전달하는 데 사용될 수 있으며, 이는 주로 사용자 정의 또는 서드파티 플러그인에서 사용되며, 일반 플러그인에서는 _NULL_을 전달하는 것이 가능합니다.

    반환 값

    성공 시, **flb_input()**는 0 이상의 정수 값을 반환하며(파일 디스크립터와 유사), 오류가 발생하면 음수를 반환합니다.

    사용법

    int in_ffd;

    in_ffd = flb_input(ctx, "cpu", NULL);

    입력 플러그인 속성 설정에 대한 자세한 정보

    **flb_input()**을 통해 생성된 플러그인 인스턴스는 일부 구성 속성을 제공할 수 있습니다. flb_input_set() 함수를 사용하여 이러한 속성을 설정할 수 있습니다.

    프로토타입

    int flb_input_set(flb_ctx_t *ctx, int in_ffd, ...);

    반환 값

    성공 시 0을 반환하며, 오류가 발생하면 음수를 반환합니다.

    사용법

    **flb_input_set()**는 키/값 문자열 모드로 하나 이상의 속성을 설정할 수 있습니다. 예를 들어:

    int ret;

    ret = flb_input_set(ctx, in_ffd, "tag", "my_records", "ssl", "false", NULL);

    인수 ctx는 **flb_create()**에 의해 생성된 라이브러리 컨텍스트를 나타냅니다. 위의 예제에서는 tagssl 속성의 값을 지정했으며, 값은 항상 문자열(char *)임을 유의해야 하며, 더 이상 매개변수가 없을 경우 NULL 인수를 목록의 끝에 추가해야 합니다.

    각 입력 플러그인에 허용되는 속성은 각 특정 플러그인 문서에 명시되어 있습니다.

    출력 플러그인 인스턴스 활성화에 대한 자세한 정보

    빌드된 Fluent Bit 라이브러리는 특정 수의 내장 출력 플러그인을 포함합니다. 출력 플러그인을 활성화하기 위해서는 flb_output() 함수를 사용하여 인스턴스를 생성합니다.

    플러그인에서 _인스턴스_는 활성화된 플러그인의 컨텍스트를 의미합니다. 동일한 플러그인의 여러 인스턴스를 생성할 수 있습니다.

    프로토타입

    int flb_output(flb_ctx_t *ctx, char *name, void *data);

    인수 ctx는 **flb_create()**에 의해 생성된 라이브러리 컨텍스트를 나타내며, name은 활성화해야 하는 출력 플러그인의 이름입니다.

    세 번째 인수 data는 플러그인 인스턴스에 대한 사용자 정의 참조를 전달하는 데 사용될 수 있으며, 이는 주로 사용자 정의 또는 서드파티 플러그인에서 사용되며, 일반 플러그인에서는 _NULL_을 전달하는 것이 괜찮습니다.

    반환 값

    성공 시, **flb_output()**는 출력 플러그인 인스턴스를 반환하며, 오류가 발생하면 음수 값을 반환합니다.

    사용법

    int out_ffd;

    out_ffd = flb_output(ctx, "stdout", NULL);

    출력 플러그인 속성 설정에 대한 자세한 정보

    **flb_output()**를 통해 생성된 플러그인 인스턴스는 일부 구성 속성을 제공할 수 있습니다. flb_output_set() 함수를 사용하여 이러한 속성을 설정할 수 있습니다.

    프로토타입

    int flb_output_set(flb_ctx_t *ctx, int out_ffd, ...);

    반환 값

    성공 시 정수 값 >= 0 (파일 설명자와 유사)을 반환하며, 오류가 발생하면 음수 값을 반환합니다.

    사용법

    **flb_output_set()**는 키/값 문자열 모드로 하나 이상의 속성을 설정할 수 있습니다. 예:

    int ret;

    ret = flb_output_set(ctx, out_ffd, "tag", "my_records", "ssl", "false", NULL);

    인수 ctx는 **flb_create()**에 의해 생성된 라이브러리 컨텍스트를 나타냅니다. 위의 예제에서는 tagssl 속성의 값을 지정했으며, 값은 항상 문자열(char *)임을 유의해야 하며, 더 이상 매개변수가 없을 경우 NULL 인수를 목록의 끝에 추가해야 합니다.

    각 출력 플러그인에 허용되는 속성은 각 특정 플러그인 문서에 명시되어 있습니다.

    Fluent Bit 엔진 시작에 대한 자세한 정보

    라이브러리 컨텍스트가 생성되고 입력/출력 플러그인 인스턴스가 설정되면, 다음 단계는 엔진을 시작하는 것입니다. 엔진이 시작되면 호출 애플리케이션을 차단하지 않고 새로운 스레드(POSIX 스레드) 내에서 실행됩니다. 엔진을 시작하기 위해서는 flb_start() 함수를 사용합니다.

    프로토타입

    int flb_start(flb_ctx_t *ctx);

    반환 값

    성공 시 0을 반환하며, 오류가 발생하면 음수 값을 반환합니다.

    사용법

    이 간단한 호출은 인수로 ctx만 필요하며, 이는 **flb_create()**로 처음 생성된 컨텍스트에 대한 참조입니다:

    int ret;

    ret = flb_start(ctx);

    Fluent Bit 엔진 중지에 대한 자세한 정보

    실행 중인 Fluent Bit 엔진을 중지하기 위해 flb_stop() 호출을 제공합니다.

    프로토타입

    int flb_stop(flb_ctx_t *ctx);

    인수 ctx는 **flb_create()**로 처음 생성된 컨텍스트에 대한 참조이며, 이전에 **flb_start()**로 시작되었습니다.

    호출이 실행되면 엔진은 최대 5초 동안 버퍼를 플러시하고 사용 중인 리소스를 해제하기 위해 대기합니다. 중지된 컨텍스트는 언제든지 재시작할 수 있지만 데이터는 없습니다.

    반환 값

    성공 시 0을 반환하며, 오류가 발생하면 음수 값을 반환합니다.

    사용법

    int ret;

    ret = flb_stop(ctx);

    라이브러리 컨텍스트 파괴에 대한 자세한 정보

    라이브러리 컨텍스트는 더 이상 필요하지 않을 때 파괴해야 하며, 이전에 flb_stop() 호출이 필수입니다. 파괴되면 모든 관련 리소스가 해제됩니다.

    프로토타입

    void flb_destroy(flb_ctx_t *ctx);

    인수 ctx는 **flb_create()**로 처음 생성된 컨텍스트에 대한 참조입니다.

    반환 값

    반환 값이 없습니다.

    사용법

    flb_destroy(ctx);

    데이터 수동으로 수집하기에 대한 자세한 정보

    호출하는 애플리케이션이 Fluent Bit에 데이터를 수집하고자 하는 경우가 있습니다. 이를 위해 flb_lib_push() 함수가 존재합니다.

    프로토타입

    int flb_lib_push(flb_ctx_t *ctx, int in_ffd, void *data, size_t len);

    첫 번째 인자는 이전에 **flb_create()**를 통해 생성된 컨텍스트입니다. in_ffd는 입력 플러그인의 숫자 참조(이 경우 lib 유형의 입력 플러그인이어야 함)이며, data는 수집할 메시지에 대한 참조이고, len은 그로부터 가져올 바이트 수입니다.

    반환 값

    성공 시, 작성된 바이트 수를 반환하며, 오류 발생 시 -1을 반환합니다.

    사용법

    이 함수를 올바르게 사용하는 방법과 예제는 다음 섹션에서 확인할 수 있습니다.

    마지막 업데이트: 5개월 전

    도움이 되었나요?

    Comments
    새로운 댓글