{"id":28501852,"url":"https://github.com/fluent/fluent-bit-go-custom_jaeger_remote","last_synced_at":"2025-10-09T15:33:49.193Z","repository":{"id":293418402,"uuid":"983841878","full_name":"fluent/fluent-bit-go-custom_jaeger_remote","owner":"fluent","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-26T06:23:11.000Z","size":176,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-01T05:24:52.911Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fluent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-15T02:14:23.000Z","updated_at":"2025-06-26T06:22:26.000Z","dependencies_parsed_at":"2025-05-28T07:26:44.328Z","dependency_job_id":"841dc669-bed2-4c1f-808e-da9d147cdc24","html_url":"https://github.com/fluent/fluent-bit-go-custom_jaeger_remote","commit_stats":null,"previous_names":["fluent/fluent-bit-go-custom_jeager_remote","fluent/fluent-bit-go-custom_jaeger_remote"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/fluent/fluent-bit-go-custom_jaeger_remote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluent%2Ffluent-bit-go-custom_jaeger_remote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluent%2Ffluent-bit-go-custom_jaeger_remote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluent%2Ffluent-bit-go-custom_jaeger_remote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluent%2Ffluent-bit-go-custom_jaeger_remote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fluent","download_url":"https://codeload.github.com/fluent/fluent-bit-go-custom_jaeger_remote/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluent%2Ffluent-bit-go-custom_jaeger_remote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001645,"owners_count":26083147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-08T16:08:07.140Z","updated_at":"2025-10-09T15:33:49.164Z","avatar_url":"https://github.com/fluent.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Custom Go Plugin for Jaeger\n\n**Note:** This plugin is under heavily development.\n\nThis plugin implements Jaeger Remote Sampling protocol on Golang cutom plugin mechanism.\n\n## Prerequisites\n\n* Golang 1.23.0 or later\n\n## Building\n\n```console\n$ go mod download\n\u003csnip\u003e\n$ make\n```\n\nThen, the c-shared object will be created as:\n\n```console\nls *.so\ncustom_jeager_remote.so\n```\n\n## Configuration\n\nFor specifying the place of plugin's shared object, we need to specify the path in plugin.yaml:\n\n```yaml\nplugins:\n    - /path/to/custom_jeager_remote.so\n```\n\nFor custom jeager plugin, we need to add custom section in fluent-bit conf:\n\n### Basic structure\n\nWith ini format:\n\n```ini\n[CUSTOM]\n    # The name registered in the Go code (\"jaeger_remote\")\n    Name         jaeger_remote\n\n    # --- Mode Selection ---\n    # Can be: \"client\", \"server\", or \"all\" (default)\n    Mode         all\n\n    # --- Add parameters for the selected mode below ---\n```\n\nWith Yaml format:\n\n```yaml\ncustoms:\n  - name:                jaeger_remote\n    # --- Mode Selection ---\n    # Can be: \"client\", \"server\", or \"all\" (default)\n    mode:                all\n\n    # --- Add parameters for the selected mode below ---\n```\n\n### Mode: client\n\nIn this mode, the plugin acts as an OpenTelemetry client, fetching sampling strategies from an external server.\n\nWith ini format:\n\n```ini\n[CUSTOM]\n    Name                jaeger_remote\n    Mode                client\n\n    # URL of the OTLP-compatible collector to send traces to.\n    client.server_url   http://localhost:4318\n\n    # URL of the Jaeger-compatible sampling server.\n    client.sampling_url http://localhost:5778/sampling\n```\n\nWith Yaml format:\n\n```yaml\ncustoms:\n  - name:                jaeger_remote\n    mode:                client\n\n    # URL of the OTLP-compatible collector to send traces to.\n    client.server_url:   http://localhost:4318\n\n    # URL of the Jaeger-compatible sampling server.\n    client.sampling_url: http://localhost:5778/sampling\n```\n\n### Mode: Server\n\nIn this mode, the plugin polls a Jaeger Collector for strategies and serves them via its own HTTP and/or gRPC endpoints. You can enable one or both by providing their listen addresses.\n\nWith ini format:\n\n```ini\n[CUSTOM]\n    Name                jaeger_remote\n    Mode                server\n\n    # --- Connection to Jaeger Collector ---\n    server.endpoint      jaeger-collector:14250\n    server.service_names frontend,backend,database\n\n    # --- Exposed Endpoints (enable one or both) ---\n    server.http.listen_addr 0.0.0.0:8899\n    server.grpc.listen_addr 0.0.0.0:9099\n\n    # --- Advanced Connection Settings (Optional) ---\n    server.retry.initial_interval 10s\n    server.keepalive.time         30s\n```\n\nWith Yaml format:\n\n```yaml\ncustoms:\n  - name:                jaeger_remote\n    mode:                server\n\n    # --- Connection to Jaeger Collector ---\n    server.endpoint:      jaeger-collector:14250\n    server.service_names: frontend,backend,database\n\n    # --- Exposed Endpoints (enable one or both) ---\n    server.http.listen_addr: 0.0.0.0:8899\n    server.grpc.listen_addr: 0.0.0.0:9099\n\n    # --- Advanced Connection Settings (Optional) ---\n    server.retry.initial_interval: 10s\n    server.keepalive.time:         30s\n```\n\n### Mode: server (Local File)\n\nThis mode loads a static strategy file and serves it via HTTP and/or gRPC. It does not connect to a remote Jaeger Collector.\n\nWith ini format:\n\n```ini\n[CUSTOM]\n    Name                   jaeger_remote\n    Mode                   server\n\n    # --- Local Strategy File ---\n    server.strategy_file   /path/to/my_strategies.json\n\n    # --- Exposed Endpoints ---\n    server.http.listen_addr  0.0.0.0:8899\n```\n\nWith Yaml format:\n\n```yaml\ncustoms:\n  - name:                jaeger_remote\n    mode:                server\n\n    # --- Local Strategy File ---\n    server.strategy_file:   /path/to/my_strategies.json\n\n    # --- Exposed Endpoints ---\n    server.http.listen_addr:  0.0.0.0:8899\n```\n\n### Mode: All\n\nThis mode enables both client and server functionalities simultaneously.\n\nWith ini format:\n\n```ini\n[CUSTOM]\n    Name                jaeger_remote\n    Mode                all\n\n    # --- Client Parameters ---\n    client.server_url   http://localhost:4318\n    client.sampling_url http://localhost:5778/sampling\n\n    # --- Server Parameters ---\n    server.endpoint      jaeger-collector:14250\n    server.service_names frontend,backend,database\n    server.http.listen_addr 0.0.0.0:8899\n    server.grpc.listen_addr 0.0.0.0:9099\n```\n\nWith Yaml format:\n\n```yaml\ncustoms:\n  - name:                jaeger_remote\n    mode:                all\n\n    # --- Client Parameters ---\n    client.server_url:   http://localhost:4318\n    client.sampling_url: http://localhost:5778/sampling\n\n    # --- Server Parameters ---\n    server.endpoint:      jaeger-collector:14250\n    server.service_names: frontend,backend,database\n    server.http.listen_addr: 0.0.0.0:8899\n    server.grpc.listen_addr: 0.0.0.0:9099\n```\n\n## Parameter Reference\n\n| Key                                      | Mode          | Description                                                                                             | Default                  |\n| ---------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------- | ------------------------ |\n| `mode`                                   | **Global** | Sets the operating mode. Can be `client`, `server`, or `all`.                                             | `all`                    |\n| **Client Settings** |               |                                                                                                         |                          |\n| `client.server_url`                      | `client`/`all`  | The endpoint URL of the OTLP collector to which traces will be sent.                                      | **Required** |\n| `client.sampling_url`                    | `client`/`all`  | The URL of the Jaeger-compatible sampling server to poll for strategies.                                | **Required** |\n| `client.rate`                            | `client`/`all`  | The sampling period of the sending requests for Jaeger-compatible sampling server                           | `5s`               |\n| **Server Settings** |               |                                                                                                         |                          |\n| `server.endpoint`                        | `server`/`all`  | The gRPC endpoint of the Jaeger Collector to poll for sampling strategies. **Mutually exclusive** with server.strategy_file. | **Required** |\n| `server.strategy_file`                   | `server`/`all`  | Path to a local JSON file containing sampling strategies. **Mutually exclusive** with `server.endpoint`.    | ` ` (Disabled)           |\n| `server.service_names`                   | `server`/`all`  | A comma-separated list of service names to fetch strategies for.                                        | **Required** |\n| `server.http.listen_addr`                | `server`/`all`  | The address and port for the internal HTTP server to listen on. If empty, the HTTP server is disabled.    | ` ` (Disabled)           |\n| `server.grpc.listen_addr`                | `server`/`all`  | The address and port for the internal gRPC server to listen on. If empty, the gRPC server is disabled.   | ` ` (Disabled)           |\n| `server.headers`                         | `server`/`all`  | Comma-separated key=value pairs to add as gRPC metadata to requests to the Jaeger Collector.          | ` `                      |\n| **Server TLS Settings** |               |                                                                                                         |                          |\n| `server.tls.insecure`                    | `server`/`all`  | If `true`, TLS certificate verification is skipped when connecting to the Jaeger Collector.               | `false`                  |\n| `server.tls.server_name_override`        | `server`/`all`  | Overrides the server name used for TLS validation.                                                      | ` `                      |\n| `server.tls.ca_file`                     | `server`/`all`  | Path to the CA certificate file for verifying the Jaeger Collector's certificate.                       | ` `                      |\n| `server.tls.cert_file`                   | `server`/`all`  | Path to the client's TLS certificate file.                                                              | ` `                      |\n| `server.tls.key_file`                    | `server`/`all`  | Path to the client's TLS private key file.                                                              | ` `                      |\n| **Server Keepalive Settings** |               |                                                                                                         |                          |\n| `server.keepalive.time`                  | `server`/`all`  | Interval to send keepalive pings to the Jaeger Collector. If not set, keepalive is disabled.            | ` ` (Disabled)           |\n| `server.keepalive.timeout`               | `server`/`all`  | Time to wait for a keepalive ack before considering the connection dead.                                | `20s`                    |\n| `server.keepalive.permit_without_stream` | `server`/`all`  | If `true`, allows pings to be sent even if there are no active streams.                               | `true`                   |\n| **Server Retry Settings** |               |                                                                                                         |                          |\n| `server.retry.initial_interval`          | `server`/`all`  | The initial time to wait before retrying a failed connection to the Jaeger Collector.                   | `5s`                     |\n| `server.retry.max_interval`              | `server`/`all`  | The maximum time to wait between retries.                                                               | `5m`                     |\n| `server.retry.multiplier`                | `server`/`all`  | The factor by which the retry interval is multiplied after each failed attempt. Must be \u003e 1.0.            | `1.5`                    |\n| `server.retry.max_retry`                 | `server`/`all`  | The factor by which the maximum retries after each failed attempt. Must be \u003e 1.0.            | `10`                    |\n\n## Run\n\nPut c-chared object in the specified path and run fluent-bit:\n\n```console\n$ /path/to/fluent-bit -c fluent-bit.conf\n\u003cFluent Bit starting...\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluent%2Ffluent-bit-go-custom_jaeger_remote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffluent%2Ffluent-bit-go-custom_jaeger_remote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluent%2Ffluent-bit-go-custom_jaeger_remote/lists"}