资讯专栏INFORMATION COLUMN

使用 Graylog 管理服务日志

Fourierr / 1512人阅读

摘要:日志管理是一件麻烦的事情,特别是服务多的情况下出了问题需要排错分析非常困难,一般会使用,但这篇文章将会介绍另外一个同样优秀的日志聚合平台准备工作安装修改镜像仓库安装安装如果觉得麻烦可以用这个部署辅助工具自动完成进入工具目录并自动部署配置文

日志管理是一件麻烦的事情,特别是服务多的情况下出了问题需要排错、分析非常困难,一般会使用 ELK,但这篇文章将会介绍另外一个同样优秀的日志聚合平台 Graylog

准备工作
安装 docker、修改 docker 镜像仓库、安装 pip、安装 docker-compose
# 如果觉得麻烦可以用这个部署辅助工具自动完成
git clone https://github.com/kwkwc/dockerSH.git

# 进入工具目录并自动部署
cd dockerSH && ./deploy.sh
Graylog 配置文件
graylog 的配置文件有两个,graylog.conf、log4j2.xml,其中 graylog.conf 的内容经常会有改动,可能会导致启动失败,所以请从下面的地址下载(同样是官方配置,只是版本不同)
# graylog.conf
https://github.com/kwkwc/dockerSH/blob/master/services/graylog/config/graylog.conf

# log4j2.xml
https://github.com/kwkwc/dockerSH/blob/master/services/graylog/config/log4j2.xml
注意事项
graylog 依赖 mongo、elasticsearch,如果机器配置低可能会启动失败
docker-compose.yml 文件
由于个人倾向于服务的独立性,所以会多带带配置 mongo、elasticsearch、graylog
mongo
version: "2"
services:
  graylog-mongo:
    restart: always
    image: mongo:3.6.4
    container_name: graylog-mongo
    volumes:
      - ../data/graylog-mongo:/data/db
elasticsearch
version: "2"
services:
  graylog-elasticsearch:
    restart: always
    image: elasticsearch:5.6.9
    container_name: graylog-elasticsearch
    volumes:
      - ../data/graylog-elasticsearch:/usr/share/elasticsearch/data
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    mem_limit: 1g
graylog
version: "2"
services:
  graylog:
    restart: always
    image: graylog/graylog:2.4.5-2
    container_name: graylog
    volumes:
      # 配置文件这里挂载
      - ./config:/usr/share/graylog/data/config
      # 持久化数据
      - ../data/graylog:/usr/share/graylog/data/journal
    environment:
      # 密码盐值,随便改
      - GRAYLOG_PASSWORD_SECRET=gr8r3hbnvfs73b8wefhweufpokdnc
      # 管理员名称
      - GRAYLOG_ROOT_USERNAME=admin
      # 密码需要填写 SHA256 加密的密文,例如这里是 admin
      # echo -n admin | shasum -a 256
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      # elasticsearch host
      - GRAYLOG_ELASTICSEARCH_HOSTS=http://graylog-elasticsearch:9200
      # mongo host
      - GRAYLOG_MONGODB_URI=mongodb://graylog-mongo/graylog
      # 时区
      - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
      # 将 x.x.x.x 替换成你的 IP
      - GRAYLOG_WEB_ENDPOINT_URI=http://x.x.x.x:9000/api
      - GRAYLOG_WEB_LISTEN_URI=http://0.0.0.0:9000/
      - GRAYLOG_REST_LISTEN_URI=http://0.0.0.0:9000/api
      # 其他配置请参考 graylog.conf 文件, 在需要覆盖的配置项前面加 "GRAYLOG_",换成大写
    ports:
      # web 和 api 端口
      - 9000:9000
      # Syslog TCP
      - 514:514
      # Syslog UDP
      - 514:514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp
启动
依次启动 mongo、elasticsearch、graylog
docker-compose up -d
浏览器打开
http://127.0.0.1:9000
搭建完成

设置
使用前需要先设置输入点
点击 “顶部导航栏” –> “System / Inputs” –> “Inputs”

“Select Input” 选择 “GELF UDP” 然后按 “Launch new input”

