← ALL DOCS
DOCS · ADMINISTRATORS

Administrator guide

Administrators manage Cloud Certainty TraceHound from Administration in the portal (PortalUrl): connections, grants, roles, settings and prices, usage, the collector, the audit log and the licence. Everything is stored in the stack's DynamoDB table in your account, and every change is written to the audit log.

Administration has the pages Connections, Grants, Roles, Settings, Usage, Collector, Audit log and Licence and about. Without a valid licence only Licence and about opens.

Connections

A connection is one IAM role TraceHound assumes in one AWS account, with the Regions it shows (Administration › Connections).

ConnectionRoleSet by
Local (local)The hub stack's role /tracehound/<NamePrefix>-local-<Region>, in the hub accountThe stack: LocalAccessLevel, LocalRegions (empty means the stack's Region) and LogGroupPrefixes. It can't be changed or deleted in the portal
SpokeA role created by the spoke role template (spoke-role.yaml) in another account, /tracehound/<RoleName> (tracehound-spoke by default). It trusts only the hub role, and only with your external IDThe spoke stack's AccessLevel and LogGroupPrefixes, and the Regions you choose here

Access levels

The access level of a connection's role is the ceiling for everyone, administrators included. Grants can narrow it per user or group but never widen it.

Access levelTraceHound mayPermissions it allows
Read (default)List log groups with their settings and sizes, read their metrics, streams, tags and filters, run Logs Insights queries, search and read events, and run Live Tailbrowse, read, export
ManageRead plus changing the retention of log groupsplus manage (Team and above)

Whatever the level, a role whose stack sets LogGroupPrefixes reads events from, and changes, only the log groups under those prefixes; it still lists every log group with its size and metrics. The roles never have logs:Unmask, so masked data stays masked (log group access).

Use Read unless you want people to change retention through TraceHound.

Add a connection

  1. Deploy the spoke role in the account (installation guide). How to connect another AWS account at the bottom of the page shows the steps, the template URL and an AWS CLI command. Set TrustedPrincipal to the hub stack's SpokeTrustedPrincipal output and choose an ExternalId secret of 16 to 128 characters.
  2. Choose Add connection and enter:
    • Id: a short name used in links, for example production. It can't be changed later, and local is reserved.
    • Name and AWS account id.
    • Access level: the same as the spoke stack's AccessLevel. The role in the account is what really enforces it.
    • Role ARN: the spoke stack's RoleArn output, arn:aws:iam::<account>:role/tracehound/<RoleName>. It must be in that account and under the /tracehound/ path.
    • External ID: the same secret you gave the spoke stack (Generate makes one you can then give the stack). It is stored and never shown again; when you edit the connection, leave it empty to keep it.
    • Regions to show: as many as you like; one role covers every Region of the account.
  3. Save connection, then choose Test. The test assumes the role and, for each Region, reports the number of log groups and their stored bytes, or the AWS error.

Each distinct AWS account counts against your plan's account limit, the hub account included (3 on Starter, 10 on Team, 50 on Business, unlimited on Enterprise). When the limit is reached, Add connection is disabled. Deleting a connection makes TraceHound stop using the role, and grants on it stop applying; the role stays in the account until you delete its stack. The collector adds a new connection's Regions on its next hourly run.

Grants

A grant gives a user or a group permissions on the log groups whose names match some patterns, on a connection (or all) in some Regions (or all) (Administration › Grants). A new grant, or a change, applies on the user's next request.

FieldValues
SubjectA user (their sign-in email) or a group (the name as your IdP sends it in the groups claim)
ConnectionOne connection, or All connections (including ones you add later)
RegionsSome Regions, or All Regions
Log group patternsOne per line, up to 50, matched against the whole name and case-sensitive, as IAM matches ARNs: * matches any run of characters (/ included) and ? exactly one. Letters, digits and _ . / # - besides the wildcards. For example /aws/lambda/payments-*, /ecs/orders, or * for every log group
PermissionsAny of the table below
DescriptionOptional, for your records
PermissionAllowsImpliesNeeds
browseSee the log group: settings, stored bytes, storage history, ingestion, tags, metric and subscription filters, streams and related resources
readRead events: Logs Insights queries, search, context around an event, live tail, Trace and field discoverybrowse
exportExport results and events from the browser (CSV, JSON), and create snapshots (Team and above)read
manageChange the retention of the log groupbrowsea Manage connection, Team and above

