Skip to content

Commit c9e5ff5

Browse files
committed
fixed site
1 parent ad044ba commit c9e5ff5

2 files changed

Lines changed: 61 additions & 110 deletions

File tree

site/app/docs/terraform/page.tsx

Lines changed: 58 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -8,68 +8,48 @@ export const metadata = {
88
};
99

1010
export default function TerraformDocsPage() {
11-
const requiredProviders = `terraform {
12-
required_providers {
13-
logstruct = {
14-
source = "DocSpring/logstruct"
15-
version = "~> 0.2" # matches LogStruct tag
16-
}
17-
}
18-
}`;
19-
20-
const cwFilterDataSource = `data "logstruct_cloudwatch_filter" "email_delivered" {
21-
struct = "ActionMailer"
22-
event = "delivered"
23-
}`;
11+
// Module-first examples
12+
const moduleMetricFilter = `module "email_delivered_metric" {
13+
source = "DocSpring/logstruct/aws//modules/metric-filter"
14+
version = ">= 0.0.4"
2415
25-
const cwMetricFilter = `resource "aws_cloudwatch_log_metric_filter" "email_delivered_count" {
2616
name = "Email Delivered Count"
27-
log_group_name = var.log_group.docspring
28-
pattern = data.logstruct_cloudwatch_filter.email_delivered.pattern
29-
30-
metric_transformation {
31-
name = "docspring_email_delivered_count"
32-
namespace = var.namespace.logs
33-
value = "1"
34-
default_value = "0"
35-
unit = "Count"
36-
}
17+
log_group_name = var.log_group_name
18+
log_source = "mailer"
19+
log_event = "delivered"
20+
namespace = var.namespace
3721
}`;
3822

39-
const sqlCount = `data "logstruct_cloudwatch_filter" "sql_queries" {
40-
struct = "SQL"
41-
event = "database"
42-
}
23+
const moduleSqlCount = `module "sql_query_count" {
24+
source = "DocSpring/logstruct/aws//modules/metric-filter"
25+
version = ">= 0.0.4"
4326
44-
resource "aws_cloudwatch_log_metric_filter" "sql_count" {
4527
name = "SQL Query Count"
46-
log_group_name = var.log_group.app
47-
pattern = data.logstruct_cloudwatch_filter.sql_queries.pattern
48-
49-
metric_transformation {
50-
name = "app_sql_query_count"
51-
namespace = var.namespace.logs
52-
value = "1"
53-
unit = "Count"
54-
}
28+
log_group_name = var.log_group_name
29+
log_source = "app"
30+
log_event = "database"
31+
namespace = var.namespace
32+
}`;
33+
34+
const moduleGoodJobFinish = `module "goodjob_finish_count" {
35+
source = "DocSpring/logstruct/aws//modules/metric-filter"
36+
version = ">= 0.0.4"
37+
38+
name = "GoodJob Finish Count"
39+
log_group_name = var.log_group_name
40+
log_source = "job"
41+
log_event = "finish"
42+
namespace = var.namespace
5543
}`;
5644

57-
const mailDeliveryAttempt = `data "logstruct_cloudwatch_filter" "email_delivery_attempt" {
58-
struct = "ActionMailer"
59-
event = "delivery"
45+
// Provider reference (for advanced usage)
46+
const providerPattern = `data "logstruct_source" "mailer" {
47+
name = "mailer"
6048
}
6149
62-
resource "aws_cloudwatch_log_metric_filter" "email_delivery_attempt_count" {
63-
name = "Email Delivery Attempt Count"
64-
log_group_name = var.log_group.app
65-
pattern = data.logstruct_cloudwatch_filter.email_delivery_attempt.pattern
66-
67-
metric_transformation {
68-
name = "app_email_delivery_attempt_count"
69-
namespace = var.namespace.logs
70-
value = "1"
71-
unit = "Count"
72-
}
50+
data "logstruct_pattern" "email_delivered" {
51+
source = data.logstruct_source.mailer.canonical
52+
event = "delivered"
7353
}`;
7454

7555
return (
@@ -84,36 +64,28 @@ resource "aws_cloudwatch_log_metric_filter" "email_delivery_attempt_count" {
8464
<section id="installation" className="space-y-4">
8565
<h2 className="text-2xl font-semibold">Installation</h2>
8666
<p>
87-
Add the provider to your Terraform configuration. The provider version
88-
tracks LogStruct releases and uses the same tag.
67+
Use the AWS module wrappers for common patterns. They resolve the
68+
provider internally and compile patterns safely.
8969
</p>
90-
<CodeBlock language="hcl" title="Required Providers">
91-
{requiredProviders}
92-
</CodeBlock>
9370
</section>
9471

9572
<section id="example" className="space-y-4">
9673
<h2 className="text-2xl font-semibold">
9774
CloudWatch Metric Filter Example
9875
</h2>
9976
<p>
100-
Compile a CloudWatch JSON filter for a known struct/event and wire it
101-
into an AWS metric filter. Invalid combinations produce Terraform
102-
diagnostics during validate/plan.
77+
Module-first: create an AWS metric filter for a known LogStruct
78+
source/event combo. Invalid combinations fail at plan time.
10379
</p>
104-
<div className="grid gap-6 md:grid-cols-2">
105-
<CodeBlock language="hcl" title="Data Source">
106-
{cwFilterDataSource}
80+
<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
81+
<CodeBlock language="hcl" title="Module: Metric Filter">
82+
{moduleMetricFilter}
10783
</CodeBlock>
108-
<CodeBlock language="hcl" title="AWS Metric Filter">
109-
{cwMetricFilter}
84+
<CodeBlock language="hcl" title="Variables">
85+
{`variable "log_group_name" { type = string }
86+
variable "namespace" { type = string }`}
11087
</CodeBlock>
11188
</div>
112-
<p className="text-neutral-600 dark:text-neutral-400">
113-
The compiled pattern looks like:{' '}
114-
<code>{`{ $.src = "mailer" && $.evt = "delivered" ... }`}</code>
115-
and includes canonical key names with any fixed source constraints.
116-
</p>
11789
</section>
11890

11991
<section id="validation" className="space-y-4">
@@ -149,53 +121,20 @@ resource "aws_cloudwatch_log_metric_filter" "email_delivery_attempt_count" {
149121
<p className="text-neutral-600 dark:text-neutral-400">
150122
A few helpful patterns you can copy and adapt:
151123
</p>
152-
<div className="grid gap-6 md:grid-cols-2">
124+
<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
153125
<CodeBlock language="hcl" title="Count Email Deliveries">
154-
{`data "logstruct_cloudwatch_filter" "email_delivered" {
155-
struct = "ActionMailer"
156-
event = "delivered"
157-
}
158-
159-
resource "aws_cloudwatch_log_metric_filter" "email_delivered_count" {
160-
name = "Email Delivered Count"
161-
log_group_name = var.log_group.app
162-
pattern = data.logstruct_cloudwatch_filter.email_delivered.pattern
163-
164-
metric_transformation {
165-
name = "app_email_delivered_count"
166-
namespace = var.namespace.logs
167-
value = "1"
168-
unit = "Count"
169-
}
170-
}`}
126+
{moduleMetricFilter}
171127
</CodeBlock>
172-
173128
<CodeBlock language="hcl" title="Count Successful GoodJob Runs">
174-
{`data "logstruct_cloudwatch_filter" "goodjob_finish" {
175-
struct = "GoodJob"
176-
event = "finish"
177-
}
178-
179-
resource "aws_cloudwatch_log_metric_filter" "goodjob_finish_count" {
180-
name = "GoodJob Finish Count"
181-
log_group_name = var.log_group.app
182-
pattern = data.logstruct_cloudwatch_filter.goodjob_finish.pattern
183-
184-
metric_transformation {
185-
name = "app_goodjob_finish_count"
186-
namespace = var.namespace.logs
187-
value = "1"
188-
unit = "Count"
189-
}
190-
}`}
129+
{moduleGoodJobFinish}
191130
</CodeBlock>
192131
</div>
193-
<div className="grid gap-6 md:grid-cols-2">
132+
<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
194133
<CodeBlock language="hcl" title="Count All SQL Queries">
195-
{sqlCount}
134+
{moduleSqlCount}
196135
</CodeBlock>
197-
<CodeBlock language="hcl" title="Count Email Delivery Attempts">
198-
{mailDeliveryAttempt}
136+
<CodeBlock language="hcl" title="Provider Reference: Compile Pattern">
137+
{providerPattern}
199138
</CodeBlock>
200139
</div>
201140
<p className="text-neutral-600 dark:text-neutral-400">
@@ -219,6 +158,15 @@ resource "aws_cloudwatch_log_metric_filter" "goodjob_finish_count" {
219158
Provider README (GitHub)
220159
</a>
221160
</li>
161+
<li>
162+
<a
163+
href="https://registry.terraform.io/modules/DocSpring/logstruct/aws"
164+
target="_blank"
165+
rel="noopener noreferrer"
166+
>
167+
AWS Module (Terraform Registry)
168+
</a>
169+
</li>
222170
</ul>
223171
</section>
224172

site/lib/log-structure-descriptions.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ export const LOG_STRUCTURE_DESCRIPTIONS: Record<string, string> = {
1515
Security: 'For security-related events',
1616
GoodJob: 'For GoodJob background job lifecycle events',
1717
SQL: 'For ActiveRecord SQL query events and performance metrics',
18+
ActiveModelSerializers:
19+
'For render events produced by ActiveModelSerializers (serializer, adapter, resource, duration)',
20+
Ahoy: 'For analytics tracking events emitted by Ahoy (event name and properties)',
1821
};
1922

2023
/**

0 commit comments

Comments
 (0)