文章目录

  • 这个东西有什么用呢
  • 搜集日志的过程如下图
  • 开始部署
  • 在客户端安装 Sidecar
  • 在客户端安装 Filebeat
  • 在Server服务端添加Sidecar
  • 通过Nginx日志做地图标识

这个东西有什么用呢

我们通过搜集日志的信息。将日志在通过Graylog进行分析,例如将日志中的IP地址进行字段提取 ,可以分析用户的访问地,做一个统计,可以灵敏感知用户群体分布地,如下图:

搜集日志的过程如下图

      Graylog Sidecar是一种针对不同日志收集器的轻量级配置管理系统,Graylog 节点充当包含日志收集器配置的集中式枢纽。在支持的消息生成设备/主机上,Sidecar 可以作为服务(Windows 主机)或守护程序(Linux 主机)运行。日志收集器配置通过 Graylog Web 界面集中管理。Sidecar 守护进程将定期使用REST API获取目标的所有相关配置。在第一次运行时,或者当检测到配置更改时,Sidecar 将生成(呈现)相关的后端配置文件。然后它将启动或重新启动那些重新配置的日志收集器

开始部署

之前Graylog已经部署过,这里就不在部署Graylog的服务端,可以参考之前的之前的博客

https://editor.csdn.net/md/?articleId=120563987

在客户端安装 Sidecar

安装:
采用RPM包来安装,这个要在需要收集日志的机子上安装

下载地址  https://github.com/Graylog2/collector-sidecar/releases


直接rpm 安装即可

rpm -ivh graylog-sidecar-1.1.0-1.x86_64.rpm

配置:

vim /etc/graylog/sidecar/sidecar.ymlserver_url: "http://192.168.1.1:9000/api/"  #graylogserver的api地址
server_api_token: ""   #这是验证密钥,我们需要在graaylog的server端生成后,再回来填上,这里先空着,#作用sidecar客户端验证
node_name: "APIServer1" #用于识别是那台sidecar发来的日志信息
update_interval: 10    #多久 Sidecar 向 Graylog 报告一次自己的运行状况,以及抓取最新下发的配置文件。
send_status: true  # 是否向 Graylog 报告自己的状态信息。

启动:

graylog-sidecar -service install && systemctl start graylog-sidecar && systemctl enable graylog-sidecar  #这里可能无法正常启动,应为我们的server_api_token是空的,待会配置上在重启下服务

在客户端安装 Filebeat

安装:
我们同样采用RPM包安装,这个要在需要收集日志的机子上安装

下载地址: https://www.elastic.co/cn/downloads/beats/filebeat


直接rpm 安装即可

rpm -ivh filebeat-7.15.0-x86_64.rpm

配置:
这里Filebeat只是个采集工具,可以直接使用Sidecar 去调用,不需要配置,直接启动就可以了

启动:

systemctl enable filebeat && systemctl start filebeat

在Server服务端添加Sidecar

去服务端添加Sidecar,刚刚我们配置的客户端,用于收集那台机器的日志。

  1. 添加 Sidecar 秘钥
    还记得前面配置空的那个server_api_token么,现在就去生成。



这时候在重启客户端的graylog-sidecar服务就正常了。

  1. 设置inputs接入日志


输入的类型选择beats

填写一些输入信息的参数

注意:上图的Bind Address:是填写安装Sidecar客户端的IP,应为我是和服务端安装在一台机器上了,所以就写了0.0.0.0
保存后就可以看到有一个接入口。如下图

3. 通过server 对 Sidecar 进行配置,收集filebeat日志



图中的配置文件

