some greptimedb improvements
This commit is contained in:
parent
540d8eb658
commit
d351573a3b
4 changed files with 154 additions and 15 deletions
10
roles/any.software.greptimedb-podman/README.md
Normal file
10
roles/any.software.greptimedb-podman/README.md
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# `any.software.greptimedb-podman`
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
* Installs GreptimeDB inside a Podman container
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
* `greptimedb_version`: version of GreptimeDB to install
|
||||||
|
* `greptimedb_data_dir`: directory to mount as the data directory
|
||||||
|
|
@ -0,0 +1,143 @@
|
||||||
|
# GreptimeDB Pipeline – OTel journald receiver
|
||||||
|
#
|
||||||
|
# Input: NDJSON log records produced by the OpenTelemetry Collector's
|
||||||
|
# journald receiver. The OTel OTLP exporter wraps the journald
|
||||||
|
# JSON entry as a string under the top-level "body" key, so the
|
||||||
|
# pipeline first parses that string into an object before doing
|
||||||
|
# anything else.
|
||||||
|
#
|
||||||
|
# Timestamp: __MONOTONIC_TIMESTAMP (microseconds since boot) is used as the
|
||||||
|
# time-index column. If you prefer wall-clock time, swap this for
|
||||||
|
# __REALTIME_TIMESTAMP with the same resolution.
|
||||||
|
#
|
||||||
|
# Apply this pipeline by setting the HTTP export header in the OTel config:
|
||||||
|
# x-greptime-pipeline-name: journald
|
||||||
|
#
|
||||||
|
# Upload via the GreptimeDB API:
|
||||||
|
# curl -X POST 'http://<host>:4000/v1/events/pipelines/journald' \
|
||||||
|
# -H 'Content-Type: application/x-yaml' \
|
||||||
|
# --data-binary @journald.yaml
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
processors:
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 1. The OTel OTLP exporter encodes the journald entry as a JSON string
|
||||||
|
# in the "body" field. Parse it in-place so subsequent steps can
|
||||||
|
# address individual keys as .body.<key>.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
- json_parse:
|
||||||
|
fields:
|
||||||
|
- Body, body
|
||||||
|
ignore_missing: false
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 2. Flatten every journald / systemd field from .body.* to the top
|
||||||
|
# level with clean snake_case names, cast numeric fields to integers,
|
||||||
|
# strip the trailing newline journald appends to _SELINUX_CONTEXT,
|
||||||
|
# lift __MONOTONIC_TIMESTAMP as a plain string for the epoch processor
|
||||||
|
# in step 3, and finally drop the now-empty .body object.
|
||||||
|
#
|
||||||
|
# del(.body.<key>) returns the value AND removes the key in one step.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
- vrl:
|
||||||
|
source: |
|
||||||
|
.transport = del(.body._TRANSPORT)
|
||||||
|
.hostname = del(.body._HOSTNAME)
|
||||||
|
.exe = del(.body._EXE)
|
||||||
|
.cmdline = del(.body._CMDLINE)
|
||||||
|
.runtime_scope = del(.body._RUNTIME_SCOPE)
|
||||||
|
.systemd_cgroup = del(.body._SYSTEMD_CGROUP)
|
||||||
|
.comm = del(.body._COMM)
|
||||||
|
.message = del(.body.MESSAGE)
|
||||||
|
.systemd_invocation_id = del(.body._SYSTEMD_INVOCATION_ID)
|
||||||
|
.gid = to_int!(del(.body._GID))
|
||||||
|
.uid = to_int!(del(.body._UID))
|
||||||
|
.priority = to_int!(del(.body.PRIORITY))
|
||||||
|
.boot_id = del(.body._BOOT_ID)
|
||||||
|
.pid = to_int!(del(.body._PID))
|
||||||
|
.seqnum_id = del(.body.__SEQNUM_ID)
|
||||||
|
.seqnum = to_int!(del(.body.__SEQNUM))
|
||||||
|
.syslog_identifier = del(.body.SYSLOG_IDENTIFIER)
|
||||||
|
.stream_id = del(.body._STREAM_ID)
|
||||||
|
.selinux_context = strip_whitespace(string!(del(.body._SELINUX_CONTEXT)))
|
||||||
|
.systemd_slice = del(.body._SYSTEMD_SLICE)
|
||||||
|
.syslog_facility = to_int!(del(.body.SYSLOG_FACILITY))
|
||||||
|
.cursor = del(.body.__CURSOR)
|
||||||
|
.systemd_unit = del(.body._SYSTEMD_UNIT)
|
||||||
|
.cap_effective = del(.body._CAP_EFFECTIVE)
|
||||||
|
.machine_id = del(.body._MACHINE_ID)
|
||||||
|
# Lift the raw timestamp string so the epoch processor (step 3)
|
||||||
|
# can consume it from the top level.
|
||||||
|
.monotonic_timestamp = to_int!(del(.body.__MONOTONIC_TIMESTAMP))
|
||||||
|
del(.body)
|
||||||
|
.
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 3. Parse the monotonic timestamp (µs since boot) into a typed value
|
||||||
|
# and rename it to `timestamp` so it becomes the time-index column.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# - epoch:
|
||||||
|
# fields:
|
||||||
|
# - __MONOTONIC_TIMESTAMP, timestamp
|
||||||
|
# resolution: microsecond
|
||||||
|
# ignore_missing: false
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# Transform
|
||||||
|
#
|
||||||
|
# In version 2, only fields that require a specific type, index, or
|
||||||
|
# tag annotation need to be listed here. All remaining fields from the
|
||||||
|
# pipeline context are auto-detected and persisted by the engine.
|
||||||
|
#
|
||||||
|
# Resulting schema (auto-detected fields shown as comments):
|
||||||
|
# timestamp TimestampMicrosecond PRIMARY KEY (time index)
|
||||||
|
# message String fulltext index
|
||||||
|
# systemd_unit String inverted index
|
||||||
|
# hostname String inverted index
|
||||||
|
# comm String inverted index
|
||||||
|
# syslog_identifier String inverted index
|
||||||
|
# transport String inverted index
|
||||||
|
# systemd_slice String inverted index
|
||||||
|
# priority Int64 (auto)
|
||||||
|
# syslog_facility Int64 (auto)
|
||||||
|
# uid Int64 (auto)
|
||||||
|
# gid Int64 (auto)
|
||||||
|
# pid Int64 (auto)
|
||||||
|
# seqnum Int64 (auto)
|
||||||
|
# exe String (auto)
|
||||||
|
# cmdline String (auto)
|
||||||
|
# runtime_scope String (auto)
|
||||||
|
# systemd_cgroup String (auto)
|
||||||
|
# systemd_invocation_id String (auto)
|
||||||
|
# boot_id String (auto)
|
||||||
|
# seqnum_id String (auto)
|
||||||
|
# stream_id String (auto)
|
||||||
|
# selinux_context String (auto)
|
||||||
|
# cursor String (auto)
|
||||||
|
# cap_effective String (auto)
|
||||||
|
# machine_id String (auto)
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
transform:
|
||||||
|
# Time index — microsecond precision monotonic clock
|
||||||
|
- fields:
|
||||||
|
- Timestamp
|
||||||
|
type: epoch, us
|
||||||
|
index: timestamp
|
||||||
|
|
||||||
|
# Full-text search on the human-readable log body
|
||||||
|
- fields:
|
||||||
|
- message
|
||||||
|
type: string
|
||||||
|
index: fulltext
|
||||||
|
|
||||||
|
# Inverted indexes on the fields most commonly used in WHERE / GROUP BY
|
||||||
|
- fields:
|
||||||
|
- systemd_unit
|
||||||
|
- hostname
|
||||||
|
- comm
|
||||||
|
- syslog_identifier
|
||||||
|
- transport
|
||||||
|
- systemd_slice
|
||||||
|
type: string
|
||||||
|
index: inverted
|
||||||
|
|
@ -23,17 +23,3 @@
|
||||||
owner: 'debian'
|
owner: 'debian'
|
||||||
group: 'debian'
|
group: 'debian'
|
||||||
notify: 'restart greptimedb'
|
notify: 'restart greptimedb'
|
||||||
|
|
||||||
# - name: Ensure stack is deployed
|
|
||||||
# ansible.builtin.shell:
|
|
||||||
# chdir: '/etc/miniflux'
|
|
||||||
# cmd: 'docker compose up -d --remove-orphans'
|
|
||||||
# when: 'res.changed'
|
|
||||||
|
|
||||||
# - name: Ensure backup script is present
|
|
||||||
# ansible.builtin.copy:
|
|
||||||
# src: 'miniflux.backup.sh'
|
|
||||||
# dest: '/etc/backups/miniflux.backup.sh'
|
|
||||||
# owner: 'root'
|
|
||||||
# group: 'root'
|
|
||||||
# mode: '0644'
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# vim: ft=systemd
|
# vim: ft=systemd
|
||||||
[Container]
|
[Container]
|
||||||
Image=docker.io/greptime/greptimedb:v1.0.0-rc.1
|
Image=docker.io/greptime/greptimedb:{{ greptimedb_version }}
|
||||||
|
|
||||||
Exec=standalone start --http-addr 0.0.0.0:4000 --rpc-bind-addr 0.0.0.0:4001 --mysql-addr 0.0.0.0:4002 --postgres-addr 0.0.0.0:4003
|
Exec=standalone start --http-addr 0.0.0.0:4000 --rpc-bind-addr 0.0.0.0:4001 --mysql-addr 0.0.0.0:4002 --postgres-addr 0.0.0.0:4003
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue