94 lines
3.2 KiB
Nix
94 lines
3.2 KiB
Nix
import ./make-test-python.nix (
|
|||
{ lib, pkgs, ... }:
|
|||
let
|
|||
# See https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html.
|
|||
iniFormat = pkgs.formats.ini { };
|
|||
|
|||
region = "ap-northeast-1";
|
|||
sharedConfigurationDefaultProfile = "default";
|
|||
sharedConfigurationFile = iniFormat.generate "config" {
|
|||
"${sharedConfigurationDefaultProfile}" = {
|
|||
region = region;
|
|||
};
|
|||
};
|
|||
sharedCredentialsFile = iniFormat.generate "credentials" {
|
|||
"${sharedConfigurationDefaultProfile}" = {
|
|||
aws_access_key_id = "placeholder";
|
|||
aws_secret_access_key = "placeholder";
|
|||
aws_session_token = "placeholder";
|
|||
};
|
|||
};
|
|||
sharedConfigurationDirectory = pkgs.runCommand ".aws" { } ''
|
|||
mkdir $out
|
|||
|
|||
cp ${sharedConfigurationFile} $out/config
|
|||
cp ${sharedCredentialsFile} $out/credentials
|
|||
'';
|
|||
in
|
|||
{
|
|||
name = "amazon-cloudwatch-agent";
|
|||
meta.maintainers = pkgs.amazon-cloudwatch-agent.meta.maintainers;
|
|||
|
|||
nodes.machine =
|
|||
{ config, pkgs, ... }:
|
|||
{
|
|||
services.amazon-cloudwatch-agent = {
|
|||
enable = true;
|
|||
commonConfiguration = {
|
|||
credentials = {
|
|||
shared_credential_profile = sharedConfigurationDefaultProfile;
|
|||
shared_credential_file = "${sharedConfigurationDirectory}/credentials";
|
|||
};
|
|||
};
|
|||
configuration = {
|
|||
agent = {
|
|||
# Required despite documentation saying the agent ignores it in "onPremise" mode.
|
|||
region = region;
|
|||
|
|||
# Show debug logs and write to a file for interactive debugging.
|
|||
debug = true;
|
|||
logfile = "/var/log/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log";
|
|||
};
|
|||
logs = {
|
|||
logs_collected = {
|
|||
files = {
|
|||
collect_list = [
|
|||
{
|
|||
file_path = "/var/log/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log";
|
|||
log_group_name = "/var/log/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log";
|
|||
log_stream_name = "{local_hostname}";
|
|||
}
|
|||
];
|
|||
};
|
|||
};
|
|||
};
|
|||
traces = {
|
|||
local_mode = true;
|
|||
traces_collected = {
|
|||
xray = { };
|
|||
};
|
|||
};
|
|||
};
|
|||
mode = "onPremise";
|
|||
};
|
|||
|
|||
# Keep the runtime directory for interactive debugging.
|
|||
systemd.services.amazon-cloudwatch-agent.serviceConfig.RuntimeDirectoryPreserve = true;
|
|||
};
|
|||
|
|||
testScript = ''
|
|||
start_all()
|
|||
|
|||
machine.wait_for_unit("amazon-cloudwatch-agent.service")
|
|||
|
|||
machine.wait_for_file("/run/amazon-cloudwatch-agent/amazon-cloudwatch-agent.pid")
|
|||
machine.wait_for_file("/run/amazon-cloudwatch-agent/amazon-cloudwatch-agent.toml")
|
|||
# "config-translator" omits this file if no trace configurations are specified.
|
|||
#
|
|||
# See https://github.com/aws/amazon-cloudwatch-agent/issues/1320.
|
|||
machine.wait_for_file("/run/amazon-cloudwatch-agent/amazon-cloudwatch-agent.yaml")
|
|||
machine.wait_for_file("/run/amazon-cloudwatch-agent/env-config.json")
|
|||
'';
|
|||
}
|
|||
)
|