Elastic Stack 日志监控入门指南

本文介绍了Elastic Stack日志监控的入门指南,包括核心概念(Elasticsearch、Kibana、Elastic Agent、Fleet和Fleet Server)、Kibana加密密钥配置、Fleet Server的安装与验证、Nginx日志监控的集成配置,以及如何在Kibana中查看和自定义仪表盘。通过详细步骤和避坑指南,帮助用户快速搭建并优化日志监控系统。

作品集: Elastic Stack
作者头像
LumiBee
13 天前 · 67 1
分享

Elastic Stack 日志监控入门指南

0. 核心概念:理解现代 Elastic 可观测性架构

在开始部署之前,我们必须先理解几个核心概念,这能帮助我们明白每一步操作背后的“为什么”。

  • Elasticsearch: 整个系统的核心,一个强大的搜索引擎和数据库。所有日志数据最终都会被存储在这里,并建立索引以便快速检索。
  • Kibana: 系统的“大脑”和“脸面”。它是一个 Web UI,我们在这里管理所有配置、探索原始数据、创建炫酷的可视化仪表盘。
  • Elastic Agent: 一个统一的、全能的数据采集器。你只需要在服务器上安装这一个程序,它就能根据指令去收集日志、指标、安全事件等各种数据。它取代了过去 Filebeat、Metricbeat 等多个单一功能的采集器。
  • Fleet: 内置于 Kibana 的一个中央管理工具。它像一个“指挥中心”,你可以在这里统一管理成百上千个 Elastic Agent,为它们下发采集策略,监控它们的健康状态。
  • Fleet Server: 一个拥有特殊身份的 Elastic Agent。它扮演着“总指挥”的角色,是其他普通 Agent 的管理者和数据中转站。普通 Agent 不直接连接 Elasticsearch,而是向 Fleet Server 汇报,再由 Fleet Server 将数据转发。因此,部署任何监控系统的第一步,都是先拥有一个健康的 Fleet Server。

我们的部署架构很简单:在一台服务器上,同时运行 Nginx 和一个扮演“总指挥”角色的 Fleet Server Agent。

1. Kibana 核心配置

1.1 修复 Kibana 加密密钥

原理讲解: Kibana 内部需要存储一些敏感信息,例如告警规则中可能包含的密码、API 密钥等。为了安全,这些信息必须被加密。Kibana 要求管理员必须提供一个加密密钥,否则很多依赖此功能的操作(包括我们后续的一些配置)都会弹窗报错。

image-20250709213239927

操作步骤:

  1. 进入 Kibana 的 bin 目录(通常在 /usr/share/kibana/bin)。

  2. 运行 Kibana 自带的工具,自动生成密钥并添加到配置文件中。

    # 切换到 Kibana 的 bin 目录
    cd /usr/share/kibana/bin
    
    # 运行生成密钥的命令
    sudo ./kibana-encryption-keys generate
    
  3. 为了让新配置生效,必须重启 Kibana 服务

    sudo systemctl restart kibana
    

🚩 避坑指南: 如果在后续操作中频繁遇到“提取数据时出错”或“missing encryption key”的弹窗,请务必回到这一步,确保加密密钥已正确生成并重启了 Kibana。

2. 安装 Fleet Server

2.1 在 Kibana 生成安装命令

  1. 登录 Kibana,从左侧主菜单进入 管理 (Management) -> Fleet
  2. 此时页面会有一个醒目的黄色警告提示“Fleet 服务器尚未正常运行”。请点击 “添加 Fleet 服务器” 按钮。
  3. 创建策略: Kibana 会引导你为这个“总指挥”创建一个管理策略。你可以直接使用默认的名称 Fleet Server Policy,然后点击 “创建代理策略”
  4. 获取命令: 在接下来的页面中,Kibana 会为你生成一段专属的、包含了认证信息和连接地址的安装命令。这就是我们要在服务器上执行的命令。

2.2 避开网络“潜规则”

