百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

ELK不香了!我用Graylog(elk使用)

off999 2025-03-24 19:14 29 浏览 0 评论

当我们公司内部部署很多服务以及测试、正式环境的时候,查看日志就变成了一个非常刚需的需求了。

图片来自 包图网

是多个环境的日志统一收集,然后使用 Nginx 对外提供服务,还是使用专用的日志收集服务 ELK 呢?这就变成了一个问题!

而 Graylog 作为整合方案,使用 Elasticsearch 来存储,使用 MongoDB 来缓存,并且还有带流量控制的(throttling),同时其界面查询简单易用且易于扩展。所以,使用 Graylog 成为了不二之选,为我们省了不少心。

Filebeat 工具介绍

①Filebeat 日志文件托运服务

Filebeat 是一个日志文件托运工具,在你的服务器上安装客户端后,Filebeat 会自动监控给定的日志目录或者指定的日志文件,追踪读取这些文件,不停的读取,并且转发这些信息到 Elasticsearch 或者 Logstarsh 或者 Graylog 中存放。

②Filebeat 工作流程介绍

当你安装并启用 Filebeat 程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件。

对于探测器找出的每一个日志文件,Filebeat 都会启动一个收割进程(harvester)。

每一个收割进程读取一个日志文件的最新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件。

最后 Filebeat 会发送集合的数据到你指定的地址上去(我们这里就是发送给 Graylog 服务了)。

③Filebeat 图示理解记忆

我们这里不适用 Logstash 服务,主要是因为 Filebeat 相比于 Logstash 更加轻量级。

当我们需要收集信息的机器配置或资源并不是特别多时,且并没有那么复杂的时候,还是建议使用 Filebeat 来收集日志。

日常使用中,Filebeat 的安装部署方式多样且运行十分稳定。

图示服务架构理解记忆


Filebeat 配置文件

配置 Filebeat 工具的核心就是如何编写其对应的配置文件!

对应 Filebeat 工具的配置主要是通过编写其配置文件来控制的,对于通过 rpm 或者 deb 包来安装的情况,配置文件默认会存储在,
/etc/filebeat/filebeat.yml 这个路径下面。

而对于,对于 Mac 或者 Win 系统来说,请查看解压文件中相关文件,其中都有涉及。

下面展示了 Filebeat 工具的主配置文件,注释信息中都对其各个字段含义进行了详细的解释,我这里就不再赘述了。

需要注意的是,我们将日志的输入来源统统定义去读取 inputs.d 目录下的所有 yml 配置。

所以,我们可以更加不用的服务(测试、正式服务)来定义不同的配置文件,根据物理机部署的实际情况具体配置。

