promtail收集標準輸出日志

Loki架構(gòu):
Loki日志系統(tǒng)組成:
- promtail:負責收集日志并將其發(fā)送給Loki
- loki:主服務(wù)器,服務(wù)存儲日志和處理查詢
- Grafana:用于查詢和現(xiàn)實日志
Loki搭建
指定端口3100,掛載數(shù)據(jù)卷即可(鏡像已經(jīng)重新打包)
數(shù)據(jù)卷
/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搭建采用導(dǎo)入yaml文件方式進行搭建
注意事項:搭建時注意namespace,鏡像,以及l(fā)oki服務(wù)器地址
promtail采用與promtheus相同的發(fā)現(xiàn)機制,支持static與kubernetes發(fā)現(xiàn)。romtail可以利用kubernetes API將Pod作為目標發(fā)現(xiàn),但是它只能從promtail運行在同一節(jié)點上的Pod中讀取日志文件。Promtail _host_在每個目標上查找label,并驗證它是否設(shè)置于promtail有相同的主機名,($HOSTNAME如果未設(shè)置環(huán)境變量,則使用或由內(nèi)核報告的主機名)
這意味著任何時候使用kubernetes服務(wù)發(fā)現(xiàn),都必須有一個從一下位置relabel_config創(chuàng)建中間標簽_host_的
_meta_kubernetes_pod_node_name。
- source_labels:
- __meta_kubernetes_pod_node_name
target_label: __host__
promtail文件這里列舉案例進行說明
kubernetes_sd_configs: #啟動kubernetes發(fā)現(xiàn)機制
- role: pod
relabel_configs: #重新定義relabel
- action: replace
source_labels:
-
__meta_kubernetes_pod_host_ip #匹配該kubernetes內(nèi)置標簽target_label: pod_host_ip #將kubernetes內(nèi)置標簽換為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只會匹配配置中出現(xiàn)的,沒有出現(xiàn)的則不匹配。
自定義標簽可以自行添加