Kibana 仪表板可视化配置教程
Kibana 是 ELK Stack 中的可视化组件,提供强大的日志搜索、分析和仪表板功能。通过 Kibana 你可以快速查找特定日志、分析访问趋势和构建运维监控大屏。本文将介绍 Kibana 的核心功能和仪表板配置方法。
一、访问与初始设置
Kibana 默认监听 5601 端口,通过浏览器访问 http://你的IP:5601。如果使用 ELK Docker Compose 部署,Kibana 应该已经自动连接到 Elasticsearch。
1.1 创建数据视图
在使用 Kibana 之前,需要先创建数据视图(Data View)来指定要查询的索引:
- 进入「Management」→「Stack Management」→「Kibana」→「Data Views」。
- 点击「Create data view」。
- Name:设置名称,如「Filebeat Logs」。
- Index pattern:输入
filebeat-*匹配所有 Filebeat 索引。 - Timestamp field:选择
@timestamp。 - 点击「Save data view to Kibana」。
二、Discover 日志搜索
Discover 是 Kibana 中最常用的功能,用于实时搜索和浏览日志。
2.1 基本搜索
在搜索栏中使用 KQL(Kibana Query Language):
# 搜索包含关键字的日志
message: "error"
# 精确匹配字段值
http.response.status_code: 404
# 范围查询
http.response.status_code >= 400 and http.response.status_code < 600
# 通配符搜索
source.ip: "192.168.*"
# 组合查询
log.level: "error" and host.name: "bwg-vps-01"
# 否定查询
not message: "health check"
2.2 时间范围筛选
点击右上角的时间选择器,可以选择预设时间范围(最近 15 分钟、1 小时、24 小时等),也可以自定义起止时间。
2.3 字段过滤
在左侧字段列表中,点击字段名旁的「+」号添加到显示列。常用字段:
message:日志原始内容。log.level:日志级别。host.name:来源主机名。source.ip:来源 IP。
三、Lens 可视化
Lens 是 Kibana 推荐的可视化编辑器,支持拖拽式操作:
3.1 创建可视化
- 进入「Visualize Library」→「Create visualization」→ 选择「Lens」。
- 从左侧字段列表拖拽字段到工作区域。
- Lens 会自动推荐合适的图表类型。
3.2 常用图表类型
- 柱状图:展示日志按时间分布,如每小时的请求数或错误数。
- 饼图:展示日志类型分布,如 HTTP 状态码占比。
- 折线图:展示指标随时间的变化趋势。
- 数据表:展示详细的统计数据。
- 指标(Metric):展示单个数值,如总请求数、错误率。
四、创建仪表板
进入「Dashboard」→「Create dashboard」:
4.1 添加面板
- 点击「Add panel」可以新建可视化或从已有的可视化库中添加。
- 也可以添加 Saved Search(保存的搜索)直接展示日志流。
4.2 推荐的仪表板布局
- 顶部概览:Metric 面板展示总请求数、错误率、平均响应时间。
- 中部趋势:折线图展示请求量和错误数的时间趋势。
- 下部详情:表格展示 Top 10 URL、Top 10 IP、最新错误日志。
4.3 添加筛选器
在仪表板顶部可以添加全局筛选器,所有面板会自动应用:
- 点击「Add filter」选择字段和条件。
- 也可以在搜索栏中输入 KQL 查询。
五、常用日志分析场景
5.1 Nginx 访问日志分析
启用 Filebeat 的 Nginx 模块后,Kibana 会自动创建对应的仪表板。也可以手动创建:
- 请求量趋势图:按 @timestamp 分桶的柱状图。
- 状态码分布:按 http.response.status_code 分组的饼图。
- Top 10 请求路径:按 url.path 聚合的数据表。
- 访客地理分布:使用 GeoIP 数据的地图可视化。
5.2 安全日志分析
- SSH 登录失败统计:搜索
system.auth.ssh.event: "Failed"。 - 登录失败来源 IP 排行:按 source.ip 聚合。
- 暴力破解检测:短时间内同一 IP 多次登录失败。
六、配置 Nginx 反向代理
server {
listen 443 ssl http2;
server_name kibana.your-domain.com;
ssl_certificate /etc/letsencrypt/live/kibana.your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kibana.your-domain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5601;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffer_size 128k;
proxy_buffers 4 256k;
}
}
七、导出与分享
- 分享链接:点击仪表板右上角的分享图标,生成快照链接或短链接。
- 导出 PDF/PNG:需要安装 Reporting 插件后可导出仪表板为图片或 PDF。
- 导出保存对象:在「Stack Management」→「Saved Objects」中导出仪表板的 JSON 定义。
八、Kibana 空间管理
Kibana Spaces 可以将仪表板和可视化按用途隔离:
- 进入「Stack Management」→「Kibana」→「Spaces」。
- 创建不同的空间,如「运维」「安全」「开发」。
- 每个空间有独立的仪表板和数据视图。
九、常见问题
Kibana 加载缓慢
调整 Elasticsearch 的查询超时和 Kibana 的缓冲区大小:
# kibana.yml
elasticsearch.requestTimeout: 60000
elasticsearch.shardTimeout: 30000
仪表板图表无数据
确认数据视图的索引模式是否正确,时间范围是否覆盖了有数据的时段。在 Discover 中先验证能否搜索到数据。
总结
Kibana 的可视化和搜索能力是 ELK Stack 的核心价值所在。配合 Filebeat 收集日志,你可以构建强大的日志分析平台。如果资源有限,也可以考虑 Grafana Loki 作为轻量替代方案。选购搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。