The Pattern tester next to the patterns shows, for a connection and Region you choose, how many log groups match and what they store, which pattern matches each, and which patterns match nothing. Try a name checks a single name. Log groups created later that match the patterns are covered automatically.

How grants combine

  • A user's permissions are the union of every grant that matches them, through their email or any of their groups, capped by the connection's access level and the plan.
  • A log group no grant covers doesn't exist for the user ("not found"): TraceHound doesn't reveal it. A log group they can see but not use in that way answers "forbidden".
  • Administrators have every permission on every log group, still bounded by each connection's access level and the plan.
  • Saved queries and dashboards never grant anything: they run with the viewer's own permissions.

Check access, under the grants, answers "what may this person do with this log group?": enter an email and groups, a connection, a Region and a log group name, and it shows the effective permissions, what the connection's access level removes, and the grants that matched. It works from the grants on the page; the API checks every request again.

How grants are enforced

Grants are enforced twice. TraceHound checks them on every request, and every AWS call runs with temporary credentials (15 minutes) that a per-request session policy limits to the user's grants: Logs Insights queries, event searches, field lists and Live Tail only on the ARNs of the log groups the user may read, and retention changes only on the one log group being changed. Even if TraceHound's own check had a bug, AWS would refuse anything outside the grants.

Every session carries the user's email as its source identity, so CloudTrail in each account names the person behind every CloudWatch Logs call.

If someone's grants would make a session policy larger than AWS allows, TraceHound refuses the request ("too many grants") rather than widening it. Combine grants: use groups, and patterns such as /aws/lambda/payments-* instead of many single names.

Examples

