README ¶ Log collector 使用CircleCI进程CI Pipeline校验,Go Report Card进行Golang项目代码分析 CircleCI: https://circleci.com/gh/chenguolin/log-collector/tree/master Go Report Card: https://goreportcard.com/report/github.com/chenguolin/log-collector 容器日志采集器用于采集标准docker容器日志、Kubernetes容器日志,目前支持以下采集Agent Fluentd FluentBit (TODO) Filebeat (TODO) Flume (TODO) Usage Fluentd Agent 镜像构建 cd build sh build fluentd v1.0.0-1 查看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 运行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等系统调用 更新log-collector docker stop log-collector docker rm -f log-collector docker run ... 运行业务容器应用 docker run -d \ --label fluent.kafka.topic=cgl-test-20190709 \ cgl-test-output:v1.0.0 Problems Fluentd采集器相关问题 插件对Fluentd版本有特殊的要求,因此需要根据Fluentd的版本安装特定的插件版本 fluent-plugin-kafka和ruby-kafka 这2个插件对Kafka Server版本有要求,需要特别注意否则会导致各种报错 fluentd采集数据到kafka时的版本问题 watch docker需要注意,Events返回msg和err channel,但是channel可能会因为一些原因被关闭,需要业务自己reopen,保证能够及时监听到container事件 log-collector容器启动的时候应该先做umount,需要umount shm相关的device,否则业务容器在stop的时候会报 xxx/shm: device or resource busy 这个错误 CI Workflow Check gocyclo: 校验代码复杂度 gofmt: 校验代码是否都已经格式化 golint: 校验代码风格规范是否按照指定标准 gosimple: 校验代码是否可以简化 govet: 代码静态校验 misspell: 校验是否有英文单词拼写错误 unused: 校验是否有未使用变量、常量、函数、结构体等 gotest: 单元测试校验 Gitlab CI 如果使用Gitlab,也可以通过.gitlab-ci.yml运行Gitlab CI Pipeline,详细介绍请参考下面2篇文章 Gitlab 安装使用 Gitlab CI和CD配置 Expand ▾ Collapse ▴ Directories ¶ Show internal Expand all Path Synopsis cmd pkg collector template Click to show internal directories. Click to hide internal directories.