Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
942afc1
fix(ci): resolve critical cross-platform compilation issues
casibbald Jul 3, 2025
c2fbdc9
feat: consolidate release workflows into unified release-please pipeline
casibbald Jul 3, 2025
e5e8475
feat: implement comprehensive CI/CD controller workflow architecture
casibbald Jul 3, 2025
7a6b374
feat: implement comprehensive cross-platform support with 9 architect…
casibbald Jul 3, 2025
c696105
feat: implement intelligent concurrency control with automatic build …
casibbald Jul 3, 2025
e7a36ed
fix(ci): enhance conventional commits validation for workflow_call ev…
casibbald Jul 3, 2025
73e0757
fix(ci): restrict release workflow to PR merges only
casibbald Jul 3, 2025
bc8b09a
docs(ci): update workflow README for embedded conventional commits ar…
casibbald Jul 3, 2025
085fa07
feat(security): implement comprehensive security and Dependabot autom…
casibbald Jul 3, 2025
b901c6e
feat: production-ready OTEL with enhanced config help
casibbald Jul 3, 2025
9b186e7
perf: eliminate 2.5s OTEL shutdown delay for non-functional operations
casibbald Jul 3, 2025
9a89814
fix: resolve compilation errors and clippy warnings
casibbald Jul 3, 2025
f5b5df0
fix: Improve error handling advice for relative paths
casibbald Jul 3, 2025
ba02637
feat: integrate auto-fix clippy script into pre-commit hook
casibbald Jul 3, 2025
8d386a8
fix: integrate CodeQL security analysis into main CI/CD pipeline
casibbald Jul 3, 2025
13a504c
docs: update GitHub workflows README with integrated security analysis
casibbald Jul 3, 2025
04f4205
fix: add security-events permission for CodeQL workflow
casibbald Jul 3, 2025
b78e16d
feat: add comprehensive permissions for multi-platform CI/CD pipeline
casibbald Jul 3, 2025
644ec44
fix: simplify release logic with branch protection rules
casibbald Jul 3, 2025
1d89992
fix(ci): add issues:read permission for branch-to-issue validation
casibbald Jul 3, 2025
c7ffaf1
fix(ci): resolve CodeQL workflow language detection and SBOM generati…
casibbald Jul 3, 2025
71c50f6
perf(ci): implement strategic shared caching with lint-first compilation
casibbald Jul 3, 2025
f29aefd
fix(ci): add feature branch to workflow triggers for testing
casibbald Jul 3, 2025
824d7e5
refactor(ci): simplify workflow triggers to master + issue branches
casibbald Jul 3, 2025
0a8e0fc
fix(ci): resolve concurrency configuration causing workflow failure
casibbald Jul 3, 2025
48edc2c
feat(ci): implement comprehensive manual workflow triggers with advan…
casibbald Jul 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
541 changes: 541 additions & 0 deletions .docker/grafana/dashboards/obsctl-jaeger.json

Large diffs are not rendered by default.

469 changes: 469 additions & 0 deletions .docker/grafana/dashboards/obsctl-loki.json

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions .docker/grafana/provisioning/datasources/datasources.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,17 @@ datasources:
url: http://jaeger:16686
uid: jaeger
editable: true

- name: Loki
type: loki
access: proxy
url: http://loki:3100
uid: loki
editable: true
jsonData:
maxLines: 1000
derivedFields:
- datasourceUid: jaeger
matcherRegex: "traceID=(\\w+)"
name: TraceID
url: "$${__value.raw}"
72 changes: 72 additions & 0 deletions .docker/loki-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
auth_enabled: false

server:
http_listen_port: 3100
grpc_listen_port: 9096

common:
instance_addr: 127.0.0.1
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory

query_range:
results_cache:
cache:
embedded_cache:
enabled: true
max_size_mb: 100

schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h

ruler:
alertmanager_url: http://localhost:9093

# Frontend configuration for better performance
frontend:
compress_responses: true
max_outstanding_per_tenant: 256

# Limits configuration
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
max_cache_freshness_per_query: 10m
split_queries_by_interval: 15m
max_query_parallelism: 32
max_streams_per_user: 10000
max_line_size: 256KB
max_entries_limit_per_query: 5000

# Compactor configuration for log retention
compactor:
working_directory: /loki/compactor
shared_store: filesystem
compaction_interval: 10m
retention_enabled: true
retention_delete_delay: 2h
retention_delete_worker_count: 150

# Table manager for retention
table_manager:
retention_deletes_enabled: true
retention_period: 168h # 7 days retention

# Analytics configuration
analytics:
reporting_enabled: false
127 changes: 127 additions & 0 deletions .docker/promtail-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
server:
http_listen_port: 9080
grpc_listen_port: 0

positions:
filename: /tmp/positions/positions.yaml

clients:
- url: http://loki:3100/loki/api/v1/push

scrape_configs:
# obsctl error logs from /tmp/obsctl/error-*.log
- job_name: obsctl-errors
static_configs:
- targets:
- localhost
labels:
job: obsctl-errors
service: obsctl
log_type: error
__path__: /tmp/obsctl/error-*.log
pipeline_stages:
# Parse obsctl error log format
- regex:
expression: '^obsctl Error Report\n==================\nTimestamp: (?P<timestamp>.*)\nError ID: (?P<error_id>.*)\nVersion: (?P<version>.*)\n\nError Details:\n(?P<error_details>.*)\n\nError Chain:\n(?P<error_chain>.*)\n\nEnvironment:\n(?P<environment>.*)'
source: content
- labels:
error_id:
version:
level: error
- timestamp:
source: timestamp
format: RFC3339

