推荐一个小工具:flog
原创
©著作权归作者所有:来自51CTO博客作者KubeGems云原生的原创作品,请联系作者获取转载授权,否则将追究法律责任
一直以来,小白在Kubernetes集群中测试Loki的日志采集都是在容器内执行echo命令输出到控制台。这种方式操作起来既不方便无法大规模做日志测试。直到小白遇到一个好用的日志输出小工具flog[1]。
flog是一个golang开发的测试日志生成器,它可以生成一些常见(如Apache、Nginx、RFC3164或Json)格式的日志
在Mac下用homebrew可以直接安装
brew tap mingrammer/flog
brew install flog
或者直接用docker来运行
docker run -it --rm mingrammer/flog
参数
先来看看flog的几个有用参数
指定日志的输出格式,目前可用的参数有apache_common
、apache_combined(Nginx)
、apache_error
、rfc3164
、rfc5424
、json
指定日志的输出方式,默认是输出到stdout,也可以指定为log(文件)或者gz(压缩日志)两种格式
指定日志的输出路径,当日志类型是log时,就需要指定日志的输出文件路径
-n, 日志输出行数
-b, 日志输出空间,默认单位是byte
-s, 每行日志间隔时间
这个参数用来控制每条日志的生产速度,默认单位是秒,我们可以用0.01来表示10毫秒
这个参数让工具持续按照现有参数循环输出日志,直到收到KILL信号量停止
场景
docker run -it --rm mingrammer/flog -n 10
docker run -it --rm mingrammer/flog -n 10 -s 2
- 每0.5s产生一条日志,总共输出10行,每行日志间隔1s
docker run -it --rm mingrammer/flog -n 10 -s 1 -d 0.5
- 持续每0.5s产生一条日志,每行日志间隔1s,日志格式为Nginx
docker run -it --rm mingrammer/flog -s 1 -d 0.5 -f apache_combined -l
如果你觉得这种涓涓细流的日志不过瘾,你也可以来点大的,比如一次输出100MB的日志
docker run -it --rm mingrammer/flog -b 102400000 > fake.log
你甚至可以将容器编排下用DaemonSet在K8S的每个节点上运行,这样既能控制整体日志的输出速率,也能对日志采集和后端存储做持续观察。
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: fake-log
name: fake-log
spec:
selector:
matchLabels:
app: fake-log
template:
metadata:
labels:
app: fake-log
spec:
containers:
- args:
- -f
- apache_combined
- -l
- -d
- "0.01"
image: mingrammer/flog:latest
imagePullPolicy: IfNotPresent
name: fakelog
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
tolerations:
- operator: Exists
最终我们就可以通过调整flog参数来实现对集群内日志整体输出的控制
参考资料
[1]
flog: https://github.com/mingrammer/flog
你可能还喜欢
点击下方图片即可阅读
听说,你的Loki还是单体?(上篇)
听说,你的Loki还是单体?(下篇)
关注公众号【云原生小白】,回复「入群」加入Loki学习群