一、背景
- 背景:pod 内部存储的本地日志文件,无法使用默认 promtail 采集器收集
- 技术应用场景:pod 内部本地日志文件采集
- 整体思路:pod 使用边车模式 sidecar,共享 pod 内部数据,辅助容器采集数据
二、操作步骤
2.1. 共享 pod 内部本地日志数据
- 使用 pod 边车模式共享容器内部日志数据
- Centos 主程序:业务 pod
- Promtail 辅助程序:采集日志
# promtail-local-logs.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: promtail-local-logs
namespace: study
spec:
selector:
matchLabels:
app: promtail-local-logs
template:
metadata:
labels:
app: promtail-local-logs
spec:
containers:
# 主容器程序
- name: centos
image: centos
# 假设日志写入本地文件
command:
- "/bin/sh"
- "-c"
- "for i in {1..1000}; do echo $i >> /data/number.txt; sleep 1; done"
volumeMounts:
- mountPath: /data
name: data
# 辅助容器
- name: promtail
image: grafana/promtail:2.5.0
volumeMounts:
# 共享容器日志
- mountPath: /data
name: data
restartPolicy: Always
volumes:
# 共享宿主机目录
- name: data
emptyDir: {}
2.2. 配置 promtail 采集器
- 使用 configmap 存储 promtail 配置
# promtail-config.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app: promtail-local-logs
name: promtail-config
namespace: study
data:
config.yml: |
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
# loki 服务器地址,如果是在集群外部指定外部地址即可
- url: http://loki-0.loki-headless.monitor.svc.cluster.local:3100/loki/api/v1/push
scrape_configs:
- job_name: local_file
static_configs:
- targets:
- localhost
# 自定义标签选择器, 可以定义多个标签
labels:
centos_test: number
# 指定本地文件地址
__path__: /data/number.txt
2.3. Promtail 指定 configmap
- 配置文件挂载
...
- name: promtail
image: grafana/promtail:2.5.0
volumeMounts:
# 加载配置文件
- mountPath: /etc/promtail
name: promtail-config
# 共享容器日志
- mountPath: /data
name: data
restartPolicy: Always
volumes:
# promtail 配置文件
- name: promtail-config
configMap:
name: promtail-config
# 共享宿主机目录
- name: data
emptyDir: {}
...
2.4. 日志查询
- 使用 promtail 配置自定义标签信息
{centos_test="number"}

版权声明:本文为weixin_44814672原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。