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只會匹配配置中出現的,沒有出現的則不匹配。
自定義標簽可以自行添加