前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐一个小工具:flog

推荐一个小工具:flog

作者头像
云原生小白
发布2021-05-13 10:07:17
7530
发布2021-05-13 10:07:17
举报
文章被收录于专栏:Loki

一直以来,小白在Kubernetes集群中测试Loki的日志采集都是在容器内执行echo命令输出到控制台。这种方式操作起来既不方便无法大规模做日志测试。直到小白遇到一个好用的日志输出小工具flog[1]

flog是一个golang开发的测试日志生成器,它可以生成一些常见(如Apache、Nginx、RFC3164或Json)格式的日志

在Mac下用homebrew可以直接安装

代码语言:javascript
复制
brew tap mingrammer/flog
brew install flog

或者直接用docker来运行

代码语言:javascript
复制
docker run -it --rm mingrammer/flog

参数

先来看看flog的几个有用参数

代码语言:javascript
复制
-f, 日志格式  

指定日志的输出格式,目前可用的参数有apache_commonapache_combined(Nginx)apache_errorrfc3164rfc5424json

代码语言:javascript
复制
-t, 日志输出类型

指定日志的输出方式,默认是输出到stdout,也可以指定为log(文件)或者gz(压缩日志)两种格式

代码语言:javascript
复制
-o, 日志文件路径

指定日志的输出路径,当日志类型是log时,就需要指定日志的输出文件路径

代码语言:javascript
复制
-n, 日志输出行数
-b, 日志输出空间,默认单位是byte
-s, 每行日志间隔时间
代码语言:javascript
复制
-d, 日志生产速度

这个参数用来控制每条日志的生产速度,默认单位是秒,我们可以用0.01来表示10毫秒

代码语言:javascript
复制
-l, 持续循环输出

这个参数让工具持续按照现有参数循环输出日志,直到收到KILL信号量停止

场景

  • 一次性输出10行日志
代码语言:javascript
复制
docker run -it --rm  mingrammer/flog -n 10
  • 一次性输出10行日志,每行日志间隔1s
代码语言:javascript
复制
docker run -it --rm  mingrammer/flog -n 10 -s 2
  • 每0.5s产生一条日志,总共输出10行,每行日志间隔1s
代码语言:javascript
复制
docker run -it --rm  mingrammer/flog -n 10 -s 1 -d 0.5
  • 持续每0.5s产生一条日志,每行日志间隔1s,日志格式为Nginx
代码语言:javascript
复制
docker run -it --rm  mingrammer/flog  -s 1 -d 0.5 -f apache_combined -l

如果你觉得这种涓涓细流的日志不过瘾,你也可以来点大的,比如一次输出100MB的日志

代码语言:javascript
复制
docker run -it --rm  mingrammer/flog  -b 102400000 > fake.log

你甚至可以将容器编排下用DaemonSet在K8S的每个节点上运行,这样既能控制整体日志的输出速率,也能对日志采集和后端存储做持续观察。

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生小白 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参数
  • 场景
    • 参考资料
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档