# 配置输入来源的日志信息 
# 我们合理将其配置到了 inputs.d 目录下的所有 yml 文件 
filebeat.config.inputs: 
  enabled: true 
  path: ${path.config}/inputs.d/*.yml 
  # 若收取日志格式为 json 的 log 请开启此配置 
  # json.keys_under_root: true 
 
# 配置 Filebeat 需要加载的模块 
filebeat.config.modules: 
  path: ${path.config}/modules.d/*.yml 
  reload.enabled: false 
 
setup.template.settings: 
  index.number_of_shards: 1 
 
# 配置将日志信息发送那个地址上面 
output.logstash: 
  hosts: ["11.22.33.44:5500"] 
 
# output.file: 
#   enable: true 
 
processors: 
  - add_host_metadata: ~ 
  - rename: 
      fields: 
        - from: "log" 
          to: "message" 
  - add_fields: 
      target: "" 
      fields: 
        # 加 Token 是为了防止无认证的服务上 Graylog 服务发送数据 
        token: "0uxxxxaM-1111-2222-3333-VQZJxxxxxwgX " 

下面展示一个简单的 inputs.d 目录下面的 yml 配置文件的具体内容,其主要作用就是配置单独服务的独立日志数据,以及追加不同的数据 tag 类型。

# 收集的数据类型 
- type: log 
  enabled: true 
  # 日志文件的路径地址 
  paths: 
    - /var/log/supervisor/app_escape_worker-stderr.log 
    - /var/log/supervisor/app_escape_prod-stderr.log 
  symlinks: true 
  # 包含的关键字信息 
  include_lines: ["WARNING", "ERROR"] 
  # 打上数据标签 
  tags: ["app", "escape", "test"] 
  # 防止程序堆栈信息被分行识别 
  multiline.pattern: '^\[?[0-9]...{3}' 
  multiline.negate: true 
  multiline.match: after 
 
# 需要配置多个日志时可加多个 type 字段 
- type: log 
  enabled: true 

需要注意的是,针对于不同的日志类型,filebeat 还提供了不同了模块来配置不同的服务日志以及其不同的模块特性,比如我们常见的 PostgreSQl、Redis、Iptables 等。

# iptables 
- module: iptables 
  log: 
    enabled: true 
    var.paths: ["/var/log/iptables.log"] 
    var.input: "file" 
 
# postgres 
- module: postgresql 
  log: 
    enabled: true 
    var.paths: ["/path/to/log/postgres/*.log*"] 
 
# nginx 
- module: nginx 
  access: 
    enabled: true 
    var.paths: ["/path/to/log/nginx/access.log*"] 
  error: 
    enabled: true 
    var.paths: ["/path/to/log/nginx/error.log*"] 

Graylog 服务介绍

①Graylog 日志监控系统

Graylog 是一个开源的日志聚合、分析、审计、展现和预警工具。在功能上来说,和 ELK 类似,但又比 ELK 要简单很多。

依靠着更加简洁,高效,部署使用简单的优势很快受到许多人的青睐。当然,在扩展性上面确实没有比 ELK 好,但是其有商业版本可以选择。

②Graylog 工作流程介绍

部署 Graylog 最简单的架构就是单机部署,复杂的也是部署集群模式,架构图示如下所示。

我们可以看到其中包含了三个组件,分别是 Elasticsearch、MongoDB 和 Graylog。

其中,Elasticsearch 用来持久化存储和检索日志文件数据(IO 密集),MongoDB 用来存储关于 Graylog 的相关配置,而 Graylog 来提供 Web 界面和对外接口的(CPU 密集)。

最小化单机部署

最优化集群部署

Graylog 组件功能

配置 Graylog 服务的核心就是理解对应组件的功能以及其运作方式!

简单来讲,Input 表示日志数据的来源,对不同来源的日志可以通过 Extractors 来进行日志的字段转换,比如将 Nginx 的状态码变成对应的英文表述等。

然后,通过不同的标签类型分组成不用的 Stream,并将这些日志数据存储到指定的 Index 库中进行持久化保存。


Graylog 中的核心服务组件

Graylog 通过 Input 搜集日志,每个 Input 单独配置 Extractors 用来做字段转换。

Graylog 中日志搜索的基本单位是 Stream,每个 Stream 可以有自己单独的 Elastic Index Set,也可以共享一个 Index Set。

Extractor 在 System/Input 中配置。Graylog 中很方便的一点就是可以加载一条日志,然后基于这个实际的例子进行配置并能直接看到结果。

内置的 Extractor 基本可以完成各种字段提取和转换的任务,但是也有些限制,在应用里写日志的时候就需要考虑到这些限制。Input 可以配置多个 Extractors,按照顺序依次执行。

系统会有一个默认的 Stream,所有日志默认都会保存到这个 Stream 中,除非匹配了某个 Stream,并且这个 Stream 里配置了不保存日志到默认 Stream。

可以通过菜单 Streams 创建更多的 Stream,新创建的 Stream 是暂停状态,需要在配置完成后手动启动。

Stream 通过配置条件匹配日志,满足条件的日志添加 stream ID 标识字段并保存到对应的 Elastic Index Set 中。

Index Set 通过菜单 System/Indices 创建。日志存储的性能,可靠性和过期策略都通过 Index Set 来配置。

性能和可靠性就是配置 Elastic Index 的一些参数,主要参数包括,Shards 和 Replicas。

除了上面提到的日志处理流程,Graylog 还提供了 Pipeline 脚本实现更灵活的日志处理方案。

这里不详细阐述,只介绍如果使用 Pipelines 来过滤不需要的日志。下面是丢弃 level > 6 的所有日志的 Pipeline Rule 的例子。

从数据采集(input),字段解析(extractor),分流到 stream,再到 Pipeline 的清洗,一气呵成,无需在通过其他方式进行二次加工。

Sidecar 是一个轻量级的日志采集器,通过访问 Graylog 进行集中式管理,支持 Linux 和 windows 系统。

Sidecar 守护进程会定期访问 Graylog 的 REST API 接口获取 Sidecar 配置文件中定义的标签(tag),Sidecar 在首次运行时会从 Graylog 服务器拉取配置文件中指定标签(tag)的配置信息同步到本地。

目前 Sidecar 支持 NXLog,Filebeat 和 Winlogbeat。他们都通过 Graylog 中的 web 界面进行统一配置,支持 Beats、CEF、Gelf、Json API、NetFlow 等输出类型。

Graylog 最厉害的在于可以在配置文件中指定 Sidecar 把日志发送到哪个 Graylog 群集,并对 Graylog 群集中的多个 input 进行负载均衡,这样在遇到日志量非常庞大的时候,Graylog 也能应付自如。

rule "discard debug messages" 
when 
  to_long($message.level) > 6 
then 
  drop_message(); 
end 

日志集中保存到 Graylog 后就可以方便的使用搜索了。不过有时候还是需要对数据进行近一步的处理。

主要有两个途径,分别是直接访问 Elastic 中保存的数据,或者通过 Graylog 的 Output 转发到其它服务。

服务安装和部署

主要介绍部署 Filebeat+Graylog 的安装步骤和注意事项!

使用 Graylog 来收集日志

①部署 Filebeat 工具

官方提供了多种的部署方式,包括通过 rpm 和 deb 包安装服务,以及源代码编译的方式安装服务,同时包括了使用 Docker 或者 kubernetes 的方式安装服务。

我们根据自己的实际需要,进行安装即可:

# Ubuntu(deb) 
$ curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.1-amd64.deb 
$ sudo dpkg -i filebeat-7.8.1-amd64.deb 
$ sudo systemctl enable filebeat 
$ sudo service filebeat start 
# 使用 Docker 启动 
docker run -d --name=filebeat --user=root \ 
  --volume="./filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \ 
  --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \ 
  --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \ 
  docker.elastic.co/beats/filebeat:7.8.1 filebeat -e -strict.perms=false \ 
  -E output.elasticsearch.hosts=["elasticsearch:9200"] 

②部署 Graylog 服务

我们这里主要介绍使用 Docker 容器来部署服务,如果你需要使用其他方式来部署的话,请自行查看官方文档对应章节的安装部署步骤。

在服务部署之前,我们需要给 Graylog 服务生成等相关信息,生成部署如下所示:

# 生成 password_secret 密码(最少 16 位) 
$ sudo apt install -y pwgen 
$ pwgen -N 1 -s 16 
zscMb65...FxR9ag 
 
# 生成后续 Web 登录时所需要使用的密码 
$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1 
Enter Password: zscMb65...FxR9ag 
77e29e0f...557515f 

生成所需密码信息之后,我们将如下 yml 信息保存到 docker-comopse.yml 文件中,使用 docker-compose 命令启动该服务,即可完成部署。

version: "3" 
 
services: 
  mongo: 
    restart: on-failure 
    container_name: graylog_mongo 
    image: "mongo:3" 
    volumes: 
      - "./mongodb:/data/db" 
    networks: 
      - graylog_network 
 
  elasticsearch: 
    restart: on-failure 
    container_name: graylog_es 
    image: "elasticsearch:6.8.5" 
    volumes: 
      - "./es_data:/usr/share/elasticsearch/data" 
    environment: 
      - http.host=0.0.0.0 
      - transport.host=localhost 
      - network.host=0.0.0.0 
      - "ES_JAVA_OPTS=-Xms512m -Xmx5120m" 
    ulimits: 
      memlock: 
        soft: -1 
        hard: -1 
    deploy: 
      resources: 
        limits: 
          memory: 12g 
    networks: 
      - graylog_network 
 
  graylog: 
    restart: on-failure 
    container_name: graylog_web 
    image: "graylog/graylog:3.3" 
    ports: 
      - 9000:9000 # Web 服务提供的访问端口 
      - 5044:5044 # Filebeat 工具提供端口 
      - 12201:12201 # GELF TCP 
      - 12201:12201/udp # GELF UDP 
      - 1514:1514 # Syslog TCP 
      - 1514:1514/udp # Syslog UDP 
    volumes: 
      - "./graylog_journal:/usr/share/graylog/data/journal" 
    environment: 
      - GRAYLOG_PASSWORD_SECRET=zscMb65...FxR9ag 
      - GRAYLOG_ROOT_PASSWORD_SHA2=77e29e0f...557515f 
      - GRAYLOG_HTTP_EXTERNAL_URI=http://11.22.33.44:9000/ 
      - GRAYLOG_TIMEZONE=Asia/Shanghai 
      - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai 
    networks: 
      - graylog 
    depends_on: 
      - mongo 
      - elasticsearch 
 
networks: 
  graylog_network: 
    driver: bridge 

之后,通过浏览器访问对应服务器地址的 9000 端口,即可登录主页。

需要注意的是,GELF(Graylog Extended Log Format)的 input 模式可以接受结构化的事件,支持压缩和分块。恰好,Docker 服务的 log-driver 驱动原生提供了 GELF 的支持。

只需要我们在 Graylog 的 system/inputs 下面创建对应的 input 之后,启动容器时候指定 log-driver,就可以将容器内的输出都会发送到 Graylog 里面了。

使用 Graylog 来收集日志

# [docker] 启动容器指定地址和 driver 
docker run --rm=true \ 
    --log-driver=gelf \ 
    --log-opt gelf-address=udp://11.22.33.44:12201 \ 
    --log-opt tag=myapp \ 
    myapp:0.0.1 
# [docker-compose] 启动使用方式 
version: "3" 
services: 
  redis: 
    restart: always 
    image: redis 
    container_name: "redis" 
    logging: 
      driver: gelf 
      options: 
        gelf-address: udp://11.22.33.44:12201 
        tag: "redis" 
  ...... 

Graylog 界面功能

主要介绍 Graylog 界面的相关功能和对应特点!

作者:Escape

编辑:陶家龙

来源:
escapelife.site/posts/38c81b25.html

相关推荐

手机版电脑模拟器下载(手机电脑模拟器下载的文件在哪)
手机版电脑模拟器下载(手机电脑模拟器下载的文件在哪)

  玩家们想要在电脑上畅快地玩真实手机,首先就需要先下载它的电脑版模拟器啦。在这里推荐大家使用的是电脑安卓模拟器,这是一款十分流畅好用的真实手机安卓模拟器,性能强悍,功能完备。  1、下载完真实手机安卓模拟器。  2、在电脑上进行安装,双击...

2026-01-01 16:03 off999

下载计算机到手机(手机下载计算机怎么下载)
  • 下载计算机到手机(手机下载计算机怎么下载)
  • 下载计算机到手机(手机下载计算机怎么下载)
  • 下载计算机到手机(手机下载计算机怎么下载)
  • 下载计算机到手机(手机下载计算机怎么下载)
u盘启动不了怎么回事(u盘启动也启动不了)

原因三:USB传输性能不佳导致;解决三:换个USB插口试试,建议将u盘插入到电脑机箱后置的USB插口处。原因四:u盘自身的质量问题导致;解决四:换一个u盘制作试一试。原因五:电脑系统问题导致;解决五:...

联想笔记本电脑键盘输入没反应

1.首先在可以进行输入的位置,长按下某个按键1秒以上,看看有没有反应。有反应看第2,没反应看第3。2.控制面板~轻松使用~轻松使用设置中心~更改键盘的工作方式~取消筛选键并应用即可。3.打开设备管理器...

软件管家电脑版下载官网(软件管家电脑版下载官网安装)

要下载和安装应用程序,您可以按照以下步骤使用电脑管家:1.打开电脑管家应用程序。2.在主界面上,您可以找到一个名为“应用中心”的选项,点击它。3.在应用中心中,您可以浏览各种应用程序的列表。您可...

台式电脑怎么取消定时关机(台式电脑设置自动关机怎么取消)

电脑设置了每天定时关机,取消的方法有多种,以下提供三种方式:方法一:打开任务计划程序(TaskScheduler)。找到“任务计划程序库”(TaskSchedulerLibrary),找到设置的...

win7怎么截屏快捷键(win7怎样截屏快捷键)

在Win7系统中,自带的截图快捷键是“PrtScn”键,即PrintScreen键。按下这个键后,系统会将当前屏幕的内容复制到剪贴板中,然后用户可以将其粘贴到其他应用程序中进行编辑或保存。此外,Wi...

如何查看笔记本配置(如何查看笔记本配置高低)

两种方法一种你在笔记本背面有个ID号,也就是序列号,你把它抄下来,输到笔记本品牌的官网上,查看他的配置就可以,这是第1种方法,第2种方法,你开机后,我的电脑上单击右键,点属性,就会在出来你的CPU内存...

linux软件(linux软件图标)

Linux是一种自由和开放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。在加上用户空间的应用程序之后,成为Linux操作系统。Linux也是自由软件和开放...

hp laserjet p1108打印机驱动

惠普LaserJetProP1108打印机安装打印机驱动的方法,可以通过以下步骤操作来实现:1、运行驱动安装包,在“HPLaserJetProP1100打印机系列”下,点击“USB安装...

台式机最好的配置(台式机最强配置)

家用台式电脑cpu一般选择英特尔8-10代的i3就能满足正常的家用,内存方面选择16g,绝对够用,再选择一块512g的固态硬盘,保证电脑的速度2022年台式电脑建议你可以配16gb或32gb的内存。硬...

笔记本电脑home键在哪(笔记本的home键怎么用)

home键位置一般有三个:一、键就在键盘最右边一列的上方,也是右上角处。二、在数字键盘的“7”键上,如果想使用"home"键功能,需要先关闭数字键功能。一般笔记本开、关数字键功能是按F...

win7汉化包下载(win7系统汉化)

要下载犀牛7grasshopper汉化包,首先你需要从官方网站或可靠的第三方网站上找到可信赖的下载链接。然后,点击链接进行下载,并确保你的电脑设备有足够的存储空间来安装这个汉化包。安装完成后,打开犀牛...

ghost系统备份与恢复的详细步骤

还原系统步骤。1、电脑开机进入ghost,这里注意如果是通过U盘启动盘进入,注意先进入bios把第一启动项设置为当前的U盘;如果是通过自身电脑硬盘启动,建议先把ghost系统安装好。2、点击确定,然后...

photoshop官方下载电脑版(ps软件官方下载中文版电脑版)

鼠标右键点击压缩包,点击解压到文件夹按钮。打开文件夹,点击安装文件。弹出安装对话框,点击默认位置。更改安装路径,点击确认按钮。等待安装完成,双击打开ps快捷方式即可。目前在电脑上免费下载PS是不太可能...

取消回复欢迎 发表评论: