🏆本文收录于「滚雪球学SpringBoot」专栏(专栏全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
说真的,不知道你有没有这种真实经历👇:
此时此刻,你需要什么?别问——你需要的是一套专业、系统、强大、好查、能图表、能报警的日志系统!
这时候,ELK 栈就从天而降,简直像是开发者的“八倍镜+透视外挂”。
🧠 本文定位: 不是教你搭个 ELK 了事,而是手把手带你打造一个:
✅ 查询快如风 ✅ 可扩展上云 ✅ 多团队可视 ✅ 支持告警通知 ✅ 开发运维友好的“全场景日志平台”
ELK 不是一个工具,而是三种神级工具的合体,一句话理解:
“采、存、查、看”四步走,一套带走!
🔎一句话:只要你写的日志结构化了,ES 查起来就是飞一般的感觉!
举个例子,你可以这样处理 Nginx 日志👇
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
target => "@timestamp"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "nginx-logs-%{+YYYY.MM.dd}"
}
}
🧑💻 举个场景图感受一下:
# 启动 Elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.11.1
# 启动 Kibana
docker run -d --name kibana --link elasticsearch -p 5601:5601 kibana:8.11.1
# 启动 Logstash
docker run -it --rm \
-v "$PWD/logstash.conf":/usr/share/logstash/pipeline/logstash.conf \
logstash:8.11.1
🧪小贴士:
logstash.conf
和 kibana.yml
为持久化;
现在重点来了❗你部署完以后,是不是发现:
查询有点慢,图表卡顿,聚合超时?
大概率是你没有“对症下药”做性能优化!
类型 | 说明 | 用途 |
---|---|---|
text | 支持分词的全文检索 | 日志内容(全文搜索) |
keyword | 不分词的精确匹配 | IP、状态码、URL 等 |
date | 日期格式 | 时间过滤 |
boolean | 布尔型 | 是否成功 |
PUT _template/logs-template
{
"index_patterns": ["logs-*"],
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"@timestamp": { "type": "date" },
"status": { "type": "integer" },
"method": { "type": "keyword" },
"url": { "type": "keyword" },
"message": { "type": "text" }
}
}
}
ILM
(索引生命周期管理)自动清理旧数据PUT _ilm/policy/logs-cleanup-policy
{
"policy": {
"phases": {
"hot": {
"actions": {}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
}
}
再将索引附上策略即可自动清理。
GET logs-*/_search
{
"query": {
"match": {
"message": "error"
}
}
}
耗时:平均 8.2 秒 资源:CPU 飙升,GC 抖动明显
GET logs-2025.07.11/_search
{
"query": {
"bool": {
"must": [
{ "match": { "level": "ERROR" } },
{ "term": { "service": "order" } }
],
"filter": {
"range": {
"@timestamp": {
"gte": "now-1d/d",
"lt": "now/d"
}
}
}
}
}
}
耗时:0.6 ~ 1.2 秒之间 资源:稳定,内存占用下降 40%
PUT _watcher/watch/error_alarm
{
"trigger": {
"schedule": { "interval": "5m" }
},
"input": {
"search": {
"request": {
"indices": ["logs-*"],
"body": {
"query": {
"match": { "level": "ERROR" }
}
}
}
}
},
"actions": {
"notify-slack": {
"webhook": {
"method": "POST",
"url": "https://oapi.dingtalk.com/robot/send?access_token=xxx",
"body": "{ \"msgtype\": \"text\", \"text\": { \"content\": \"日志异常啦!赶紧查查~\" } }"
}
}
}
}
trace_id
+ span_id
;
朋友你看,其实日志系统最核心的,不是收集多漂亮,而是查得快、看得清、控得住、扩得起!
❗ ELK 玩得好,故障无烦恼;ELK 配得巧,老板不骂你!
我们从:
一步步把 ELK 由一个“开源日志组件”,打造成了“准商业级监控平台”!
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」(专栏全网独家统一名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。
码字不易,如果这篇文章对你有所帮助,帮忙给bug菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。 同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!
我是bug菌(全网一个名),CSDN | 掘金 | 腾讯云 | 华为云 | 阿里云 | 51CTO | InfoQ 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金等平台签约作者,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计30w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。
-End-
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。