美文网首页
推荐一个小工具:flog

推荐一个小工具:flog

作者: 魔哈Moha | 来源:发表于2021-02-05 11:38 被阅读0次

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

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

    在Mac下用homebrew可以直接安装

    brew tap mingrammer/flog
    brew install flog
    

    或者直接用docker来运行

    docker run -it --rm mingrammer/flog
    

    参数

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

    -f, 日志格式  
    

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

    -t, 日志输出类型
    

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

    -o, 日志文件路径
    

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

    -n, 日志输出行数
    -b, 日志输出空间,默认单位是byte
    -s, 每行日志间隔时间
    
    -d, 日志生产速度
    

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

    -l, 持续循环输出
    

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

    场景

    • 一次性输出10行日志
    docker run -it --rm  mingrammer/flog -n 10
    
    • 一次性输出10行日志,每行日志间隔1s
    docker run -it --rm  mingrammer/flog -n 10 -s 2
    
    image.png
    • 每0.5s产生一条日志,总共输出10行,每行日志间隔1s
    docker run -it --rm  mingrammer/flog -n 10 -s 1 -d 0.5
    
    ezgif.com-video-to-gif.gif
    • 持续每0.5s产生一条日志,每行日志间隔1s,日志格式为Nginx
    docker run -it --rm  mingrammer/flog  -s 1 -d 0.5 -f apache_combined -l
    
    ezgif.com-video-to-gif-2.gif

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

    docker run -it --rm  mingrammer/flog  -b 102400000 > fake.log
    
    16124266026190.jpg

    你甚至可以将容器编排下用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参数来实现对集群内日志整体输出的控制


    ezgif.com-video-to-gif-3.gif

    关注公众号「云原生小白」,获取更多精彩内容

    相关文章

      网友评论

          本文标题:推荐一个小工具:flog

          本文链接:https://www.haomeiwen.com/subject/bvvwtltx.html