网站首页 > 开源技术 正文
问题
- 1.生产环境中项目节点过多,如何集中管理日志?
- 2.多节点项目中,出现问题如何定位到某个具体节点出现问题?进而迅速获取该节点日志?
- 3.EFK是如何收集管理日志的?演示。
- 4.搭建过程
日志基础架构
解决
效果
- 非容器日志查看效果
- 容器日志查看效果
思路
- 首先确定那种日志,容器或者非容器
- 针对于非容器日志,直接采用filebeat采集固定目录日志即可,只不过在采集参数上可以有所调整,可以直接将业务日志改成JSON,也可以不改,但是要注意的是日志采集的时候异常日志的采集方式,filebeat默认是单行,但是单行的对于出现一堆异常的日志来说,查看不是很方便明确,因此注意采取多行采集配置,如上图演示效果中的日志.
- 日志的唯一链路ID的充分使用,在java项目中,直接可以通过slf4j的MDC格式化到日志中即可,后续定位的关键。kibana中的检索条件可以充分配合,如上述效果图中的黄色部分。
- 针对于容器日志,则使用fluentd,通过fluentd可以直接在一个filebeat中采集集群中所有容器的日志,最终由filebeat输出到es中,当然在容器启动的时候需要添加所在节点的IP标签和容器名称。
环境搭建实战
es7容器启动
docker pull elasticsearch:7.10.1
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name es7 elasticsearch:7.10.1
kibana
配置文件
mkdir -p /data/efk/
cd /data/efk
vi kibana.yml
配置如下
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://192.168.99.x:9200" ] ## es地址
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
启动
docker pull kibana:7.4.1
docker run -d --name kibana -p 5601:5601 -v /data/efk/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.4.1
es索引管理端
docker pull containerize/elastichd
docker run -p 9800:9800 -d --name es-dashboard-ui containerize/elastichd
- fluentd 容器采集服务(将所有容器的日志采集到目标文件夹,再通过filebeat输出到es集群)
docker run -d --restart=always -p 24224:24224 -p 24224:24224/udp -v /data/fluentd/log:/fluentd/log fluent/fluentd
filebeat下载配置
官网地址:https://www.elastic.co/cn/downloads/beats/filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.1-linux-x86_64.tar.gz
cd filebeat-7.11.1-linux-x86_64
vi filebeat.yml
修改下面几个地方
# ================ Filebeat inputs=======================
enabled: true
paths:
- /data/fluentd/log/*.log # 这个位置就是fluentd采集容器日志后输出的文件夹。
#多行采集配置
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
# ========== Kibana ===================================
https://[2001:db8::1]:5601
host: "192.168.99.x:5601"
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["192.168.99.xx:9200"]
filebeat后台进程启动
nohup ./filebeat -e -c filebeat.yml > /dev/null 2>&1&
容器日志采集输出
容器日志改为fluentd,默认为json-file. fluentd-address就是上面启动fluentd的服务IP:24224,
docker run -d \
--log-driver=fluentd \
--log-opt fluentd-address=192.168.1.x:24224 \
--log-opt tag="log-test-container-A" \
busybox sh -c 'while true; do echo " log message from container A"; sleep 10; done;'
非容器日志采集输出
java项目的jar包为例,日志文件夹为/data/fluentd/log,即filebeat采集目录。
nohup java -jar demo-efk.jar > /data/fluentd/log/demo-efk.log 2>&1&
最终效果
- 访问 http://192.168.1.xx:5601/
- 设置-> 索引模式 -> 创建索引模式 ,创建filebeat的索引模式
- 左边栏,点击discover,即可查看日志效果。
猜你喜欢
- 2024-11-07 如何将kibana的dashboard集成到自有系统中
- 2024-11-07 Elasticsearch算分优化方案之rescore_query
- 2024-11-07 Elasticsearch 三板斧之 Elasticsearch 安装
- 2024-11-07 最新JumpServer未授权访问漏洞(CVE-2023-42442)分析
- 2024-11-07 Spring Boot搭建 ELK,这才是正确看日志的方式
- 2024-11-07 大量使用 items_per_inner_pack 和 inner_packs_per_master_pack
- 2024-11-07 Kibana(一张图片胜过千万行日志)——转
- 2024-11-07 解决Elasticsearch集群开启账户密码安全配置自相矛盾的坑
- 2024-11-07 x-pack-sql-jdbc 发布后提示版本不兼容
- 2024-11-07 ES单机通过端口搭建伪集群(如何搭建es集群)
你 发表评论:
欢迎- 最近发表
-
- 10款鲜为人知的PHP框架(10款鲜为人知的php框架代码)
- 3分钟搞懂反弹shell(反弹shell的常用命令)
- 计算机专业必须掌握的脚本开发语言—shell
- shell 基本语法(shell基本语法set)
- 学习Shell 教程(shell编程学习)
- 一个有意思的PHP Webshell,利用伪协议执行代码
- Linux入门-shell编程-适合小白(linux shell编程是什么)
- GrayLog开源日志管理平台技术文章合集【共58篇】
- AI大模型 MiniMax 基于 Apache Doris 的日志系统,PB 级秒级查询响应
- 互联网大厂后端必看!手把手教你替换 Spring Boot 中的日志框架
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)