Skip to content

Commit

Permalink
fluent-bit: link against Nix dependencies, fix Darwin builds, and add…
Browse files Browse the repository at this point in the history
… NixOS module
  • Loading branch information
commiterate committed Dec 21, 2024
1 parent f84cd48 commit 50b271d
Show file tree
Hide file tree
Showing 8 changed files with 268 additions and 61 deletions.
5 changes: 4 additions & 1 deletion ci/OWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -143,10 +143,13 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @NixOS/nix-team @raitobeza
/nixos/tests/amazon-ssm-agent.nix @arianvp
/nixos/modules/system/boot/grow-partition.nix @arianvp

# Monitoring
/nixos/modules/services/monitoring/fluent-bit.nix @samrose
/nixos/tests/fluent-bit.nix @samrose

# nixos-rebuild-ng
/pkgs/by-name/ni/nixos-rebuild-ng @thiagokokada


# Updaters
## update.nix
/maintainers/scripts/update.nix @jtojnar
Expand Down
2 changes: 2 additions & 0 deletions nixos/doc/manual/release-notes/rl-2505.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@

- [git-worktree-switcher](https://github.com/mateusauler/git-worktree-switcher), switch between git worktrees with speed. Available as [programs.git-worktree-switcher](#opt-programs.git-worktree-switcher.enable)

- [Fluent Bit](https://github.com/fluent/fluent-bit), a fast Log, Metrics and Traces Processor and Forwarder. Available as [services.fluent-bit](#opt-services.fluent-bit.enable).

<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

## Backward Incompatibilities {#sec-release-25.05-incompatibilities}
Expand Down
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -904,6 +904,7 @@
./services/monitoring/das_watchdog.nix
./services/monitoring/datadog-agent.nix
./services/monitoring/do-agent.nix
./services/monitoring/fluent-bit.nix
./services/monitoring/fusion-inventory.nix
./services/monitoring/gatus.nix
./services/monitoring/gitwatch.nix
Expand Down
115 changes: 115 additions & 0 deletions nixos/modules/services/monitoring/fluent-bit.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.fluent-bit;

yamlFormat = pkgs.formats.yaml { };

configurationFile =
if (cfg.configurationFile == null) then
(yamlFormat.generate "fluent-bit.yaml" cfg.configuration)
else
cfg.configurationFile;
in
{
options.services.fluent-bit = {
enable = lib.mkEnableOption "Fluent Bit";
package = lib.mkPackageOption pkgs "fluent-bit" { };
configurationFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
Fluent Bit configuration. See
<https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/yaml>
for supported values.
{option}`configurationFile` takes precedence over {option}`configuration`.
Note: Restricted evaluation blocks access to paths outside the Nix store.
This means detecting content changes for mutable paths (i.e. not input or content-addressed) can't be done.
As a result, `nixos-rebuild` won't reload/restart the systemd unit when mutable path contents change.
`systemctl restart fluent-bit.service` must be used instead.
'';
example = "/etc/fluent-bit/fluent-bit.yaml";
};
configuration = lib.mkOption {
type = yamlFormat.type;
default = { };
description = ''
See {option}`configurationFile`.
{option}`configurationFile` takes precedence over {option}`configuration`.
'';
example = {
service = {
grace = 30;
};
pipeline = {
inputs = [
{
name = "systemd";
systemd_filter = "_SYSTEMD_UNIT=fluent-bit.service";
}
];
outputs = [
{
name = "file";
path = "/var/log/fluent-bit";
file = "fluent-bit.out";
}
];
};
};
};
user = lib.mkOption {
type = lib.types.str;
default = "root";
description = ''
The user that runs Fluent Bit.
'';
example = "fluent-bit";
};
# See https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/yaml/service-section.
graceLimit = lib.mkOption {
type = lib.types.nullOr (
lib.types.oneOf [
lib.types.ints.positive
lib.types.str
]
);
default = null;
description = ''
The grace time limit. Sets the systemd unit's `TimeoutStopSec`.
The `service.grace` option in the Fluent Bit configuration should be ≤ this option.
'';
example = 30;
};
};

config = lib.mkIf cfg.enable {
# See https://github.com/fluent/fluent-bit/blob/v3.2.2/init/systemd.in.
systemd.services.fluent-bit = {
description = "Fluent Bit";
after = [ "network.target" ];
requires = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig =
{
User = cfg.user;
ExecStart = builtins.concatStringsSep " " [
"${cfg.package}/bin/fluent-bit"
"--config ${configurationFile}"
];
Restart = "always";
}
// (lib.optionalAttrs (cfg.graceLimit != null) {
TimeoutStopSec = cfg.graceLimit;
});
};
};
}
1 change: 1 addition & 0 deletions nixos/tests/all-tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ in {
flaresolverr = handleTest ./flaresolverr.nix {};
flood = handleTest ./flood.nix {};
floorp = handleTest ./firefox.nix { firefoxPackage = pkgs.floorp; };
fluent-bit = handleTest ./fluent-bit.nix {};
fluentd = handleTest ./fluentd.nix {};
fluidd = handleTest ./fluidd.nix {};
fontconfig-default-fonts = handleTest ./fontconfig-default-fonts.nix {};
Expand Down
40 changes: 40 additions & 0 deletions nixos/tests/fluent-bit.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import ./make-test-python.nix (
{ lib, pkgs, ... }:
{
name = "fluent-bit";

nodes.machine =
{ config, pkgs, ... }:
{
services.fluent-bit = {
enable = true;
configuration = {
pipeline = {
inputs = [
{
name = "systemd";
systemd_filter = "_SYSTEMD_UNIT=fluent-bit.service";
}
];
outputs = [
{
name = "file";
path = "/var/log/fluent-bit";
file = "fluent-bit.out";
}
];
};
};
};

systemd.services.fluent-bit.serviceConfig.LogsDirectory = "fluent-bit";
};

testScript = ''
start_all()
machine.wait_for_unit("fluent-bit.service")
machine.wait_for_file("/var/log/fluent-bit/fluent-bit.out")
'';
}
)
17 changes: 0 additions & 17 deletions pkgs/by-name/fl/fluent-bit/macos-11-sdk-compat.patch

This file was deleted.

Loading

0 comments on commit 50b271d

Please sign in to comment.