Kibana
Kibana 是 Elasticsearch 技术栈(ELK Stack)中的可视化工具,主要用于浏览、搜索和可视化存储在 Elasticsearch 中的数据。通过 Kibana,用户可以创建仪表盘、生成图表、设置数据监控告警,并进行日志分析等操作。它与 Elasticsearch 集成良好,能够通过简单的点击操作或查询语言(如 Kibana Query Language,KQL)对数据进行分析和展示。
Kibana 是一个功能强大的数据可视化和分析工具,尤其适用于处理和展示 Elasticsearch 中的数据。通过与 Beats、Logstash 的结合,它能够提供端到端的数据采集、处理、存储和展示服务。Kibana 的易用性和可扩展性使得它在日志分析、系统监控、安全审计、业务数据分析等场景中广泛应用。
Kibana 的核心功能和特点
数据可视化(Visualization):
- 图表和图形:Kibana 提供各种类型的图表,如柱状图、饼图、折线图、区域图、散点图等,帮助用户可视化 Elasticsearch 中的数据。用户可以从多个维度(如时间、字段)展示数据。
- 地图:Kibana 提供地理数据的可视化支持,允许通过 GeoJSON 或 Elasticsearch 中的地理位置数据进行地图展示和分析。
- Lens:这是 Kibana 中的交互式工具,用户可以通过拖拽字段轻松构建图表,实时查看数据的变化。Lens 大大降低了可视化的门槛。
仪表盘(Dashboard):
- 仪表盘是 Kibana 中的一项核心功能,允许用户将多个图表、地图、搜索结果等整合到一个页面中,形成实时的综合视图。仪表盘可以用来监控业务指标、系统性能、错误日志等。
- 用户可以动态过滤和交互,帮助快速发现数据中的趋势和异常。
日志管理与分析(Log Management and Analysis):
- 日志可视化:Kibana 提供实时日志监控和搜索功能,用户可以通过 Kibana 的界面直接查看 Elasticsearch 中存储的日志,并使用查询语言过滤出特定的日志条目。
- Elastic Observability:结合 Beats 和 Logstash,Kibana 能够实现实时的日志、系统监控、应用性能分析等功能,是 DevOps 团队和系统管理员常用的工具。
Canvas:
- Canvas 是一种高级的数据可视化工具,允许用户通过自定义设计图表、背景和数据展示方式,制作高度个性化和美观的报表。Canvas 支持实时动态数据展示。
告警与监控(Alerts and Monitoring):
- Kibana 可以设置告警规则,帮助用户在数据满足特定条件时自动发送告警通知。告警可以通过邮件、Slack、Webhook 等方式发送,适用于日志监控、系统状态监控等场景。
- Elastic Observability 套件还包含 APM(应用性能监控)功能,能追踪应用程序中的性能问题、错误等。
安全与访问控制(Security and Access Control):
- 通过 Elastic Security,Kibana 提供了安全信息和事件管理(SIEM)功能,用于监控和分析安全事件。
- Kibana 支持基于角色的访问控制(RBAC),允许管理员对不同用户分配不同权限,确保数据的安全性和隐私性。
机器学习(Machine Learning):
- Kibana 中的机器学习功能(Elastic ML)能够自动检测数据中的异常和模式变化,例如日志中的异常活动或业务指标中的突变。它能帮助用户提前发现潜在问题,如系统故障或安全威胁。
- 通过无监督学习模型,Kibana 可以实时检测数据中的异常,不需要提前定义规则。
查询语言(Kibana Query Language,KQL):
KQL 是 Kibana 内置的一种查询语言,用于在界面中进行数据过滤和搜索。它与 Elasticsearch Query DSL 不同,更加简化,适合非技术人员快速上手。
示例:
kql 复制代码 status: "error" and response_time > 500
该查询会过滤出
status
字段为
"error"
且
response_time
大于 500 的文档。
时间序列数据分析(Time Series Analysis):
- Kibana 支持时间序列数据的分析和可视化,适合于监控系统性能、业务指标等随时间变化的数据。借助 Kibana 的 TSVB(Time Series Visual Builder),用户可以轻松创建复杂的时间序列图表,并实时查看变化趋势。
Kibana 的应用场景
- 日志管理与分析: Kibana 是 DevOps 和 SRE(Site Reliability Engineering)团队常用的日志分析工具,通过 Filebeat 和 Logstash,将应用程序或服务器的日志数据传送到 Elasticsearch,然后通过 Kibana 进行可视化和搜索。用户可以实时监控日志并设置告警规则。
- 安全监控: Kibana 的 SIEM 和 Elastic Security 可以帮助安全团队检测安全威胁和监控网络攻击。通过机器学习功能,Kibana 可以自动发现异常行为。
- 业务数据分析: 数据分析人员可以使用 Kibana 对 Elasticsearch 中的数据进行分析,生成业务指标报表,如销售数据分析、用户行为分析等。
- 系统监控: 运维人员可以使用 Kibana 结合 Metricbeat 监控系统性能,追踪 CPU、内存、磁盘使用等指标,帮助识别系统瓶颈。
Kibana 的架构
- 前端:Kibana 是一个基于浏览器的应用,前端通过 React.js 实现,提供交互式的图形界面,用户可以直接在浏览器中操作 Kibana。
- 后端:Kibana 后端与 Elasticsearch 交互,将查询发送到 Elasticsearch 集群并返回数据进行展示。所有的数据存储和计算都依赖于 Elasticsearch。
使用 Kibana 的基本步骤
- 连接 Elasticsearch:Kibana 需要连接到一个 Elasticsearch 集群才能开始工作。用户可以在 Kibana 配置文件中指定 Elasticsearch 的地址。
- 创建索引模式(Index Pattern):在使用 Kibana 之前,用户需要创建一个索引模式,用于告诉 Kibana 从哪些 Elasticsearch 索引中读取数据。
- 探索数据(Discover):使用 Discover 功能,用户可以浏览 Elasticsearch 中的数据,进行简单的搜索和过滤。
- 创建可视化(Visualize):使用 Kibana 提供的各种图表创建可视化,将数据展示出来。
- 构建仪表盘(Dashboard):将多个可视化组件放到一个仪表盘上,实现数据的统一展示。
- 设置告警(Alerts):根据业务需求,设置告警规则并监控关键指标。
实战安装
(1)下载软件包
wget ......../kibana-7.17.5-x86_64.rpm
(2)安装kibana
rpm -ivh kibana-7.17.5-x86_64.rpm
(3)修改kibana配置文件
vim /etc/kibana/kibana.yml
...
# 指定kibana监听的主机地址,默认是localhost。
server.host: "0.0.0.0"
# 指定kibana连接ES集群地址
elasticsearch.hosts: ["http://10.0.0.101:9200","http://10.0.0.102:9200","http://10.0.0.103:9200"]
# 指定kibana的界面为中文简体,默认是英文。
i18n.locale: "zh-CN"
(4)启动kibana
systemctl enable --now kibana
(5)访问kibana界面
http://10.0.0.101:5601/