# Needed for Graylog
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
fields.gl2_source_collector: ${sidecar.nodeId}filebeat.inputs:    # 输入方式,是Filebeat
- input_type: log   paths: - /var/log/*.log   # 日志目录type: log       # 输入类型 log- input_type: logpaths:- /data/nginx/logs/access.log     # 在收集Nginx访问记录日志type: logtags: -Nginx-succeed  # 可以打个标签- input_type: logpaths:- /data/nginx/logs/error.log   # 在收集Nginx 错误日志type: logtags: Nginx-erroroutput.logstash:hosts: ["127.0.0.1:5044"]    # 定义Sidecar的客户端的地址和端口
path:data: /var/lib/graylog-sidecar/collectors/filebeat/data   # 从Filebeat搜集后暂存的数据目录logs: /var/lib/graylog-sidecar/collectors/filebeat/log  # 从Filebeat搜集后暂存的日志目录

现在返回主页,就可以看到搜集的日志了

下面是两个其他模板,供修改参考

模板一:

# Needed for Graylog
fields_under_root: true
## ↑ 用于定义你的特别字段,比如下面那些。这些被标记为 under_root 的数值拥有最高优先级,会覆盖掉任何在这
## 之后的字段。按排列的先后顺序覆盖,比如你如果写了两个 fields.source,那么只有最靠前的会生效;如果你在
## 下面的 fleids 里自定义了 fields.source,也会被这里面 under_root 的给覆盖掉。fields.collector_node_id: ${sidecar.nodeName}
## ↑ 这个 “sidecar.nodeName” 变量,就是在配置 Sidecar 时候提到的那个 “nodeName”,记起来了吗?这个用于
## 图表统计和消息分类很有必要。fields.source: ${sidecar.nodeName}
## ↑ 一定要留意加入了这行配置!!否则日志展示界面 “Source” 会提示 “unknown”,
## 图表也会很难做,因为你再多服务器,也只有一个来源 “unknown”。另外说回为什么上面
## “Do not add Beats type as prefix” 要勾选的问题。如果那个勾没打,那么这里的 “fields.source” 和
## “sidecar.nodeName” 都会不叫这个名字,也就是说你这套配置你套进去,“Source” 一样是 “unknown”,因为
## 它根本不叫 “fields.source” 。叫啥我还没摸出来,总之打钩后,按我调的这套配置是没问题的。fields.gl2_source_collector: ${sidecar.nodeId}# AAA API                #这里创建第一个 filebeat.inputs 配置。
filebeat.inputs:
- type: log                    #指定日志收集类型,因为是收集 tomcat 日志,所以 type 是 log。paths:- /data/service/service1/logs/catalina-daemon.out
##  ↑ 指定日志位于哪个路径,可以用“*”号,或者写多行“-”的方式来指定多个路径。multiline.pattern: '^[[:space:]]+(?:at\b|\.{3}\B)|^Caused by:'
## ↑ 这里很重要,这个是决定 Filebeat 能不能收集 Java 堆栈日志这种多行日志的配置。
## 这个正则和相关参数可以照抄。不要用 Filebeat 官方的正则,那个正则是错误的。multiline.negate: falsemultiline.match: aftertags: Catalina-AAAAPI
## ↑ 打了这个 tags 后,这些附加信息会随着 Filebeat 的信息流一起传过来,可以更易于分类消息是从哪个地方
## ,或哪个服务采集来的,这个对后面做分类搜索——也就是 Stream 会用到,也算是很重要的一个配置,否则你多个
## 服务发来的日志经由同一个 Input 进来,所有日志都没有标记特征信息,会变得很难以区分。
## 还有一个用法是写 fields,比如:
#  fields:
#    server: aaaapi-catalina
## 这个 field 实际上是一个自定义的“key: value”,你可以写任何东西,比如我上面
## 写了 “server: mobileapi-catalina”,你可以写成类似
##  “foo: bar” 等任何东西,这个 fields 的作用跟上面的 tags 类似,只不过 tags 更“正式化”一点
## 用 Filebeat 和 Logstash 对接过的人应该知道这个用法。# BBBAPI
## ↑ 不赘述了,配置一样,但是注意 “filebeat.inputs” 只写一次,不要重复写了!!重复写只会
## 生效最靠近底下的一个。
- type: logpaths:- /data/service/service2/logs/catalina-daemon.outmultiline.pattern: '^[[:space:]]+(?:at\b|\.{3}\B)|^Caused by:'multiline.negate: falsemultiline.match: aftertags: Catalina-BBBAPI# CCC Service
- type: logpaths:- /data/service/service3/logs/catalina-daemon.outmultiline.pattern: '^[[:space:]]+(?:at\b|\.{3}\B)|^Caused by:'multiline.negate: falsemultiline.match: aftertags: Catalina-CCC# Metabase
## ↑ 这里比较例外,Metabase 是个用 Docker 起的服务,所以这里的 type 是 docker
- type: docker
## ↑ 这个写法其实局限性极大,应该说 filebeat 收集单容器(没上 K8s)都很局限性,
## 因为只支持容器 ID 或容器的日志路径,你更新一次容器,ID 就变了,但K8s 支持容器名定义。containers.ids:
## ↑ 这里指定了一个容器 ID,能不能写短 ID 我没测,应该理论上是没问题的。- 'a67b30747290fc0e31f3cbfdc494fef20f54aed29cdc7d8b842ed6f3b3bad9c2'tags: Docker-Metabase     # tags 用法,不赘述了multiline.pattern: '^.|^\#+'
## ↑ 这个也是为了匹配多行日志的,metabase 会有一些很神奇的日志格式,比如 echo 上色什么的,
## 这些对 Filebeat 很不友好,
## 因为会抓到大量的中括号和斜杠以及 “#” 号等乱七八糟的东西。multiline.negate: falsemultiline.match: afteroutput.logstash:
## ↑ 这里指定将收集到的日志输出到哪里hosts: ${user.hostIP}
## ↑ 调用了一个参数 ${user.hostIP},这个参数可以在右侧的“Variables”选项卡设置。
## 你只需要起名和填写内容就行了,## 这里写我们在 Input 里配置的信息,比如我没有在 Graylog-server
## 的配置中启用 bind,所有 Sidecar 都在一个大内网,端口是 5044,那么## 就是172.××.×.111:5044。
## Save 后会自动生成一个参数名,比如上面的 ${user.hostIP}path:                        #这两行是用于覆写 filebeat 日志输出记录的配置data: /var/lib/graylog-sidecar/collectors/filebeat/datalogs: /var/lib/graylog-sidecar/collectors/filebeat/log

模板二:

# Needed for Graylog
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
fields.gl2_source_collector: ${sidecar.nodeId}###  Nginx-access  ###
filebeat.inputs:
- input_type: logpaths:- /var/log/nginx/access.logtype: logtags: 192.168.12.161-Nginx-succeed###  Nginx-erro  ###
- input_type: logpaths:- /var/log/nginx/error.logtype: logtags: 192.168.12.161-Nginx-fail###  Nginx-xintong  ###
- input_type: logpaths:- /var/log/*type: logtags: 192.168.12.161-xitong###  tomcat  ###
- input_type: logpaths:- /var/log/nginx/rizhi/catalina.out-20210923multiline.pattern: '^[[:space:]]+(?:at\b|\.{3}\B)|^Caused by:'multiline.negate: falsemultiline.match: aftertype: logtags: 192.168.12.161-tomcat###  nginx-test  ###
- input_type: logpaths:- /var/log/nginx/rizhi/nginx-test.logmultiline.pattern: '^[[:space:]]+(?:at\b|\.{3}\B)|^Caused by:'multiline.negate: falsemultiline.match: aftertype: logtags: 192.168.12.161-Nginx-testoutput.logstash:hosts: ["192.168.12.161:5044"]
path:data: /var/lib/graylog-sidecar/collectors/filebeat/datalogs: /var/lib/graylog-sidecar/collectors/filebeat/log

通过Nginx日志做地图标识

  1. 截取IP字段



  1. 配置 GeoLite2-City,将IP字段转换为物理位置
    ①.下载GeoLiteCity,
下载地址:https://dev.maxmind.com/geoip/geolite2-free-geolocation-data需要邮箱注册一个用户,登陆即可免费下载,下载的是一个 GeoLite2-City.mmdb的二进制格式数据库,
里面存储的就是ip和地理位置的信息,把这个文件放到 server端 /etc/graylog/server/GeoLite2-City.mmdb
要注意的是,为了保证数据的准确性,这个数据库文件尽可能的每隔一段时间去重新下载,替换下。
保证转换的是最新的地址
如果觉得不方便,博主提供了一份2021-9月的地图数据,供你测试 https://mp.csdn.net/mp_download/manage/download/UpDetailed


② 上传到server端 ,/etc/graylog/server 下

③ 去web端配置Geopip插件


④. 把Gpio插件顺序调到最下面


3. 新建一个地图仪表盘
可以看到,我们左侧已经有提取的IPV4字段和相应的城市以及位置信息


======================================================================================================================================================================================================================================================================================================
辛苦浏览观看,如果对你有帮助,请顺手点个赞吧 (σ゚∀゚)σ…:*☆

Graylog收集nginx日志做地图事态感知相关推荐

  1. 【lnmp+ELK+Nginx+GeoIP】超详细新版ELK8.5.0解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版

    超详细新版ELK8.5.0+lnmp1.9解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版 前言 1.基础环境和所需要的软件包 1.1服务器配置(仅供参考) 1.2 ...

  2. ELK日志系统之使用Rsyslog快速方便的收集Nginx日志

    常规的日志收集方案中Client端都需要额外安装一个Agent来收集日志,例如logstash.filebeat等,额外的程序也就意味着环境的复杂,资源的占用,有没有一种方式是不需要额外安装程序就能实 ...

  3. Loki 收集Nginx日志以 grafana 可视化展示

    背景 通常用ELK来收集Nginx日志的,对于服务器较少的用elk则显得太重了,可以用loki+Promtail+grafana 代替. Loki类似elasticsearch,用于存储:Promta ...

  4. centos6.5下安装配置ELK及收集nginx日志

    Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash 是一个完全开 ...

  5. 安装logstash5.4.1,并使用grok表达式收集nginx日志

    关于收集日志的方式,最简单性能最好的应该是修改nginx的日志存储格式为json,然后直接采集就可以了. 但是实际上会有一个问题,就是如果你之前有很多旧的日志需要全部导入elk上查看,这时就有两个问题 ...

  6. logstash收集nginx日志

    1.配置nginx日志 编辑nginx.conf文件 vim /etc/nginx/nginx.conf 在http节点下配置如下 log_format json '{"@timestamp ...

  7. CentOS下ELK收集Nginx日志

    1. ELK收集Nginx普通格式的日志 1.1 测试服务器架构 1.2 ab工具使用 yum install httpd-tools -y# -n 总共发送多少条请求,注意,最后"/&qu ...

  8. centos7 单机安装ELK7收集nginx日志 无坑版,肯定出图

    系统:centos7 ELK版本:7.8.0 java环境:11 1. 配置JDK #配置JDK11 mkdir /root/source/cd /root/sourcewget https://re ...

  9. ELK采集之nginx 日志高德地图出城市IP分布图

    最近确实忙得像狗一样,很久没有更新博客了.今天有点空闲时间写一些相关的ELK stack的博客:本来想做成一些列,后面有时间的话再更新吧 1.采用拓扑: 角色扮演:  Agent:采用logstash ...

最新文章

  1. Django源码分析7:migrate命令的浅析
  2. hdfs入门——常用命令
  3. 二分查找递归与非递归的时间比较_我们说一说Python的查找算法!
  4. 使用OLE DB方式连接常用数据库的连接字符串的设置
  5. 单链表以及双向链表的操作
  6. html table 显示最后一条,漂亮CSS表格(Table),最后一行是汇总行【实例】
  7. java复制文件到指定目录
  8. Multisim卸载后重新安装不上解决方案
  9. 小米手机定时开关机在哪里设置?让你的小米手机“休息一下”
  10. 一款超漂亮的简历生成器,金三银四的你一定用得上
  11. InfluxDB中Line Protocol理解
  12. XCTF_MOBILE16_boomshakalaka-3
  13. python selenium爬虫 不打开网页 不打开浏览器
  14. 账号密码登录(Account password authentication)
  15. 数学建模python实现基础编程练习1
  16. 教你使用html三剑客写一个高级的伪3D效果
  17. 使用四种框架分别实现1百万websocket常连接的服务器
  18. 【特征检测】FAST特征点检测算法
  19. 分布式存储高性能的好帮手--RDMA
  20. Python机器学习零基础入门 -- Pima印第安人糖尿病发病数据集统计分析

热门文章

  1. 腾讯在前,字节在后,夹缝中的B站靠游戏出圈难
  2. NXP iMX8平台上使用imx-gpu-sdk开发
  3. 使用全屏沉浸模式(Using Immersive Full-Screen Mode)
  4. Volatile关键字与线程安全
  5. 捞点大厂产品经理(合作企业招聘),没年龄限制~~~
  6. 【Codecs系列】之视频编码中的块效应、振铃效应和呼吸效应分析
  7. 靠自学Python也能搭建HTTP服务器
  8. Python爬虫Requests库入门及HTTP协议
  9. AI 能看懂漫画吗?它的脑补能力比人类差远了
  10. 计算两个矩形重叠面积的简单方法