一、背景
- 背景:pod 内部存储的本地日志文件,无法使用默认 promtail 采集器收集
- 技术应用场景:pod 内部本地日志文件采集
- 整体思路:pod 使用边车模式 sidecar,共享 pod 内部数据,辅助容器采集数据
二、操作步骤
2.1. 共享 pod 内部本地日志数据
- 使用 pod 边车模式共享容器内部日志数据
- Centos 主程序:业务 pod
- Promtail 辅助程序:采集日志
---
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 配置
---
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:
- 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:
- name: promtail-config
configMap:
name: promtail-config
- name: data
emptyDir: {}
...
2.4. 日志查询
{centos_test="number"}