在复制命令之前,请务必检查 Kibana 生成的 Fleet Server 主机地址。

🚩 避坑指南 #1:端口冲突 Kibana 有时会默认推荐使用 443 端口。但这个端口通常已经被我们的 Nginx 网站服务占用了。两个程序不能监听同一个端口。

解决方案: 在当前页面找到“高级选项”,将主机 URL 中的端口从 :443 修改为 Elastic Agent 默认的 :8220。修改后,下方的安装命令会自动更新。

🚩 避坑指南 #2:云服务器防火墙 即使端口号正确,云服务器的安全组(防火墙)默认也不会开放 8220 端口。

解决方案: 登录云服务商控制台(如阿里云、腾讯云等),找到服务器实例,进入其“安全组”配置。添加一条入站规则,允许所有来源 (0.0.0.0/0) 的流量访问 TCP 8220 端口。

2.3 在服务器上执行安装

现在,我们终于可以放心地在服务器上执行安装了。

下载并解压 Agent 安装包

# 下载(请从官网获取对应你版本的链接)
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.8.1-linux-x86_64.tar.gz

# 解压
tar xzvf elastic-agent-8.8.1-linux-x86_64.tar.gz

# 进入目录
cd elastic-agent-8.8.1-linux-x86_64

2.4 验证 Fleet Server 健康状态

安装成功后,回到 Kibana Fleet 界面。耐心等待一到两分钟,页面会自动刷新。当黄色的警告消失,并且你在代理列表中看到一个状态为运行正常 的 Agent 时,恭喜你,最艰难的一步已经完成!

image-20250710100342603

3. 让 Agent 监控 Nginx

现在我们的“总指挥”已经就位,下一步就是告诉它:“嘿,去帮我盯着 Nginx!”

原理讲解: Elastic Agent 的强大之处在于,你不需要为 Nginx 再装一个新的 Agent。你只需要在 Kibana 中,为你现有的 Agent 正在使用的策略里,添加一个“Nginx 集成”即可。Fleet 会自动将这个新任务下发给 Agent,Agent 收到后就会开始工作。

3.1 在策略中添加 Nginx 集成

  1. 在 Kibana 的 Fleet 页面,点击你的 Agent 正在使用的策略名称(例如 Fleet Server Policy)。
  2. 进入策略详情页,点击右上角的 “添加集成 (Add integration)”
  3. 在弹出的市场中,搜索 Nginx,并点击它。
  4. 为这个集成起一个名字(如 my-blog-nginx),然后点击 “保存并添加集成 (Save and add integration)”

步骤 3.2: 精确配置日志路径

这是决定成败的关键一步。

🚩 避坑指南 #4:日志路径不匹配 Agent 必须知道去哪里找 Nginx 的日志文件。如果路径配置错误,Agent 就会“扑个空”,你自然也看不到任何数据。

解决方案:先侦察,再配置。

  1. 在服务器上找出 Nginx 的真实日志路径:

    # 这个命令会搜索 Nginx 所有配置文件,找出 access_log 和 error_log 的位置
    grep -ri 'access_log\|error_log' /etc/nginx/
    

    记下输出中的路径,例如 /var/log/nginx/access.log

    image-20250710101030258

  2. 回到 Kibana 的 Nginx 集成配置页面,向下滚动,找到 Nginx logs 部分。确保 Access log pathError log path 输入框中的路径,与你刚刚找到的真实路径完全一致

    image-20250710101120539

  3. 确认无误后,点击页面最下方的 “保存并部署更改 (Save and deploy changes)”

4. 在仪表盘查看数据

经过前面的精心部署,我们的日志数据流已经成功建立。服务器上的 Elastic Agent 正在不知疲倦地读取 Nginx 日志,并通过 Fleet Server 将它们源源不断地送入 Elasticsearch。现在,是时候在 Kibana 中见证我们的劳动成果了。

4.1 查看预置的 Nginx 仪表盘

