docker info --format '{{.LoggingDriver}}'
docker ps -q |xargs -n 1 docker inspect -f '{{.HostConfig.LogConfig.Type}}'
# Search logs in vscode. case and regex
\.ERROR|\.CRIT
Loki
- Look at Fluentd, Logstash or Fluentbit for capture
Pulling logs from Loki API
# use lens port-forwarding
curl -G -s "http://localhost:56322/loki/api/v1/query_range" \
--data-urlencode 'query={container="backend"} |= "authenticated"' \
--data-urlencode 'start=2024-01-31T01:00:00.000Z' \
--data-urlencode 'end=2024-03-01T02:00:00.000Z' \
--data-urlencode 'limit=5000' \
--data-urlencode 'direction=FORWARD' |tee ./auth-logs-2.json
cat auth-logs.json|jq '.data.result[].values|.' | awk -F'--' '{print $2}' |sort -u > list1
cat list* |sort -u | awk '{print $5}' > list-final
# util to find time 721hrs away
# offset.py
#!/usr/bin/env python
from datetime import datetime, timedelta
import sys
timestamp_str = sys.argv[1]
timestamp = datetime.strptime(timestamp_str, "%Y-%m-%dT%H:%M:%S.%fZ")
new_timestamp = timestamp + timedelta(hours=721)
new_timestamp_str = new_timestamp.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z"
print(new_timestamp_str)
Grafana Loki Learning
- my grafana stack
GCLOUD_FM_URL="https://fleet-management-prod-014.grafana.net" \
GCLOUD_FM_POLL_FREQUENCY="60s" \
GCLOUD_FM_HOSTED_ID="1138878" \
ARCH="amd64" \
GCLOUD_RW_API_KEY="glc_eyJvIjoiMTMxODczNCIsIm4iOiJzdGFjay0xMTM4ODc4LWFsbG95LXRva2VuMSIsImsiOiJOYzR3SjhiODAxcWxCV0EyQWc0MHFxOTMiLCJtIjp7InIiOiJwcm9kLXVzLXdlc3QtMCJ9fQ==" \
/bin/sh -c \
"$(curl -fsSL https://storage.googleapis.com/cloud-onboarding/alloy/scripts/install-linux.sh)"
# vi /etc/alloy/config.alloy
# sudo systemctl restart alloy.service
prometheus.exporter.postgres "integrations_postgres_exporter" {
data_source_names = ["postgresql://localhost:5432/postgres"]
}
discovery.relabel "integrations_postgres_exporter" {
targets = prometheus.exporter.postgres.integrations_postgres_exporter.targets
rule {
target_label = "job"
replacement = "integrations/postgres_exporter"
}
}
prometheus.relabel "integrations_postgres_exporter" {
forward_to = [prometheus.remote_write.metrics_service.receiver]
rule {
target_label = "instance"
replacement = constants.hostname
}
rule {
source_labels = ["__name__"]
regex = "pg_settings_max_connections|pg_settings_superuser_reserved_connections|pg_stat_activity_count|pg_stat_activity_max_tx_duration|pg_stat_bgwriter_buffers_alloc_total|pg_stat_bgwriter_buffers_backend_fsync_total|pg_stat_bgwriter_buffers_backend_total|pg_stat_bgwriter_buffers_checkpoint_total|pg_stat_bgwriter_buffers_clean_total|pg_stat_database_blks_hit|pg_stat_database_blks_read|pg_stat_database_conflicts|pg_stat_database_deadlocks|pg_stat_database_numbackends|pg_stat_database_tup_deleted|pg_stat_database_tup_fetched|pg_stat_database_tup_inserted|pg_stat_database_tup_returned|pg_stat_database_tup_updated|pg_stat_database_xact_commit|pg_stat_database_xact_rollback|pg_up|up"
action = "keep"
}
}
prometheus.scrape "integrations_postgres_exporter" {
targets = discovery.relabel.integrations_postgres_exporter.output
forward_to = [prometheus.relabel.integrations_postgres_exporter.receiver]
job_name = "integrations/postgres_exporter"
}
local.file_match "logs_integrations_postgres_exporter" {
path_targets = [{
__address__ = "localhost",
__path__ = "/var/log/postgresql/postgres.log",
instance = constants.hostname,
job = "integrations/postgres_exporter",
}]
}
loki.source.file "logs_integrations_postgres_exporter" {
targets = local.file_match.logs_integrations_postgres_exporter.targets
forward_to = [loki.write.grafana_cloud_loki.receiver]
}
Google
setup
# BUT does not allow viewing logs locally!!!
"log-driver": "fluentd",
"log-opts": {
"fluentd-address": "172.31.17.74:24224",
"tag": "farmdev__{{.Name}}",
"fluentd-async": "true"
}
Filters
-resource.labels.function_name="trackPatches"
-resource.labels.function_name="firestoreExport"
resource.labels.function_name="handleImageUpload"