选择 “Node”,填写 “Title”,保存

设置完成
出现绿色 “RUNNING”,证明运行成功

docker 容器日志收集
以 redis 作为示例,配置日志驱动
docker-compose.yml
version: "2"
services:
  redis:
    restart: always
    image: redis:4.0.10
    container_name: redis
    logging:
      driver: gelf
      options:
        # 将 x.x.x.x 替换成你的 IP
        gelf-address: udp://x.x.x.x:12201
        tag: "redis"
查看
redis 启动后就可以在 graylog 的 “Search” 界面看到 redis 的日志

默认不会显示 “tag” 标签栏,我们需要显示用于区分日志,只需要在左侧 “Fields” 打勾就行

非 docker 容器日志收集
需要使用第三方工具收集日志再转发到 graylog,也可以直接发送,例如 python 可以使用 graypy 这个库
搜索
例如要搜索 redis 中包含 “WARNING” 字眼的日志(注意 “AND”、“OR” 等条件需要大写)

备注
docker 的日志驱动有几种,大多 ELK 的文章会介绍使用 syslog,但使用 syslog 在日志服务器断开重启后就不会接收到新日志,gelf 是 graylog 的日志格式,日志服务器断开重启依旧可以接收到新日志

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27420.html

相关文章

  • SpringBoot logback 整合 GrayLog

    摘要:写在前面的话网上看到的文章都是比较年前的了,刚好自己整合了下,来分享下经验。目前所了解到的应用是通过所使用的不同的日志框架来推送数据到里面,常用的有,等。启动项目启动项目之后,即可在控制台中看到项目启动时打印的日志 写在前面的话 网上看到的文章都是比较1、2年前的了,刚好自己整合了下,来分享下经验。 目前所了解到的springboot应用是通过所使用的不同的日志框架来推送数据到gra...

    jzman 评论0 收藏0
  • 容器监控实践—开篇

    摘要:方案汇总一开源方案采集展示报警二商业方案三云厂商腾讯云阿里云百度云华为云四主机监控五日志监控六服务监控七存储后端脑图本文为容器监控实践系列文章,完整内容见 概述 随着越来越多的线上服务docker化,对容器的监控、报警变得越来越重要,容器监控有多种形态,有些是开源的(如promethues),而另一些则是商业性质的(如Weave),有些是集成在云厂商一键部署的(Rancher、谷歌云)...

    Zack 评论0 收藏0
  • 容器监控实践—开篇

    摘要:方案汇总一开源方案采集展示报警二商业方案三云厂商腾讯云阿里云百度云华为云四主机监控五日志监控六服务监控七存储后端脑图本文为容器监控实践系列文章,完整内容见 概述 随着越来越多的线上服务docker化,对容器的监控、报警变得越来越重要,容器监控有多种形态,有些是开源的(如promethues),而另一些则是商业性质的(如Weave),有些是集成在云厂商一键部署的(Rancher、谷歌云)...

    hellowoody 评论0 收藏0
  • 使用开源工具fluentd-pilot收集容器日志

    摘要:来自用户的最佳实践分享,如何用阿里开源的日志收集工具收集机器上所有应用日志。具有如下特性一个单独的进程收集机器上所有容器的日志。无论是强大的阿里云日志服务,还是比较流行的组合,甚至是,都能把日志投递到正确的地点。 来自用户的最佳实践分享,如何用阿里开源的Docker日志收集工具fluentd-pilot收集机器上所有Docker应用日志。 fluentd-pilot简介 fluentd...

    Dionysus_go 评论0 收藏0
  • 使用 Fluentd 管理 Docker 日志

    摘要:使用管理日志标签空格分隔日志管理本文作者是,本文原文地址是当前版本的一个问题就是日志管理。任何长时间运行的进程产生的日志都是冗长的,这会导致仔细检查非常困难。所有文件这时能被转发到一个中央日志系统。 使用 Fluentd 管理 Docker 日志 标签(空格分隔): Fluentd Docker 日志管理 本文作者是 jwilder,本文原文地址是 Docker Log M...

    Hujiawei 评论0 收藏0

发表评论

0条评论

Fourierr

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<