Elastic Nginx 集成最棒的一点,就是它自带了一套非常全面、开箱即用的仪表盘。我们无需任何配置,就能立即开始分析。

  1. 导航至主仪表盘列表

    • 点击 Kibana 左上角的主菜单图标 (☰)
    • 在菜单中,找到 Analytics 分类,然后点击下方的 仪表盘 (Dashboard)

    image-20250710101600156

  2. 搜索并打开 Nginx 仪表盘

    • 在主仪表盘页面的搜索框中,输入 Nginx
    • 系统会列出所有相关的仪表盘。我们重点关注的是:
      • [Logs Nginx] Access and error logs: 专注于访问和错误日志的详细分析。
      • [Metrics Nginx] Overview: 如果你配置了指标采集,这里会展示性能相关的度量。
    • 点击 [Logs Nginx] Access and error logs 进入。

    image-20250710101721169

  3. 调整时间范围,让数据“现身”

    • 仪表盘默认可能只显示“过去15分钟”的数据。由于数据采集和索引有一定延迟,你很可能会看到一个空的仪表盘。
    • 请找到仪表盘右上角的时间范围选择器,选择一个更长的时间范围,例如 “今天” 或 “过去1小时”。
    • 最后点击旁边的刷新按钮。

稍等片刻,仪表盘上的图表、地图和表格就会被你的网站数据填充起来!你可以直观地看到访问来源的地理分布、热门的 URL、各种 HTTP 状态码的占比、客户端类型等丰富信息。

4.2 打造你自己的仪表盘

预置的仪表盘非常强大,但有时你可能想关注一些特定的指标,或者以不同的方式展示数据。Kibana 提供了非常灵活的自定义功能。

  1. 进入编辑模式 在任何仪表盘的顶部,都有一个 “编辑” 按钮。点击它,仪表盘就会进入可编辑状态,所有的面板周围都会出现边框,可以随意拖动和缩放。
  2. 添加新的可视化面板
    • 在编辑模式下,点击顶部的 “创建可视化”
    • Kibana 会推荐使用 Lens 编辑器,这是一个非常直观、拖拽式的图表创建工具。
    • 选择数据源:在左侧,选择 logs-nginx.access-* 这个数据视图。
    • 创建图表
      • 比如,我们想看“访问量最高的10个IP地址”。
      • 只需将左侧字段列表中的 source.ip 拖拽到主编辑区的“水平轴”上。
      • Lens 会自动为你生成一个显示 Top 10 IP 的柱状图。
      • 你可以在右侧的菜单中轻松切换图表类型,比如换成“饼图”或“表格”。
    • 创建完成后,点击 “保存并返回 (Save and return)”,这个新的面板就会被添加到你的仪表盘中。
  3. 编辑现有面板
    • 在编辑模式下,将鼠标悬停在任何一个已有的面板上,点击右上角出现的“齿轮”图标,选择 “编辑可视化 (Edit visualization)”,就可以对它进行修改。
  4. 保存你的杰作 完成所有修改后,不要忘记点击仪表盘顶部的 “保存 (Save)” 按钮,来保存你的自定义布局。

image-20250710104913785

通过这几个简单的步骤,你就可以把预置的仪表盘改造成最符合你个人需求的。

结语

相信通过本指南,我们可以成功部署一套功能强大的 Nginx 日志监控系统,同时也掌握了一系列关键的排错技能。从今天起,你的网站流量、用户行为、潜在错误都将在你的掌控之中。

阅读量: 67

评论区

登录后发表评论

正在加载评论...
相关阅读

Elasticsearch 入门指南

# Elasticsearch 入门指南:从零到一构建搜索引擎 在成功部署了 Elasticsearch 和 Kibana 后,如果还有不会安装的可以查看这篇[文章](https://hive...

164
1

Gemini for Google Workspace 提示工程指南101 报告

# **Gemini for Google Workspace 提示工程指南101 报告** ## **引言** Google Workspace 最初的设计理念便是促进人与人之间的实时协作...

238
2