Skip to content

Commit 9d7b8da

Browse files
Merge branch 'main' into metastore
2 parents af301b3 + e980283 commit 9d7b8da

File tree

30 files changed

+460
-738
lines changed

30 files changed

+460
-738
lines changed

.github/workflows/build.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ jobs:
9696
if: runner.os == 'macOS'
9797
run: |
9898
brew install \
99-
cmake \
10099
llvm \
101100
pkg-config \
102101
zstd \

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "parseable"
3-
version = "2.4.1"
3+
version = "2.4.2"
44
authors = ["Parseable Team <[email protected]>"]
55
edition = "2024"
66
rust-version = "1.88.0"
@@ -159,8 +159,8 @@ arrow = "54.0.0"
159159
temp-dir = "0.1.14"
160160

161161
[package.metadata.parseable_ui]
162-
assets-url = "https://parseable-prism-build.s3.us-east-2.amazonaws.com/v2.4.1/build.zip"
163-
assets-sha1 = "19eec4d38b978270eca1026325350e38c235ac31"
162+
assets-url = "https://parseable-prism-build.s3.us-east-2.amazonaws.com/v2.4.2/build.zip"
163+
assets-sha1 = "218c43d9bb75e8f9a15df544763a874e65fa0f40"
164164

165165
[features]
166166
debug = []