# System logs (if available)
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: systemlogs
__path__: /var/log/syslog
pipeline_stages:
- match:
selector: '{job="systemlogs"}'
stages:
- regex:
expression: '^(?P<timestamp>\S+\s+\d+\s+\d+:\d+:\d+)\s+(?P<hostname>\S+)\s+(?P<service>\S+):\s+(?P<message>.*)'
- labels:
hostname:
service:
- timestamp:
source: timestamp
format: "Jan _2 15:04:05"

# obsctl systemd journal logs (Linux only)
- job_name: obsctl-journal
journal:
max_age: 12h
labels:
job: obsctl-journal
service: obsctl
log_type: journal
relabel_configs:
- source_labels: ['__journal__systemd_unit']
target_label: systemd_unit
- source_labels: ['__journal_syslog_identifier']
target_label: syslog_identifier
pipeline_stages:
- match:
selector: '{syslog_identifier="obsctl"}'
stages:
- regex:
expression: '^(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z)\s+\[(?P<level>\w+)\]\s+(?P<message>.*)'
- labels:
level:
- timestamp:
source: timestamp
format: RFC3339Nano

# Traffic generator logs (development)
- job_name: traffic-generator
static_configs:
- targets:
- localhost
labels:
job: traffic-generator
service: obsctl-traffic
log_type: application
__path__: /Users/casibbald/Workspace/microscaler/obsctl/traffic_generator.log
pipeline_stages:
- regex:
expression: '^(?P<timestamp>\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2},\d+)\s+-\s+(?P<level>\w+)\s+-\s+(?:\[(?P<user_id>[^\]]+)\]\s+)?(?P<message>.*)'
- labels:
level:
user_id:
- timestamp:
source: timestamp
format: "2006-01-02 15:04:05,000"

# Docker container logs (if running in containers)
- job_name: docker
docker_sd_configs:
- host: unix:///var/run/docker.sock
refresh_interval: 5s
filters:
- name: label
values: ["logging=promtail"]
relabel_configs:
- source_labels: ['__meta_docker_container_name']
target_label: container_name
- source_labels: ['__meta_docker_container_label_com_docker_compose_service']
target_label: compose_service
pipeline_stages:
- cri: {}
- labels:
level:
- match:
selector: '{compose_service=~"obsctl.*"}'
stages:
- regex:
expression: '^(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z)\s+\[(?P<level>\w+)\]\s+(?P<message>.*)'
- labels:
level:
- timestamp:
source: timestamp
format: RFC3339Nano
118 changes: 118 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
version: 2
updates:
# Rust dependencies (Cargo.toml)
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "daily"
time: "00:00"
timezone: "UTC"
open-pull-requests-limit: 10
reviewers:
- "microscaler/obsctl-maintainers"
assignees:
- "microscaler/obsctl-maintainers"
commit-message:
prefix: "deps"
prefix-development: "deps-dev"
include: "scope"
labels:
- "dependencies"
- "rust"
- "security"
# Group related updates
groups:
aws-sdk:
patterns:
- "aws-*"
serde:
patterns:
- "serde*"
tokio:
patterns:
- "tokio*"
opentelemetry:
patterns:
- "opentelemetry*"
clap:
patterns:
- "clap*"

# GitHub Actions dependencies
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
time: "00:15"
timezone: "UTC"
open-pull-requests-limit: 5
reviewers:
- "microscaler/obsctl-maintainers"
assignees:
- "microscaler/obsctl-maintainers"
commit-message:
prefix: "ci"
include: "scope"
labels:
- "dependencies"
- "github-actions"
- "ci/cd"

# Python dependencies (for scripts and tools)
- package-ecosystem: "pip"
directory: "/scripts"
schedule:
interval: "daily"
time: "00:30"
timezone: "UTC"
open-pull-requests-limit: 5
reviewers:
- "microscaler/obsctl-maintainers"
assignees:
- "microscaler/obsctl-maintainers"
commit-message:
prefix: "deps"
prefix-development: "deps-dev"
include: "scope"
labels:
- "dependencies"
- "python"
- "scripts"

# Docker dependencies (if any Dockerfiles exist)
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "daily"
time: "00:45"
timezone: "UTC"
open-pull-requests-limit: 3
reviewers:
- "microscaler/obsctl-maintainers"
assignees:
- "microscaler/obsctl-maintainers"
commit-message:
prefix: "deps"
include: "scope"
labels:
- "dependencies"
- "docker"

# Packaging dependencies (for various package managers)
- package-ecosystem: "bundler"
directory: "/packaging/homebrew"
schedule:
interval: "monthly"
day: "first-monday"
time: "09:00"
timezone: "UTC"
open-pull-requests-limit: 2
reviewers:
- "microscaler/obsctl-maintainers"
commit-message:
prefix: "deps"
include: "scope"
labels:
- "dependencies"
- "packaging"
- "homebrew"
Loading