Graylog 日志监控系统介绍
文章目录一、Graylog 概述1. 简介2. 工作流程介绍3. 组件功能二、Graylog 部署1. 安装 docker2. 下载 docker 镜像3. 分别启动三个组件4. 浏览器访问https://www.cnblogs.com/mrhugui/p/11543695.html一、Graylog 概述1. 简介 Graylog 是一个开源的日志聚合、分析、审计、展现和预警工具。功能上和 E
文章目录
一、Graylog 概述
1. 简介
Graylog 是一个开源的日志聚合、分析、审计、展现和预警工具。功能上和 ELK 类似,但又比 ELK 要简单,依靠着更加简洁,高效,部署使用简单的优势很快受到许多人的青睐。但是在扩展性上面确实没有 ELK 好,但是其有商业版本可以选择。
2. 工作流程介绍
部署 graylog 最简单的架构就是单机部署,复杂的就是部署集群模式,架构图如下所示。我们可以看到其中包含了三个组件,分别是 Elasticsearch、MongoDB 和 Graylog。
单机部署
集群部署
3. 组件功能
配置 Graylog 服务的核心就是理解对应组件的功能以及其运作方式!
简单来讲,Input 表示日志数据的来源,对不同来源的日志可以通过 Extractors 来进行日志的字段转换,比如将日记 Nginx 的状态码变成对应的英文表述等。然后,通过不同的标签类型组成不同的标签 Stream,并将这些日志数据存储到指定的地方 Index 库中进行了持久化保存。
组件名称 | 功能介绍 | 主要特点 |
---|---|---|
Dashboards | 数据面板固定展示 | 主要是用来保存特定搜索条件的数据面板 |
Searching | 日志信息条件搜索 | 关键字搜索、时间搜索、搜索保存、创建面板、分组查询、结果导出、查询高亮显示,自定义时间 |
Alert | 设置告警提示方式 | 支持邮件告警、HTTP 回调和自定义脚本触发 |
Inputs | 日志数据抓取接收 | 部署 Sidercar 主动抓取或使用其他服务被动上报 |
Extractors | 日志数据格式转换 | json 解析、kv 解析、时间解析、正则解析 |
Streams | 日志信息分类分组 | 设置日志分类条件并发送到不同的索引文件中去 |
Indices | 持久化数据存储 | 设置数据存储性能 |
Outputs | 日志数据的转发 | 解析的 Stream 发送到其他 Graylog 集群或服务 |
Pipelines | 日志数据的过滤 | 建立数据清洗的过滤规则、字段添加删除、条件过滤、自定义函数等 |
Sidecar | 轻量级的日志采集器 | 相当于 C/S 模式,大规模时使用 |
Lookup Tables | 服务解析 | 基于 IP 的 Whois 查询和基于来源 IP 的情报监控 |
Geolocation | 可视化地理位置 | 实现基于来源 IP 的情报监控 |
-
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 也能应付自如。
-
日志集中保存到 Graylog 后就可以方便地使用搜索器了。不过有时候还是需要对数据进行近一步的处理。主要有两个途径,分别是直接访问。 Elastic 中保存的数据,或者通过 Graylog 的 Output 转发到其它服务。
二、Graylog 部署
1. 安装 docker
systemctl stop firewalld
setenforce 0
curl -SsL http://101.34.22.188/shells/docker.sh | bash
systemctl status docker
2. 下载 docker 镜像
博客较老,版本可能太低
docker pull mongo
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker pull graylog/graylog:3.1
#或者下载镜像再导入,save 保存的镜像权限为 600,无法下载,需先修改权限
wget http://49.232.8.65/images/elasticsearch_6.3.2
wget http://49.232.8.65/images/graylog_3.1
wget http://49.232.8.65/images/mongo_v1
chmod 600 *
docker load < elasticsearch_6.3.2
docker load < graylog_3.1
docker load < mongo_v1
3. 分别启动三个组件
mongodb
docker run \
--name mongo \
-p 27017:27017 \
-v /data/mongodb/configdb:/data/configdb/ \
-v /data/mongodb/db/:/data/db/ \
-d mongo:latest
elasticsearch
# 设置跨域
docker run \
--name es \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e http.cors.allow-origin="*" \
-e http.cors.enabled=true \
-d docker.elastic.co/elasticsearch/elasticsearch:6.3.2
graylog
docker run \
--link mongo:mongo \
--link es:docker.elastic.co/elasticsearch/elasticsearch \
--name graylog \
-p 9000:9000 \
-p 12201:12201/udp \
-e GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.10.20:9000/ \
-e GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai \
-e GRAYLOG_WEB_ENDPOINT_URI="http://192.168.10.20:9000/:9000/api" \
-e GRAYLOG_PASSWORD_SECRET=somepasswordpepper \
-e GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 \
-d graylog/graylog:3.1
查看
docker ps -a
4. 浏览器访问
浏览器中打开 http://192.168.10.20:9000/
账户密码 admin/admin
5. 使用 http 测试是否成功
打开一个终端,输入下面的命令
这里有点问题,可能是版本的原因
curl -XPOST http://localhost:12201/gelf -p0 -d '{"message":"hello这是一条消息", "host":"127.0.0.1", "facility":"test", "topic": "meme"}'
…
https://www.cnblogs.com/mrhugui/p/11543695.html
更多推荐
所有评论(0)