Skip to content

Commit b41cdb7

Browse files
Merge branch 'main' into improve-metrics
2 parents c88615f + a273e4f commit b41cdb7

File tree

16 files changed

+60
-488
lines changed

16 files changed

+60
-488
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 <hi@parseable.com>"]
55
edition = "2024"
66
rust-version = "1.88.0"
@@ -158,8 +158,8 @@ arrow = "54.0.0"
158158
temp-dir = "0.1.14"
159159

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

164164
[features]
165165
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
@@ -316,6 +316,7 @@ impl AlertRequest {
316316
notification_config: self.notification_config,
317317
created: Utc::now(),
318318
tags: self.tags,
319+
last_triggered_at: None,
319320
};
320321
Ok(config)
321322
}
@@ -342,6 +343,7 @@ pub struct AlertConfig {
342343
pub notification_config: NotificationConfig,
343344
pub created: DateTime<Utc>,
344345
pub tags: Option<Vec<String>>,
346+
pub last_triggered_at: Option<DateTime<Utc>>,
345347
}
346348

347349
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)]
@@ -367,6 +369,7 @@ pub struct AlertConfigResponse {
367369
pub notification_config: NotificationConfig,
368370
pub created: DateTime<Utc>,
369371
pub tags: Option<Vec<String>>,
372+
pub last_triggered_at: Option<DateTime<Utc>>,
370373
}
371374

372375
impl AlertConfig {
@@ -405,6 +408,7 @@ impl AlertConfig {
405408
notification_config: self.notification_config,
406409
created: self.created,
407410
tags: self.tags,
411+
last_triggered_at: self.last_triggered_at,
408412
}
409413
}
410414
}

src/alerts/alert_types.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ pub struct ThresholdAlert {
6262
pub created: DateTime<Utc>,
6363
pub tags: Option<Vec<String>>,
6464
pub datasets: Vec<String>,
65+
pub last_triggered_at: Option<DateTime<Utc>>,
6566
}
6667

6768
#[async_trait]
@@ -192,6 +193,11 @@ impl AlertTrait for ThresholdAlert {
192193
// update state in memory
193194
self.state = new_state;
194195

196+
// if new state is `Triggered`, change triggered at
197+
if new_state.eq(&AlertState::Triggered) {
198+
self.last_triggered_at = Some(Utc::now());
199+
}
200+
195201
// update on disk
196202
store.put_alert(self.id, &self.to_alert_config()).await?;
197203
// The task should have already been removed from the list of running tasks
@@ -220,6 +226,11 @@ impl AlertTrait for ThresholdAlert {
220226
// update state in memory
221227
self.state = new_state;
222228

229+
// if new state is `Triggered`, change triggered at
230+
if new_state.eq(&AlertState::Triggered) {
231+
self.last_triggered_at = Some(Utc::now());
232+
}
233+
223234
// update on disk
224235
store.put_alert(self.id, &self.to_alert_config()).await?;
225236

@@ -367,6 +378,7 @@ impl From<AlertConfig> for ThresholdAlert {
367378
created: value.created,
368379
tags: value.tags,
369380
datasets: value.datasets,
381+
last_triggered_at: value.last_triggered_at,
370382
}
371383
}
372384
}
@@ -389,6 +401,7 @@ impl From<ThresholdAlert> for AlertConfig {
389401
created: val.created,
390402
tags: val.tags,
391403
datasets: val.datasets,
404+
last_triggered_at: val.last_triggered_at,
392405
}
393406
}
394407
}

src/alerts/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ impl AlertConfig {
134134
notification_config: NotificationConfig::default(),
135135
created: Utc::now(),
136136
tags: None,
137+
last_triggered_at: None,
137138
};
138139

139140
// Save the migrated alert back to storage
@@ -675,6 +676,13 @@ impl AlertConfig {
675676
),
676677
);
677678

679+
if let Some(ts) = self.last_triggered_at {
680+
map.insert(
681+
"lastTriggeredAt".to_string(),
682+
serde_json::Value::String(ts.to_string()),
683+
);
684+
}
685+
678686
map
679687
}
680688
}

0 commit comments

Comments
 (0)