Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
123 changes: 123 additions & 0 deletions examples/distributed-loki/1-prerequisites/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
kind: ConfigMap
apiVersion: v1
metadata:
name: loki-distributed
labels:
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
app.kubernetes.io/version: 2.5.0
data:
config.yaml: |
auth_enabled: false
common:
storage:
$(LOKI_STORE)
server:
http_listen_port: 3100
http_server_read_timeout: 1m
http_server_write_timeout: 1m
log_level: error
chunk_store_config:
max_look_back_period: 0s
compactor:
compaction_interval: 5m
shared_store: filesystem
distributor:
ring:
kvstore:
store: memberlist
frontend:
compress_responses: true
log_queries_longer_than: 5s
tail_proxy_url: http://loki-distributed-querier:3100
frontend_worker:
frontend_address: loki-distributed-query-frontend:9095
ingester:
chunk_block_size: 262144
chunk_encoding: snappy
chunk_idle_period: 30m
chunk_retain_period: 1m
lifecycler:
ring:
kvstore:
store: memberlist
replication_factor: 1
max_transfer_retries: 0
wal:
dir: /loki-store/wal
memberlist:
join_members:
- loki-distributed-memberlist
query_range:
align_queries_with_step: true
cache_results: true
max_retries: 5
results_cache:
cache:
enable_fifocache: true
fifocache:
max_size_bytes: 500MB
validity: 24h
ruler:
alertmanager_url: https://alertmanager.xx
external_url: https://alertmanager.xx
ring:
kvstore:
store: memberlist
rule_path: /tmp/loki/scratch
storage:
local:
directory: /etc/loki/rules
type: local
schema_config:
configs:
- from: 2022-01-01
store: boltdb-shipper
object_store: $(LOKI_STORE_NAME)
schema: v11
index:
prefix: index_
period: 24h
storage_config:
filesystem:
directory: /loki-store/chunks
boltdb_shipper:
active_index_directory: /loki-store/index
shared_store: filesystem
cache_location: /loki-store/cache
cache_ttl: 24h
table_manager:
retention_deletes_enabled: false
retention_period: 0s
limits_config:
ingestion_rate_strategy: global
ingestion_rate_mb: 4
ingestion_burst_size_mb: 6
max_label_name_length: 1024
max_label_value_length: 2048
max_label_names_per_series: 30
reject_old_samples: true
reject_old_samples_max_age: 15m
creation_grace_period: 10m
enforce_metric_name: false
max_line_size: 256000
max_line_size_truncate: false
max_entries_limit_per_query: 10000
max_streams_per_user: 0
max_global_streams_per_user: 0
unordered_writes: true
max_chunks_per_query: 2000000
max_query_length: 721h
max_query_parallelism: 32
max_query_series: 10000
cardinality_limit: 100000
max_streams_matchers_per_query: 1000
max_concurrent_tail_requests: 10
retention_period: 24h
max_cache_freshness_per_query: 5m
max_queriers_per_tenant: 0
per_stream_rate_limit: 3MB
per_stream_rate_limit_burst: 15MB
max_query_lookback: 0
min_sharding_lookback: 0s
split_queries_by_interval: 1m
14 changes: 14 additions & 0 deletions examples/distributed-loki/1-prerequisites/service-account.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
kind: ServiceAccount
apiVersion: v1
metadata:
name: loki-distributed
labels:
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
app.kubernetes.io/version: 2.5.0
secrets:
- name: loki-distributed-token
- name: loki-distributed-dockercfg
imagePullSecrets:
- name: loki-distributed-dockercfg
automountServiceAccountToken: true
101 changes: 101 additions & 0 deletions examples/distributed-loki/2-components/distributor-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
kind: Deployment
apiVersion: apps/v1
metadata:
name: loki-distributed-distributor
labels:
app.kubernetes.io/component: distributor
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
app.kubernetes.io/part-of: memberlist
app.kubernetes.io/version: 2.5.0
spec:
replicas: 2
selector:
matchLabels:
app.kubernetes.io/component: distributor
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
template:
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/component: distributor
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
app.kubernetes.io/part-of: memberlist
spec:
restartPolicy: Always
serviceAccountName: loki-distributed
schedulerName: default-scheduler
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/component: distributor
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
topologyKey: kubernetes.io/hostname
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/component: distributor
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
topologyKey: failure-domain.beta.kubernetes.io/zone
terminationGracePeriodSeconds: 30
containers:
- resources: {}
readinessProbe:
httpGet:
path: /ready
port: http
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
terminationMessagePath: /dev/termination-log
name: distributor
securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
ports:
- name: http
containerPort: 3100
protocol: TCP
- name: grpc
containerPort: 9095
protocol: TCP
- name: http-memberlist
containerPort: 7946
protocol: TCP
imagePullPolicy: IfNotPresent
volumeMounts:
- name: config
mountPath: /etc/loki/config
terminationMessagePolicy: File
image: 'grafana/loki:2.5.0'
args:
- '-config.file=/etc/loki/config/config.yaml'
- '-target=distributor'
serviceAccount: loki-distributed
volumes:
- name: config
configMap:
name: loki-distributed
defaultMode: 420
dnsPolicy: ClusterFirst
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 0
revisionHistoryLimit: 10
progressDeadlineSeconds: 600
122 changes: 122 additions & 0 deletions examples/distributed-loki/2-components/ingester-statefulset.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
kind: StatefulSet
apiVersion: apps/v1
metadata:
name: loki-distributed-ingester
labels:
app.kubernetes.io/component: ingester
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
app.kubernetes.io/part-of: memberlist
app.kubernetes.io/version: 2.5.0
spec:
replicas: 2
selector:
matchLabels:
app.kubernetes.io/component: ingester
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
template:
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/component: ingester
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
app.kubernetes.io/part-of: memberlist
spec:
restartPolicy: Always
serviceAccountName: loki-distributed
schedulerName: default-scheduler
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/component: ingester
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
topologyKey: kubernetes.io/hostname
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/component: ingester
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
topologyKey: failure-domain.beta.kubernetes.io/zone
terminationGracePeriodSeconds: 300
containers:
- resources: {}
readinessProbe:
httpGet:
path: /ready
port: http
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
terminationMessagePath: /dev/termination-log
name: ingester
securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
ports:
- name: http
containerPort: 3100
protocol: TCP
- name: grpc
containerPort: 9095
protocol: TCP
- name: http-memberlist
containerPort: 7946
protocol: TCP
imagePullPolicy: IfNotPresent
volumeMounts:
- name: config
mountPath: /etc/loki/config
- name: loki-store
mountPath: /loki-store
terminationMessagePolicy: File
image: 'grafana/loki:2.5.0'
args:
- '-config.file=/etc/loki/config/config.yaml'
- '-target=ingester'
serviceAccount: loki-distributed
volumes:
- name: config
configMap:
name: loki-distributed
defaultMode: 420
dnsPolicy: ClusterFirst
volumeClaimTemplates:
- kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: loki-store
creationTimestamp: null
labels:
app.kubernetes.io/component: ingester
app.kubernetes.io/created-by: loki-distributed-ingester
app.kubernetes.io/instance: loki
app.kubernetes.io/name: loki-distributed
app.kubernetes.io/version: 2.5.0
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
volumeMode: Filesystem
serviceName: loki-distributed-ingester-headless
podManagementPolicy: Parallel
updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 0
revisionHistoryLimit: 10
Loading