美文网首页Graylog
使用 Graylog 管理服务日志

使用 Graylog 管理服务日志

作者: kwkwc | 来源:发表于2018-08-23 12:02 被阅读1106次

    日志管理是一件麻烦的事情,特别是服务多的情况下出了问题需要排错、分析非常困难,一般会使用 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

    搭建完成

    1.png 2.png

    设置

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

    3.png

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

    4.png

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

    5.png

    设置完成

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

    6.png

    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 的日志

    7.png

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

    8.png

    非 docker 容器日志收集

    需要使用第三方工具收集日志再转发到 graylog,也可以直接发送,例如 python 可以使用 graypy 这个库

    搜索

    例如要搜索 redis 中包含 “WARNING” 字眼的日志(注意 “AND”、“OR” 等条件需要大写)

    9.png 10.png

    备注

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

    相关文章

      网友评论

        本文标题:使用 Graylog 管理服务日志

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