promtail收集标准输出日志

promtail收集标准输出日志

 

Loki:

Loki日志系统组成

  • promtail:负责收集日志并将其发送给Loki
  • loki:主服务器,服务存储日志和处理查询
  • Grafana:用于查询和现实日志

Loki搭建

指定端口3100,挂载数据卷即可(镜像已经重新打包)

数据卷
/etc/loki/local-config.yaml

配置文件loki-config

auth_enabled: false

server:

http_listen_port: 3100

ingester:

lifecycler:

address: 127.0.0.1

ring:

kvstore:

store: inmemory

replication_factor: 1

final_sleep: 0s

chunk_idle_period: 5m

chunk_retain_period: 30s

max_transfer_retries: 1

schema_config:

configs:

- from: 2020-01-02

store: boltdb

object_store: filesystem

schema: v9

index:

prefix: index_

period: 168h

chunks:

prefix: chunk_

period: 168h

row_shards: 16

storage_config:

boltdb:

directory: /loki/data/index

filesystem:

directory: /loki/data/chunks

limits_config:

ingestion_rate_mb: 10

enforce_metric_name: false

reject_old_samples: false

reject_old_samples_max_age: 168h

chunk_store_config:

max_look_back_period: 0s

table_manager:

chunk_tables_provisioning:

inactive_read_throughput: 0

inactive_write_throughput: 0

provisioned_read_throughput: 0

provisioned_write_throughput: 0

index_tables_provisioning:

inactive_read_throughput: 0

inactive_write_throughput: 0

provisioned_read_throughput: 0

provisioned_write_throughput: 0

retention_deletes_enabled: false

retention_period: 336h

 

promtail

promtail搭建采用导入yaml文件方式进行搭建

注意事项:搭建时注意namespace,镜像,以及loki服务器地址

 

promtail采用与promtheus相同的发现机制,支持static与kubernetes发现。romtail可以利用kubernetes API将Pod作为目标发现,但是它只能从promtail运行在同一节点上的Pod中读取日志文件。Promtail _host_在每个目标上查找label,并验证它是否设置于promtail有相同的主机名,($HOSTNAME如果未设置环境变量,则使用或由内核报告的主机名)
这意味着任何时候使用kubernetes服务发现,都必须有一个从一下位置relabel_config创建中间标签_host_的
_meta_kubernetes_pod_node_name。

- source_labels:

- __meta_kubernetes_pod_node_name

target_label: __host__

promtail文件这里列举案例进行说明

kubernetes_sd_configs: #启动kubernetes发现机制

- role: pod

relabel_configs: #重新定义relabel

- action: replace

source_labels:

-
__meta_kubernetes_pod_host_ip #匹配该kubernetes内置标签

target_label: pod_host_ip #将kubernetes内置标签换为pod_host_ip

# 如果有__address__;
__meta_kubernetes_service_annotation_prometheus_io_port,且正则匹配([^:]+)(?::d+)?;(d+),则将__address__修改为$1:$2指定的值

- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]

separator: ;

regex: ([^:]+)(?::d+)?;(d+)

target_label: __address__

replacement: $1:$2

action: replace

 

#action有replace、drop、labelmap三种动作,labelmap为映射label。relabel_configs只会匹配配置中出现的,没有出现的则不匹配。

自定义标签可以自行添加

胜象大百科