go-logcollector

module
v1.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 16, 2019 License: Apache-2.0

README

Log collector

Build Status Go Report Card LICENSE Godoc

使用CircleCI进程CI Pipeline校验,Go Report Card进行Golang项目代码分析

  1. CircleCI: https://circleci.com/gh/chenguolin/go-logcollector/tree/master
  2. Go Report Card: https://goreportcard.com/report/github.com/chenguolin/go-logcollector

容器日志采集器用于采集标准docker容器日志、Kubernetes容器日志,目前支持以下采集Agent

  1. Fluentd
  2. FluentBit (TODO)
  3. Filebeat (TODO)
  4. Flume (TODO)

Usage

Fluentd Agent

  1. 镜像构建
    • cd build
    • sh build fluentd v1.0.0-1
  2. 查看Docker version
    $ docker version
    Client: Docker Engine - Community
     Version:           18.09.2
     API version:       1.39
     Go version:        go1.10.8
    
    Server: Docker Engine - Community
     Engine:
      Version:          18.09.2
      API version:      1.39 (minimum version 1.12)
      Go version:       go1.10.6
    
  3. 运行log-collector
    docker run -d \
        --network host \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v /var/lib/docker/containers:/var/lib/docker/containers \
        -v /var/log:/var/log \
        --env DOCKER_API_VERSION=1.39 \
        --env COLLECTOR_AGENT_NAME=fluent \
        --env FLUENT_KAFKA_BROKERS=127.0.0.1:9092 \
        --env CLUSTER=localhost \
        --env NODE_NAME=prodeMacBook-Pro-3 \
        --name log-collector \
        --restart=always \
        --cap-add SYS_ADMIN \
        chenguolin/log-collector:v1.0.0
    
    注意
    –env DOCKER_API_VERSION=1.38 需要根据具体的docker engine API version而设置
    –env FLUENT_KAFKA_BROKERS=127.0.0.1:9092 需要根据具体的环境而设置
    --restart=always 保证容器挂了之后能够被及时拉起 或者 dockerd重启之后也能够被拉取
    --cap-add SYS_ADMIN 代表着container进程允许使用clone、mount、sethostname等系统调用
    
  4. 更新log-collector
    • docker stop log-collector
    • docker rm -f log-collector
    • docker run ...
  5. 运行业务容器应用
    docker run -d \
        --label fluent.kafka.topic=cgl-test-20190709 \
        cgl-test-output:v1.0.0
    

Problems

  1. Fluentd采集器相关问题
    • 插件对Fluentd版本有特殊的要求,因此需要根据Fluentd的版本安装特定的插件版本
    • fluent-plugin-kafka和ruby-kafka 这2个插件对Kafka Server版本有要求,需要特别注意否则会导致各种报错 fluentd采集数据到kafka时的版本问题
  2. watch docker需要注意,Events返回msg和err channel,但是channel可能会因为一些原因被关闭,需要业务自己reopen,保证能够及时监听到container事件
  3. log-collector容器启动的时候应该先做umount,需要umount shm相关的device,否则业务容器在stop的时候会报 xxx/shm: device or resource busy 这个错误

CI Workflow Check

  1. gocyclo: 校验代码复杂度
  2. gofmt: 校验代码是否都已经格式化
  3. golint: 校验代码风格规范是否按照指定标准
  4. gosimple: 校验代码是否可以简化
  5. govet: 代码静态校验
  6. misspell: 校验是否有英文单词拼写错误
  7. unused: 校验是否有未使用变量、常量、函数、结构体等
  8. gotest: 单元测试校验

Gitlab CI

如果使用Gitlab,也可以通过.gitlab-ci.yml运行Gitlab CI Pipeline,详细介绍请参考下面2篇文章

  1. Gitlab 安装使用
  2. Gitlab CI和CD配置

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL