Graylog 收集日志(Graylog-Sidecar)

createh52周前 (06-29)技术教程6

本文仅介绍如何通过 Graylog-Sidecar 结合、Filebeat 收集 Nginx 日志,其前提需要提前安装好以下软件,其中Elasticsearch 版本请使用 6.8.x 版本,因为 Graylog3.2 暂不支持 Elasticseach7.x。下述软件的安装教程请参考我写的其安装文档,本文所有使用到的软件均由 Docker 安装,系统环境为 Linux x86-64

  • graylog/graylog:3.2
  • mongo:latest
  • elasticsearch:6.8.6
  • docker-compose

Graylog 配置

通过 Graylog Web 端创建一个 Configurations

编辑 Configurations,以下配置的是针对于 Graylog-Sidebar 容器的,并非是 Graylog 容器

实例项目APIJSON 日志目录:

Configuration

# Needed for Graylog
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
fields.gl2_source_collector: ${sidecar.nodeId}

filebeat.inputs:
- input_type: log
  paths:
    - /opt/apijson/log.log
  type: log
output.logstash:
   hosts: ["10.0.53.29:5044"]
path:
  data: /var/lib/graylog-sidecar/collectors/filebeat/data
  logs: /var/lib/graylog-sidecar/collectors/filebeat/log

创建一个,下面配置文件需要用到 Api Token

创建并复制新创建的Api Token


Graylog-Sidecar 安装

编写 docker-compose.yml 配置文件,GS_SERVER_URL 指的是 Graylog Api 接口地址,可以是域名、容器内的主机名IP地址,只要能够访问到即可,此例中因为与 graylog web 同处于(docker-network)网络中,因此直接通过主机名访问。


version: "3.7"
services:
  graylog-sidecar:
    hostname: graylog-sidecar
    image: markusgulden/graylog2-sidecar-docker:latest
    container_name: graylog-sidecar
    restart: unless-stopped
    #network_mode: "host"
    environment:
    		# graylog web 地址
        - GS_SERVER_URL=http://graylog:9000/api/  
        # 节点唯一ID,自定义即可
        - GS_NODE_ID="8148fcbc-9d30-4b2c-99d4-b1455b1f668a" 
        # 粘贴在graylog web上面创建的Api Token
        - GS_SERVER_API_TOKEN=stegknp8qn35r64549bpienf1vro86tmpt9ks783v34182q8dl0
        # 需要收集的日志文件,此处指的是容器的目录
        - GS_LIST_LOG_FILES=/data/logs/nginx
    volumes:
    		# 将宿主机中的日志目录映射到容器中
        - /data/logs/nginx:/data/logs/nginx    
    networks:
      - docker-network

# 创建一个桥接网络,如果多个容器均处于该网络中,则可以直接通过主机名称访问(hostname)
networks:
  docker-network:
    name: docker-network # 网络名称
    driver: bridge

APIJSON示例服务器:

version: "3.7"
services:
  graylog-sidecar:
    hostname: graylog-sidecar
    image: markusgulden/graylog2-sidecar-docker:latest
    container_name: graylog-sidecar
    restart: unless-stopped
    #network_mode: "host"
    environment:
      # graylog web 地址
      - GS_SERVER_URL=http://10.0.0.1:9000/api/
      # 节点唯一ID,自定义即可
      - GS_NODE_ID="graylog-sidecar-210826-01" 
      - GS_NODE_NAME="sidecar-apijson" 
      # 粘贴在graylog web上面创建的Api Token
      - GS_SERVER_API_TOKEN=1rhkka3kf6qb21ljnmp20sfm5ug9fhsqcms7nrhmoq87nsc2fq7b
      # 需要收集的日志文件,此处指的是容器的目录
      - GS_LIST_LOG_FILES=/opt/apijson
    volumes:
      # 将宿主机中的日志目录映射到容器中
      - /opt/apijson:/opt/apijson
    networks:
      - docker-network

# 创建一个桥接网络,如果多个容器均处于该网络中,则可以直接通过主机名称访问(hostname)
networks:
  docker-network:
    name: docker-network # 网络名称
    driver: bridge

构建并启动容器即可

docker-compose up -d # 启动容器

docker logs -f graylog-graylog-sidecar # 查看容器启动日志是否有错误

搜索语法

如果想基于时间搜索条件的话,graylog本身提供相对时间、时间区间、时间表达式三种提交进行精确搜索,如下图所示


温馨提示

  1. graylog语法中的关键字是全部需要大写的
  2. graylog搜索记录中的列是区分大小写的
  3. graylog支持正则语法
  4. 加双引号代表精确搜索,否则代表模糊搜索


模糊搜索,在输入框随便输入点什么

com.antstar.app.* # 任意列包含该搜索条件开头均会搜索出来,其中 * 代表正则中的任意个字符

搜索指定 包含关键字,该列需要搜索记录包含该 ,否则搜索不出来任何结果

message:com.antstar.app.* # 搜索message列包含 com.antstar.app 开头的记录

AND 条件搜索,针对需要同时满足多个条件的搜索结果

tag:test AND level:7 # 搜索tag=test(自定义字段)并且level=7(debug级别)的记录

OR 条件搜索,针对仅需要满足其中一个条件的搜索结果

message:/home/* OR message:/api/* # 搜索message以/home或/api开头的记录

NOT 条件搜索,针对不满足条件的搜索

level:7 NOT message:/home/* # 搜索日志级别位debug级别并且message列不包含/home开头的记录

相关文章

CentOS7快速查看系统日志 干货收藏

今天网盾科技给大家讲解一下CentOS7怎么快速查看系统日志,干货哦,新手赶紧收藏。Systemd是Linux系统工具,Systemd拥有强大的解决与系统日志记录功能-systemd-journald...