GoalGrant
The payments team reads and exports its functions' logsgroup payments, connection production, all Regions, patterns /aws/lambda/payments-*, export
Developers read every Lambda and ECS log in staging, but only browse productionTwo grants for group developers: connection staging, patterns /aws/lambda/* and /ecs/*, read; and connection production, pattern *, browse
The platform team cleans up retention everywheregroup platform, all connections (those with access level Manage), all Regions, pattern *, manage (and read if they also search)
Security reads CloudTrail and VPC Flow Logs everywheregroup security, all connections, all Regions, patterns aws-cloudtrail-logs* and /aws/vpc/*, export
An on-call engineer reads everything in one accountuser [email protected], connection production, all Regions, pattern *, read

Roles

RoleCan
UserUse the log groups their grants allow: browse, read, export and change retention, as granted. Own saved queries, dashboards and snapshots
AdministratorEvery permission on every log group of every connection (still bounded by each connection's access level and the plan), plus Administration. Administrators see everyone's query history, and can open, change and delete anyone's saved queries, dashboards and snapshots

  • Everyone who signs in without a role entry is a User, and sees no log groups until a grant applies to them.
  • Roles and grants match the user's email or groups. The email must be trusted: asserted by your SAML IdP, verified by your OIDC IdP (email_verified), or marked verified in the Cognito user pool (Identity providers).
  • In Administration › Roles, under Grant a role, choose User or Group, enter the email or the group name exactly as your IdP sends it (group names are case-sensitive), choose Administrator or User, and Save role. A role for a user wins over a role for one of their groups, so you can make a group administrators and keep one member a User. A change applies on the user's next request.
  • You can't remove your own Administrator role. Grant it to at least one more person or group.

The bootstrap admin

BootstrapAdminEmail (a stack parameter) is the bootstrap admin. The first person who signs in with that email is bound to it by their immutable user ID (the Cognito sub) and is always an Administrator, which prevents lock-out. The Roles page shows the entry as set by the stack. The binding is recorded in the audit log (bootstrap.bind). Someone else who later signs in with the same email address but a different user ID is not the bootstrap admin.

Recovering the bootstrap admin

Reset the binding when the bootstrap admin's user ID changes (the user was recreated, the IdP issues a new subject, or you switched IdentityProvider). Either:

  • Use a different person: update the stack and change BootstrapAdminEmail. The first sign-in with the new email takes over the binding.
  • Keep the same email: update the stack with BootstrapAdminEmail set to another address you can sign in with, and sign in with it once. Then set it back and sign in with the original email, which takes the binding over again.

If another Administrator can still sign in, they can simply grant the Administrator role to the person by email under Administration › Roles.

Settings

Administration › Settings:

SettingDefaultMeaning
Logs Insights price per GB scanned (US dollars)0.0050.0001 to 10. Used for the cost of every query, in History and Usage
Standard ingestion per GB (US dollars)0.500.01 to 10. Used for log group cost estimates
Infrequent Access ingestion per GB (US dollars)0.250.01 to 10. Used for Infrequent Access and Delivery log groups
Storage per GB-month (US dollars)0.030.001 to 10. Used for storage costs and retention savings
Live tail per session minute (US dollars)0.010 to 10. Used for live tail costs
Default reuse age (minutes)50 to 1,440. How long a person's own earlier result of the same query is shown again instead of running it, for dashboard panels and Explore's reuse option. 0 turns reuse off
Live tail minutes per user per day0 (no limit)0 to 1,440. Once a person's live tails have run this many session minutes in a UTC day, their new tails are refused until the next day
Longest snapshot lifetime (days)301 to 3,650. The most days a snapshot may last before it expires
Daily Logs Insights scan budget per user (GB)0 (no budget)Business and above. Once a person's queries have scanned this much in a UTC day, new queries are refused ("You have used today's scan budget of N GB.") until the next day. A query's bytes count when it finishes, so the last query of the day can go over
Allowed IP ranges (CIDR)empty (any network)Business and above. One IPv4 or IPv6 range per line, at most 200. People outside these ranges can sign in but can't use TraceHound (snapshots and live tail included). A list that doesn't contain your own address is refused, so you can't lock yourself out

The prices are CloudWatch's us-east-1 list prices by default; Reset to defaults restores them. Set your Region's prices, or your negotiated ones. Every estimate in TraceHound uses them; your AWS bill is the record.

Usage

Administration › Usage shows what your teams ran through TraceHound over the last 7, 30 or 90 days, per UTC day:

  • Insights queries, Failed and cancelled, Reused, Bytes scanned, Live tail minutes and the Estimated cost, with queries per day and bytes scanned, live tail minutes or cost per day.
  • Top users and Top Regions (Business and above): the 50 users and the 50 connections and Regions that cost the most over the period, with their queries, bytes scanned and live tail minutes.

Each query is counted once, when it reaches its final state (succeeded, failed or cancelled), however many people or panels were watching it. A result TraceHound showed again from someone's own earlier run starts no query and costs nothing. Live tail minutes are counted per session minute of each shared session, once, however many people watched it. Estimated costs use the prices in Settings; your AWS bill is the record. Usage covers only what runs through TraceHound, and is kept for 400 days.

Collector

Administration › Collector shows the storage history collector in every connection and Region: when it last ran, the last day it recorded, whether its 90-day ingestion backfill is done, how many log groups it tracked and any error.

Every hour the collector records each log group's stored bytes and yesterday's ingestion from CloudWatch metrics. The first run in a Region backfills 90 days of ingestion; stored bytes history starts the day TraceHound is installed. GetMetricData costs about $0.01 per 1,000 metrics, so a Region with 2,000 log groups costs about $0.04 a day. Storage history is kept for 90 days on Starter, 365 on Team, 730 on Business and 1,825 on Enterprise.

Collect now starts a run at once (recorded in the audit log as collector.run); new numbers appear within a few minutes. An error in one Region, such as an access error from a spoke role, is shown there and doesn't stop the others; the next run tries again. A Region with more than 20,000 log groups is recorded for its first 20,000 and says so.

Audit log

Administration › Audit log lists events by UTC day, newest first, with the time, the actor, the action, the target and the source IP. Open an event for its details. Filter this page searches the events shown.

ActionWhen
bootstrap.bindThe bootstrap admin was bound to a user
role.put, role.deleteA role was granted or removed
connection.put, connection.deleteA connection was added, changed or deleted (whether the external ID changed is recorded, never the ID itself)
grant.put, grant.deleteA grant was added, changed or deleted
settings.putSettings were changed
licence.refreshAn administrator checked the licence
update.availableA new release was found
loggroup.retentionThe retention of a log group was changed (the connection, Region, log group, and the old and new retention)
result.exportSomeone exported a query's full result (at most once per query and person per hour)
collector.runAn administrator started the collector
query.put, query.deleteA saved query was created, changed or deleted
dashboard.put, dashboard.deleteA dashboard was created, changed or deleted
snapshot.create, snapshot.deleteA snapshot was created or deleted
access.deniedA request to read events, run a query, export, take a snapshot, tail or change retention was refused for a missing permission or because it came from an address outside the IP allowlist

Events are kept for your plan's audit days: 30 on Starter, 90 on Team, 365 on Business and 3,650 on Enterprise. Each event is also written as a JSON line (with "kind":"audit") to the API's CloudWatch log group, /aws/lambda/<NamePrefix>-api (live tail refusals to /aws/lambda/<NamePrefix>-livetail), kept for the stack's LogRetentionDays, so you can forward it to your SIEM.

Every query, with who ran it, is in the query history, which administrators can see for everyone, day by day, under History › Everyone.

For a full trail, CloudTrail in each account records the CloudWatch Logs calls TraceHound makes, as it records them for any client, with sourceIdentity set to the user's email and the role session name th-<email>.

Licence and about

Administration › Licence and about shows your licence, your plan and the installed version.

Licence

TraceHound reads your AWS Marketplace licence from AWS License Manager in the hub account. The page shows the status, the plan, the entitlements, when the licence is valid until and when it was last checked. Check licence now reads it again (TraceHound otherwise rechecks every 10 minutes).

StatusMeaning
ActiveThe licence is valid
Grace periodLicense Manager is unreachable, or an active licence disappeared (for example while you move between plans). The last active plan keeps working for 72 hours
ExpiredThe grace period ended without an active licence
No licenceThe account has no TraceHound licence

Without a valid licence every page except this one says a licence is required. Nothing is deleted; subscribing again unlocks TraceHound.

Plan

What your plan includes lists the limits and features of your plan, and Compare plans shows all four:

StarterTeamBusinessEnterprise
AWS accounts31050unlimited
Saved queries per user505002,000unlimited
Dashboards per user550500unlimited
Versions kept per query or dashboard52550100
Query history kept30 days90 days365 days730 days
Storage history kept90 days365 days730 days1,825 days
Audit log kept30 days90 days365 days3,650 days
Fastest dashboard refresh5 minutes1 minute30 seconds10 seconds
Rows per snapshotno snapshots10,00050,000100,000
Overview, log group inventory, storage and ingestion history, cost estimates and recommendations, Explore, Trace, Live Tail, private saved queries and dashboards with templates and versions, history with cost, grants, daily usage, the audit log, IAM Identity Center and Cognito sign-inyesyesyesyes
Retention changes, shared queries and dashboards, snapshots, SAML and OIDC sign-inyesyesyes
IP allowlist, daily scan budgets, usage by user and Regionyesyes

Features your plan doesn't include show a plan badge, and TraceHound refuses them. To change plan, see Changing plan.

Version and updates

The version card shows the installed version and, when update checks are on (UpdateChecks), the latest release, its summary and release notes, whether it is a security release, the oldest supported version, and How to upgrade with the template URL and an AWS CLI command. A banner on the Administration pages announces a newer release. See Upgrading.

Something unclear or missing? Email [email protected].

Tell us what you have. We'll make it better and cheaper.

Send a short description of your current setup. We will tell you what we would improve, what it would cost, and where the savings are. A considered reply from an engineer, not a sales sequence.

TELL US ABOUT YOUR SETUP →