How loki replicate logs?

As I understand, log replication occurs on the distributor level on write.
Does loki have background replication?
I have 3 replicas(also replication_factor: 3). How will loki handle the fall(or manual shutdown) of one of the replicas? Will all logs be available on all 3 replicas eventually?

Loki version: 2.2
Config:

Config

target: all
http_prefix: “”
server:
http_listen_address: “”
http_listen_port: 3100
http_listen_conn_limit: 0
grpc_listen_address: “”
grpc_listen_port: 9095
grpc_listen_conn_limit: 0
http_tls_config:
cert_file: “”
key_file: “”
client_auth_type: “”
client_ca_file: “”
grpc_tls_config:
cert_file: “”
key_file: “”
client_auth_type: “”
client_ca_file: “”
register_instrumentation: true
graceful_shutdown_timeout: 30s
http_server_read_timeout: 30s
http_server_write_timeout: 30s
http_server_idle_timeout: 2m0s
grpc_server_max_recv_msg_size: 4194304
grpc_server_max_send_msg_size: 4194304
grpc_server_max_concurrent_streams: 100
grpc_server_max_connection_idle: 2562047h47m16.854775807s
grpc_server_max_connection_age: 2562047h47m16.854775807s
grpc_server_max_connection_age_grace: 2562047h47m16.854775807s
grpc_server_keepalive_time: 2h0m0s
grpc_server_keepalive_timeout: 20s
grpc_server_min_time_between_pings: 5m0s
grpc_server_ping_without_stream_allowed: false
log_format: logfmt
log_level: info
log_source_ips_enabled: false
log_source_ips_header: “”
log_source_ips_regex: “”
http_path_prefix: “”
distributor:
ring:
kvstore:
store: memberlist
prefix: collectors/
consul:
host: localhost:8500
acl_token: “”
http_client_timeout: 20s
consistent_reads: false
watch_rate_limit: 1
watch_burst_size: 1
etcd:
endpoints:
dial_timeout: 10s
max_retries: 10
tls_enabled: false
tls_cert_path: “”
tls_key_path: “”
tls_ca_path: “”
tls_server_name: “”
tls_insecure_skip_verify: false
multi:
primary: “”
secondary: “”
mirror_enabled: false
mirror_timeout: 2s
heartbeat_period: 5s
heartbeat_timeout: 1m0s
instance_id: mon-loki-0
instance_interface_names:
- eth0
- en0
instance_port: 0
instance_addr: “”
querier:
query_timeout: 1m0s
tail_max_duration: 1h0m0s
engine:
timeout: 5m0s
max_look_back_period: 30s
max_concurrent: 20
ingester_client:
pool_config:
client_cleanup_period: 15s
health_check_ingesters: true
remote_timeout: 5s
grpc_client_config:
max_recv_msg_size: 104857600
max_send_msg_size: 16777216
grpc_compression: “”
rate_limit: 0
rate_limit_burst: 0
backoff_on_ratelimits: false
backoff_config:
min_period: 100ms
max_period: 10s
max_retries: 10
tls_enabled: false
tls_cert_path: “”
tls_key_path: “”
tls_ca_path: “”
tls_server_name: “”
tls_insecure_skip_verify: false
ingester:
lifecycler:
ring:
kvstore:
store: memberlist
prefix: collectors/
consul:
host: localhost:8500
acl_token: “”
http_client_timeout: 20s
consistent_reads: false
watch_rate_limit: 1
watch_burst_size: 1
etcd:
endpoints:
dial_timeout: 10s
max_retries: 10
tls_enabled: false
tls_cert_path: “”
tls_key_path: “”
tls_ca_path: “”
tls_server_name: “”
tls_insecure_skip_verify: false
multi:
primary: “”
secondary: “”
mirror_enabled: false
mirror_timeout: 2s
heartbeat_timeout: 1m0s
replication_factor: 3
zone_awareness_enabled: false
num_tokens: 128
heartbeat_period: 5s
observe_period: 0s
join_after: 0s
min_ready_duration: 1m0s
interface_names:
- eth0
- en0
final_sleep: 30s
tokens_file_path: “”
availability_zone: “”
unregister_on_shutdown: true
address: “”
port: 0
id: mon-loki-0
concurrent_flushes: 16
flush_check_period: 30s
flush_op_timeout: 10s
chunk_retain_period: 1m0s
chunk_idle_period: 3m0s
chunk_block_size: 262144
chunk_target_size: 0
chunk_encoding: gzip
max_chunk_age: 1h0m0s
sync_period: 0s
sync_min_utilization: 0
max_returned_stream_errors: 10
query_store_max_look_back_period: 1h28m0s
wal:
enabled: false
dir: wal
checkpoint_duration: 5m0s
flush_on_shutdown: false
replay_memory_ceiling: 4294967296
storage_config:
engine: chunks
aws:
dynamodb:
dynamodb_url: “”
api_limit: 2
throttle_limit: 10
metrics:
url: “”
target_queue_length: 100000
scale_up_factor: 1.3
ignore_throttle_below: 1
queue_length_query: sum(avg_over_time(cortex_ingester_flush_queue_length{job=“cortex/ingester”}[2m]))
write_throttle_query: sum(rate(cortex_dynamo_throttled_total{operation=“DynamoDB.BatchWriteItem”}[1m]))
by (table) > 0
write_usage_query: sum(rate(cortex_dynamo_consumed_capacity_total{operation=“DynamoDB.BatchWriteItem”}[15m]))
by (table) > 0
read_usage_query: sum(rate(cortex_dynamo_consumed_capacity_total{operation=“DynamoDB.QueryPages”}[1h]))
by (table) > 0
read_error_query: sum(increase(cortex_dynamo_failures_total{operation=“DynamoDB.QueryPages”,error=“ProvisionedThroughputExceededException”}[1m]))
by (table) > 0
chunk_gang_size: 10
chunk_get_max_parallelism: 32
backoff_config:
min_period: 100ms
max_period: 50s
max_retries: 20
s3: “”
s3forcepathstyle: false
bucketnames: “”
endpoint: “”
region: “”
access_key_id: “”
secret_access_key: “”
insecure: false
sse_encryption: false
http_config:
idle_conn_timeout: 1m30s
response_header_timeout: 0s
insecure_skip_verify: false
signature_version: v4
sse:
type: “”
kms_key_id: “”
kms_encryption_context: “”
azure:
environment: AzureGlobal
container_name: cortex
account_name: “”
account_key: “”
download_buffer_size: 512000
upload_buffer_size: 256000
upload_buffer_count: 1
request_timeout: 30s
max_retries: 5
min_retry_delay: 10ms
max_retry_delay: 500ms
bigtable:
project: “”
instance: “”
grpc_client_config:
max_recv_msg_size: 104857600
max_send_msg_size: 16777216
grpc_compression: “”
rate_limit: 0
rate_limit_burst: 0
backoff_on_ratelimits: false
backoff_config:
min_period: 100ms
max_period: 10s
max_retries: 10
tls_enabled: true
tls_cert_path: “”
tls_key_path: “”
tls_ca_path: “”
tls_server_name: “”
tls_insecure_skip_verify: false
table_cache_enabled: true
table_cache_expiration: 30m0s
gcs:
bucket_name: “”
chunk_buffer_size: 0
request_timeout: 0s
cassandra:
addresses: “”
port: 9042
keyspace: “”
consistency: QUORUM
replication_factor: 3
disable_initial_host_lookup: false
SSL: false
host_verification: true
CA_path: “”
tls_cert_path: “”
tls_key_path: “”
auth: false
username: “”
password: “”
password_file: “”
custom_authenticators:
timeout: 2s
connect_timeout: 5s
reconnect_interval: 1s
max_retries: 0
retry_max_backoff: 10s
retry_min_backoff: 100ms
query_concurrency: 0
num_connections: 2
convict_hosts_on_failure: true
table_options: “”
boltdb:
directory: “”
filesystem:
directory: /data/loki/chunks
swift:
auth_version: 0
auth_url: “”
username: “”
user_domain_name: “”
user_domain_id: “”
user_id: “”
password: “”
domain_id: “”
domain_name: “”
project_id: “”
project_name: “”
project_domain_id: “”
project_domain_name: “”
region_name: “”
container_name: “”
max_retries: 3
connect_timeout: 10s
request_timeout: 5s
index_cache_validity: 5m0s
index_queries_cache_config:
enable_fifocache: false
default_validity: 0s
background:
writeback_goroutines: 10
writeback_buffer: 10000
memcached:
expiration: 0s
batch_size: 1024
parallelism: 100
memcached_client:
host: “”
service: memcached
addresses: “”
timeout: 100ms
max_idle_conns: 16
update_interval: 1m0s
consistent_hash: true
circuit_breaker_consecutive_failures: 10
circuit_breaker_timeout: 10s
circuit_breaker_interval: 10s
redis:
endpoint: “”
master_name: “”
timeout: 500ms
expiration: 0s
db: 0
pool_size: 0
password: “”
tls_enabled: false
tls_insecure_skip_verify: false
idle_timeout: 0s
max_connection_age: 0s
fifocache:
max_size_bytes: “”
max_size_items: 0
validity: 0s
size: 0
prefix: store.index-cache-read.
delete_store:
store: “”
requests_table_name: delete_requests
table_provisioning:
enable_ondemand_throughput_mode: false
provisioned_write_throughput: 1
provisioned_read_throughput: 300
write_scale:
enabled: false
role_arn: “”
min_capacity: 3000
max_capacity: 6000
out_cooldown: 1800
in_cooldown: 1800
target: 80
read_scale:
enabled: false
role_arn: “”
min_capacity: 3000
max_capacity: 6000
out_cooldown: 1800
in_cooldown: 1800
target: 80
tags: {}
grpc_store: {}
max_chunk_batch_size: 50
boltdb_shipper:
active_index_directory: /data/loki/boltdb-shipper-active
shared_store: filesystem
cache_location: /data/loki/boltdb-shipper-cache
cache_ttl: 24h0m0s
resync_interval: 5m0s
query_ready_num_days: 0
chunk_store_config:
chunk_cache_config:
enable_fifocache: false
default_validity: 0s
background:
writeback_goroutines: 10
writeback_buffer: 10000
memcached:
expiration: 0s
batch_size: 1024
parallelism: 100
memcached_client:
host: “”
service: memcached
addresses: “”
timeout: 100ms
max_idle_conns: 16
update_interval: 1m0s
consistent_hash: true
circuit_breaker_consecutive_failures: 10
circuit_breaker_timeout: 10s
circuit_breaker_interval: 10s
redis:
endpoint: “”
master_name: “”
timeout: 500ms
expiration: 0s
db: 0
pool_size: 0
password: “”
tls_enabled: false
tls_insecure_skip_verify: false
idle_timeout: 0s
max_connection_age: 0s
fifocache:
max_size_bytes: “”
max_size_items: 0
validity: 0s
size: 0
prefix: store.chunks-cache.
write_dedupe_cache_config:
enable_fifocache: false
default_validity: 0s
background:
writeback_goroutines: 0
writeback_buffer: 0
memcached:
expiration: 0s
batch_size: 0
parallelism: 0
memcached_client:
host: “”
service: “”
addresses: “”
timeout: 0s
max_idle_conns: 0
update_interval: 0s
consistent_hash: false
circuit_breaker_consecutive_failures: 0
circuit_breaker_timeout: 0s
circuit_breaker_interval: 0s
redis:
endpoint: “”
master_name: “”
timeout: 0s
expiration: 0s
db: 0
pool_size: 0
password: “”
tls_enabled: false
tls_insecure_skip_verify: false
idle_timeout: 0s
max_connection_age: 0s
fifocache:
max_size_bytes: “”
max_size_items: 0
validity: 0s
size: 0
prefix: “”
cache_lookups_older_than: 0s
max_look_back_period: 0s
schema_config:
configs:

  • from: “2020-10-24”
    store: boltdb-shipper
    object_store: filesystem
    schema: v11
    index:
    prefix: index_
    period: 1d
    tags: {}
    chunks:
    prefix: “”
    period: 0s
    tags: {}
    row_shards: 16
    limits_config:
    ingestion_rate_strategy: local
    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: 168h0m0s
    creation_grace_period: 10m0s
    enforce_metric_name: false
    max_line_size: 0
    max_streams_per_user: 10000
    max_global_streams_per_user: 0
    max_chunks_per_query: 2000000
    max_query_series: 500
    max_query_lookback: 0s
    max_query_length: 0s
    max_query_parallelism: 14
    cardinality_limit: 100000
    max_streams_matchers_per_query: 1000
    max_concurrent_tail_requests: 10
    max_entries_limit_per_query: 5000
    max_cache_freshness_per_query: 1m0s
    split_queries_by_interval: 0s
    ruler_evaluation_delay_duration: 0s
    ruler_max_rules_per_rule_group: 0
    ruler_max_rule_groups_per_tenant: 0
    per_tenant_override_config: “”
    per_tenant_override_period: 10s
    table_manager:
    throughput_updates_disabled: false
    retention_deletes_enabled: true
    retention_period: 180d
    poll_interval: 2m0s
    creation_grace_period: 10m0s
    index_tables_provisioning:
    enable_ondemand_throughput_mode: false
    provisioned_write_throughput: 1000
    provisioned_read_throughput: 300
    write_scale:
    enabled: false
    role_arn: “”
    min_capacity: 3000
    max_capacity: 6000
    out_cooldown: 1800
    in_cooldown: 1800
    target: 80
    read_scale:
    enabled: false
    role_arn: “”
    min_capacity: 3000
    max_capacity: 6000
    out_cooldown: 1800
    in_cooldown: 1800
    target: 80
    enable_inactive_throughput_on_demand_mode: false
    inactive_write_throughput: 1
    inactive_read_throughput: 300
    inactive_write_scale:
    enabled: false
    role_arn: “”
    min_capacity: 3000
    max_capacity: 6000
    out_cooldown: 1800
    in_cooldown: 1800
    target: 80
    inactive_read_scale:
    enabled: false
    role_arn: “”
    min_capacity: 3000
    max_capacity: 6000
    out_cooldown: 1800
    in_cooldown: 1800
    target: 80
    inactive_write_scale_lastn: 4
    inactive_read_scale_lastn: 4
    chunk_tables_provisioning:
    enable_ondemand_throughput_mode: false
    provisioned_write_throughput: 1000
    provisioned_read_throughput: 300
    write_scale:
    enabled: false
    role_arn: “”
    min_capacity: 3000
    max_capacity: 6000
    out_cooldown: 1800
    in_cooldown: 1800
    target: 80
    read_scale:
    enabled: false
    role_arn: “”
    min_capacity: 3000
    max_capacity: 6000
    out_cooldown: 1800
    in_cooldown: 1800
    target: 80
    enable_inactive_throughput_on_demand_mode: false
    inactive_write_throughput: 1
    inactive_read_throughput: 300
    inactive_write_scale:
    enabled: false
    role_arn: “”
    min_capacity: 3000
    max_capacity: 6000
    out_cooldown: 1800
    in_cooldown: 1800
    target: 80
    inactive_read_scale:
    enabled: false
    role_arn: “”
    min_capacity: 3000
    max_capacity: 6000
    out_cooldown: 1800
    in_cooldown: 1800
    target: 80
    inactive_write_scale_lastn: 4
    inactive_read_scale_lastn: 4
    frontend_worker:
    frontend_address: “”
    scheduler_address: “”
    dns_lookup_duration: 10s
    parallelism: 10
    match_max_concurrent: false
    id: “”
    grpc_client_config:
    max_recv_msg_size: 104857600
    max_send_msg_size: 16777216
    grpc_compression: “”
    rate_limit: 0
    rate_limit_burst: 0
    backoff_on_ratelimits: false
    backoff_config:
    min_period: 100ms
    max_period: 10s
    max_retries: 10
    tls_enabled: false
    tls_cert_path: “”
    tls_key_path: “”
    tls_ca_path: “”
    tls_server_name: “”
    tls_insecure_skip_verify: false
    frontend:
    log_queries_longer_than: 0s
    max_body_size: 10485760
    query_stats_enabled: false
    max_outstanding_per_tenant: 100
    compress_responses: false
    downstream_url: “”
    tail_proxy_url: “”
    ruler:
    external_url: “”
    ruler_client:
    max_recv_msg_size: 104857600
    max_send_msg_size: 16777216
    grpc_compression: “”
    rate_limit: 0
    rate_limit_burst: 0
    backoff_on_ratelimits: false
    backoff_config:
    min_period: 100ms
    max_period: 10s
    max_retries: 10
    tls_enabled: false
    tls_cert_path: “”
    tls_key_path: “”
    tls_ca_path: “”
    tls_server_name: “”
    tls_insecure_skip_verify: false
    evaluation_interval: 1m0s
    poll_interval: 1m0s
    storage:
    type: configdb
    configdb:
    configs_api_url: “”
    client_timeout: 5s
    tls_cert_path: “”
    tls_key_path: “”
    tls_ca_path: “”
    tls_server_name: “”
    tls_insecure_skip_verify: false
    azure:
    environment: AzureGlobal
    container_name: cortex
    account_name: “”
    account_key: “”
    download_buffer_size: 512000
    upload_buffer_size: 256000
    upload_buffer_count: 1
    request_timeout: 30s
    max_retries: 5
    min_retry_delay: 10ms
    max_retry_delay: 500ms
    gcs:
    bucket_name: “”
    chunk_buffer_size: 0
    request_timeout: 0s
    s3:
    s3: “”
    s3forcepathstyle: false
    bucketnames: “”
    endpoint: “”
    region: “”
    access_key_id: “”
    secret_access_key: “”
    insecure: false
    sse_encryption: false
    http_config:
    idle_conn_timeout: 1m30s
    response_header_timeout: 0s
    insecure_skip_verify: false
    signature_version: v4
    sse:
    type: “”
    kms_key_id: “”
    kms_encryption_context: “”
    swift:
    auth_version: 0
    auth_url: “”
    username: “”
    user_domain_name: “”
    user_domain_id: “”
    user_id: “”
    password: “”
    domain_id: “”
    domain_name: “”
    project_id: “”
    project_name: “”
    project_domain_id: “”
    project_domain_name: “”
    region_name: “”
    container_name: “”
    max_retries: 3
    connect_timeout: 10s
    request_timeout: 5s
    local:
    directory: “”
    rule_path: /rules
    alertmanager_url: “”
    enable_alertmanager_discovery: false
    alertmanager_refresh_interval: 1m0s
    enable_alertmanager_v2: false
    notification_queue_capacity: 10000
    notification_timeout: 10s
    alertmanager_client:
    tls_cert_path: “”
    tls_key_path: “”
    tls_ca_path: “”
    tls_server_name: “”
    tls_insecure_skip_verify: false
    basic_auth_username: “”
    basic_auth_password: “”
    for_outage_tolerance: 1h0m0s
    for_grace_period: 10m0s
    resend_delay: 1m0s
    enable_sharding: false
    sharding_strategy: default
    search_pending_for: 5m0s
    ring:
    kvstore:
    store: memberlist
    prefix: rulers/
    consul:
    host: localhost:8500
    acl_token: “”
    http_client_timeout: 20s
    consistent_reads: false
    watch_rate_limit: 1
    watch_burst_size: 1
    etcd:
    endpoints:
    dial_timeout: 10s
    max_retries: 10
    tls_enabled: false
    tls_cert_path: “”
    tls_key_path: “”
    tls_ca_path: “”
    tls_server_name: “”
    tls_insecure_skip_verify: false
    multi:
    primary: “”
    secondary: “”
    mirror_enabled: false
    mirror_timeout: 2s
    heartbeat_period: 5s
    heartbeat_timeout: 1m0s
    instance_id: mon-loki-0
    instance_interface_names:
    • eth0
    • en0
      instance_port: 0
      instance_addr: “”
      num_tokens: 128
      flush_period: 1m0s
      enable_api: false
      query_range:
      split_queries_by_interval: 0s
      split_queries_by_day: false
      align_queries_with_step: false
      results_cache:
      cache:
      enable_fifocache: false
      default_validity: 0s
      background:
      writeback_goroutines: 10
      writeback_buffer: 10000
      memcached:
      expiration: 0s
      batch_size: 1024
      parallelism: 100
      memcached_client:
      host: “”
      service: memcached
      addresses: “”
      timeout: 100ms
      max_idle_conns: 16
      update_interval: 1m0s
      consistent_hash: true
      circuit_breaker_consecutive_failures: 10
      circuit_breaker_timeout: 10s
      circuit_breaker_interval: 10s
      redis:
      endpoint: “”
      master_name: “”
      timeout: 500ms
      expiration: 0s
      db: 0
      pool_size: 0
      password: “”
      tls_enabled: false
      tls_insecure_skip_verify: false
      idle_timeout: 0s
      max_connection_age: 0s
      fifocache:
      max_size_bytes: “”
      max_size_items: 0
      validity: 0s
      size: 0
      prefix: frontend.
      compression: “”
      cache_results: false
      max_retries: 5
      parallelise_shardable_queries: false
      runtime_config:
      period: 10s
      file: “”
      memberlist:
      node_name: “”
      randomize_node_name: true
      stream_timeout: 0s
      retransmit_factor: 0
      pull_push_interval: 0s
      gossip_interval: 0s
      gossip_nodes: 0
      gossip_to_dead_nodes_time: 0s
      dead_node_reclaim_time: 0s
      join_members:
  • mon-loki-headless:7946
    min_join_backoff: 1s
    max_join_backoff: 1m0s
    max_join_retries: 10
    abort_if_cluster_join_fails: true
    rejoin_interval: 0s
    left_ingesters_timeout: 5m0s
    leave_timeout: 5s
    message_history_buffer_bytes: 0
    bind_addr:
    bind_port: 7946
    packet_dial_timeout: 5s
    packet_write_timeout: 5s
    tracing:
    enabled: true
    compactor:
    working_directory: /data/loki/boltdb-shipper-compactor
    shared_store: filesystem
    compaction_interval: 2h0m0s

Hi @mikxail

Please see Components | Grafana Loki documentation
This should contain all the context you need

Feel free to follow up if you have further questions

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.