README.md

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,27 @@
1313
[![Docs](https://img.shields.io/badge/stable%20docs-parseable.com%2Fdocs-brightgreen?style=flat&color=%2373DC8C&label=Docs)](https://logg.ing/docs)
1414
[![Build](https://img.shields.io/github/checks-status/parseablehq/parseable/main?style=flat&color=%2373DC8C&label=Checks)](https://github.com/parseablehq/parseable/actions)
1515

16-
[Key Concepts](https://www.parseable.com/docs/key-concepts) | [Features](https://www.parseable.com/docs/features/alerts) | [Documentation](https://www.parseable.com/docs) | [Demo](https://demo.parseable.com/login?q=eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiJhZG1pbiJ9) | [FAQ](https://www.parseable.com/docs/key-concepts/data-model#faq)
16+
[Key Concepts](https://www.parseable.com/docs/key-concepts) | [Features](https://www.parseable.com/docs/features/alerts) | [Documentation](https://www.parseable.com/docs) | [Demo](https://demo.parseable.com/login) | [FAQ](https://www.parseable.com/docs/key-concepts/data-model#faq)
1717

1818
</div>
1919

20-
ParseableDB is a disk **_less_**, cloud native database for logs, observability, security, and compliance. ParseableDB is built with focus on simplicity & resource efficiency. It is useful for use cases where **complete data ownership, data security and privacy are paramount**.
20+
Parseable is a full stack observability platform built to ingest, analyze and extract insights from all types of telemetry (MELT) data. You can run Parseable on your local machine, in the cloud, or as a managed service. To experience Parseable UI, checkout [demo.parseable.com ↗︎](https://demo.parseable.com/login).
2121

22-
To experience Prism(Parseable UI), checkout [demo.parseable.com ↗︎](https://demo.parseable.com/login?q=eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiJhZG1pbiJ9).
22+
<div align="center">
23+
<a href="http://www.youtube.com/watch?feature=player_embedded&v=gYn3pFAfrVA" target="_blank">
24+
<img src="http://img.youtube.com/vi/gYn3pFAfrVA/mqdefault.jpg" alt="Watch the video" width="300" height="240" />
25+
</a>
26+
</div>
2327

2428
## Quickstart :zap:
2529

26-
### Run ParseableDB
30+
### Run Parseable
2731

2832
<details>
2933
<summary><a href="https://www.parseable.com/docs/quickstart/docker">Docker Image</a></summary>
3034
<p>
3135

32-
Get started with ParseableDB Docker with a single command:
36+
Get started with Parseable Docker image with a single command:
3337

3438
```bash
3539
docker run -p 8000:8000 \
@@ -44,7 +48,7 @@ docker run -p 8000:8000 \
4448
<summary><a href="https://www.parseable.com/docs/quickstart/binary">Executable Binary</a></summary>
4549
<p>
4650

47-
Download and run the ParseableDB binary on your laptop:
51+
Download and run the Parseable binary on your laptop:
4852

4953
- Linux or MacOS
5054

@@ -63,7 +67,7 @@ powershell -c "irm https://logg.ing/install-windows | iex"
6367

6468
### Ingestion and query
6569

66-
Once you have ParseableDB running, ingest data with the below command. This will send logs to the `demo` stream. You can see the logs in the dashboard.
70+
Once you have Parseable running, ingest data with the below command. This will send logs to the `demo` stream. You can see the logs in the dashboard.
6771

6872
```bash
6973
curl --location --request POST 'http://localhost:8000/api/v1/ingest' \
@@ -85,10 +89,10 @@ Access the UI at [http://localhost:8000 ↗︎](http://localhost:8000). You can
8589

8690
For quickstart, refer the [quickstart section ↗︎](#quickstart-zap).
8791

88-
This section elaborates available options to run ParseableDB in production or development environments.
92+
This section elaborates available options to run Parseable in production or development environments.
8993

90-
- Distributed ParseableDB on Kubernetes: [Helm Installation](https://www.parseable.com/docs/installation/distributed/k8s-helm).
91-
- Distributed ParseableDB on AWS EC2 / VMs / Linux: [Binary Installation](https://www.parseable.com/docs/installation/distributed/linux).
94+
- Distributed Parseable on Kubernetes: [Helm Installation](https://www.parseable.com/docs/installation/distributed/k8s-helm).
95+
- Distributed Parseable on AWS EC2 / VMs / Linux: [Binary Installation](https://www.parseable.com/docs/installation/distributed/linux).
9296

9397
## Features :rocket:
9498

@@ -99,20 +103,6 @@ This section elaborates available options to run ParseableDB in production or de
99103
- [OAuth2 support ↗︎](https://www.parseable.com/docs/features/oepnid)
100104
- [OpenTelemetry support ↗︎](https://www.parseable.com/docs/OpenTelemetry/logs)
101105

102-
## How do people use Parseable :bulb:
103-
104-
- **Log Analytics** - Not all logs are created equal. For example application logs are seldom useful after a few days pass, but if same application also logs all the user interactions, that data is very valuable for product managers, and can be stored for a longer period. Several businesses store such high value logs and slice / dice them as needed.
105-
106-
- **Audit & Compliance** - Organizations that need to store logs in a secure, compliant manner. Parseable's direct to S3 bucket storage mode ensures that logs are stored in a secure, cost effective manner, and can be accessed only by authorized users, while all the data is queryable in real-time.
107-
108-
- **Observability & Monitoring** - A very large chunk of observability data is logs. Organizations that need to monitor their systems, applications, and infrastructure in real-time use Parseable as the primary log storage system so they get timely alerts, and can analyze logs in real-time.
109-
110-
## Motivation :dart:
111-
112-
Traditionally, logging has been seen as a text search problem. Log volumes were not high, and data ingestion or storage were not really issues. This led us to today, where all the logging platforms are primarily text search engines.
113-
114-
But with log data growing exponentially, today's log data challenges involve whole lot more – Data ingestion, storage, and observation, all at scale. We are building Parseable to address these challenges.
115-
116106
## Verify images :writing_hand:
117107

118108
Parseable builds are attested for build provenance and integrity using the [attest-build-provenance](https://github.com/actions/attest-build-provenance) action. The attestations can be verified by having the latest version of [GitHub CLI](https://github.com/cli/cli/releases/latest) installed in your system. Then, execute the following command:

helm/values.yaml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,6 @@ parseable:
4646
requests:
4747
cpu: 250m
4848
memory: 1Gi
49-
## Enable audit logging on parseable nodes
50-
auditLogging:
51-
enabled: false
52-
p_server: "http://parseable-ingestor-service.parseable.svc.cluster.local"
53-
p_username: "admin"
54-
p_password: "admin"
5549

5650
## Add environment variables to the Parseable Deployment
5751
env:

src/alerts/alert_structs.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ impl AlertRequest {
318318
notification_config: self.notification_config,
319319
created: Utc::now(),
320320
tags: self.tags,
321+
last_triggered_at: None,
321322
};
322323
Ok(config)
323324
}
@@ -344,6 +345,7 @@ pub struct AlertConfig {
344345
pub notification_config: NotificationConfig,
345346
pub created: DateTime<Utc>,
346347
pub tags: Option<Vec<String>>,
348+
pub last_triggered_at: Option<DateTime<Utc>>,
347349
}
348350

349351
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)]
@@ -369,6 +371,7 @@ pub struct AlertConfigResponse {
369371
pub notification_config: NotificationConfig,
370372
pub created: DateTime<Utc>,
371373
pub tags: Option<Vec<String>>,
374+
pub last_triggered_at: Option<DateTime<Utc>>,
372375
}
373376

374377
impl AlertConfig {
@@ -407,6 +410,7 @@ impl AlertConfig {
407410
notification_config: self.notification_config,
408411
created: self.created,
409412
tags: self.tags,
413+
last_triggered_at: self.last_triggered_at,
410414
}
411415
}
412416
}

src/alerts/alert_types.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ pub struct ThresholdAlert {
6464
pub created: DateTime<Utc>,
6565
pub tags: Option<Vec<String>>,
6666
pub datasets: Vec<String>,
67+
pub last_triggered_at: Option<DateTime<Utc>>,
6768
}
6869

6970
impl MetastoreObject for ThresholdAlert {
@@ -205,6 +206,11 @@ impl AlertTrait for ThresholdAlert {
205206
// update state in memory
206207
self.state = new_state;
207208

209+
// if new state is `Triggered`, change triggered at
210+
if new_state.eq(&AlertState::Triggered) {
211+
self.last_triggered_at = Some(Utc::now());
212+
}
213+
208214
// update on disk
209215
PARSEABLE
210216
.metastore
@@ -236,6 +242,11 @@ impl AlertTrait for ThresholdAlert {
236242
// update state in memory
237243
self.state = new_state;
238244

245+
// if new state is `Triggered`, change triggered at
246+
if new_state.eq(&AlertState::Triggered) {
247+
self.last_triggered_at = Some(Utc::now());
248+
}
249+
239250
// update on disk
240251
PARSEABLE
241252
.metastore
@@ -386,6 +397,7 @@ impl From<AlertConfig> for ThresholdAlert {
386397
created: value.created,
387398
tags: value.tags,
388399
datasets: value.datasets,
400+
last_triggered_at: value.last_triggered_at,
389401
}
390402
}
391403
}
@@ -408,6 +420,7 @@ impl From<ThresholdAlert> for AlertConfig {
408420
created: val.created,
409421
tags: val.tags,
410422
datasets: val.datasets,
423+
last_triggered_at: val.last_triggered_at,
411424
}
412425
}
413426
}

src/alerts/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ impl AlertConfig {
132132
notification_config: NotificationConfig::default(),
133133
created: Utc::now(),
134134
tags: None,
135+
last_triggered_at: None,
135136
};
136137

137138
// Save the migrated alert back to storage
@@ -673,6 +674,13 @@ impl AlertConfig {
673674
),
674675
);
675676

677+
if let Some(ts) = self.last_triggered_at {
678+
map.insert(
679+
"lastTriggeredAt".to_string(),
680+
serde_json::Value::String(ts.to_string()),
681+
);
682+
}
683+
676684
map
677685
}
678686
}

0 commit comments

Comments
 (0)