当前位置: 首页 > news >正文

K8S部署ELK(五):集成Kibana实现日志可视化

目录

1. Kibana 简介

1.1 主要功能

1.2 核心组件

1.3 主要特点

1.4 典型应用场景

1.5 主要优势

1.6 简单使用示例

2. 部署Kibana

2.1 创建Namespace

2.2 创建Service

2.2 创建ConfigMap

2.3 创建Deployment

2.4 部署所有资源

2.5 检查Pod状态

3. Kibana界面配置

3.1 访问Kibana

3.2 创建索引

3.3 展示数据


1. Kibana 简介

Kibana 是一个开源的数据可视化和分析平台,是 Elastic Stack(原 ELK Stack)的核心组件之一,专门设计用于与 Elasticsearch 协同工作。

1.1 主要功能

  1. 数据可视化:创建丰富的图表、仪表板和交互式报表

  2. 数据探索:通过直观界面查询和分析 Elasticsearch 中的数据

  3. 日志分析:与 Logstash 和 Beats 配合进行日志管理和分析

  4. 应用监控:通过 APM 功能监控应用程序性能

  5. 机器学习:提供异常检测和预测分析功能

1.2 核心组件

  1. Discover:原始数据浏览和搜索界面

  2. Visualize:创建各种可视化图表(柱状图、饼图、热图等)

  3. Dashboard:将多个可视化组合成交互式仪表板

  4. Canvas:创建像素完美的信息展示板

  5. Maps:地理空间数据分析

  6. Machine Learning:异常检测和预测分析

  7. APM:应用性能监控

  8. Dev Tools:开发者工具(包含 Console 用于直接与 ES 交互)

1.3 主要特点

  • 直观的 Web 界面:基于浏览器的用户友好界面

  • 实时分析:数据变化几乎实时反映在可视化中

  • 高度可定制:支持自定义可视化插件和仪表板

  • 强大的查询能力:支持 Lucene 查询语法和 Kibana Query Language (KQL)

  • 安全集成:支持基于角色的访问控制

1.4 典型应用场景

  1. 日志分析和故障排查

  2. 业务指标监控和报告

  3. 应用性能监控(APM)

  4. 网络安全分析

  5. 物联网(IoT)数据分析

  6. 运营智能和业务分析

1.5 主要优势

  1. 与 Elasticsearch 深度集成:专为 Elasticsearch 设计,提供最佳性能

  2. 丰富的可视化类型:从简单图表到复杂地理空间可视化

  3. 交互式仪表板:支持钻取和下钻分析

  4. 时间序列分析:特别适合处理时间序列数据

  5. 警报功能:可以设置基于条件的警报通知

1.6 简单使用示例

  1. 连接到 Elasticsearch 索引

  2. 在 Discover 中探索原始数据

  3. 使用 Visualize 创建柱状图显示错误日志随时间变化

  4. 将多个可视化组合到 Dashboard

  5. 设置当错误率超过阈值时触发警报

Kibana 是企业级数据分析和可视化的强大工具,特别适合需要从大规模数据中提取洞察的场景,是日志分析、业务智能和运维监控的理想解决方案。

2. 部署Kibana

2.1 创建Namespace

kubectl create namespace elk

2.2 创建Service

vim kibana-service.yaml
apiVersion: v1
kind: Service
metadata:name: kibananamespace: elk
spec:selector:app: kibanatype: NodePortports:- port: 5601targetPort: 5601nodePort: 30601

2.2 创建ConfigMap

vim kibana-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: kibana-confignamespace: elk
data:kibana.yml: |server.port: 5601server.host: "0.0.0.0"elasticsearch.hosts: ["http://elasticsearch-0.elasticsearch-cluster.elk.svc.cluster.local:9200"]kibana.index: ".kibana"logging.dest: /usr/share/kibana/logs/kibana.logi18n.locale: "zh-CN"server.publicBaseUrl: "http://kibana.elk.svc.cluster.local:5601"

2.3 创建Deployment

vim kibana-deployment.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:name: kibananamespace: elk
spec:replicas: 1selector:matchLabels:app: kibanatemplate:metadata:labels:app: kibanaspec:affinity:nodeAffinity:  #资源有限,这里配置节点亲和性,尽量调度到node1节点preferredDuringSchedulingIgnoredDuringExecution:- weight: 100preference:matchExpressions:- key: node-role.kubernetes.io/control-planeoperator: DoesNotExist  # 排除 Master 节点containers:- name: kibanaimage: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/kibana:7.17.3ports:- containerPort: 5601env:- name: ELASTICSEARCH_HOSTSvalue: "http://elasticsearch-0.elasticsearch-cluster.elk.svc.cluster.local:9200"volumeMounts:- name: configmountPath: /usr/share/kibana/config/kibana.ymlsubPath: kibana.yml- name: logsmountPath: /usr/share/kibana/logsresources:requests:cpu: "200m"memory: "500Mi"limits:cpu: "500m"memory: "1Gi"livenessProbe:httpGet:path: /api/statusport: 5601initialDelaySeconds: 30periodSeconds: 10volumes:- name: configconfigMap:name: kibana-config- name: logsemptyDir: {}

2.4 部署所有资源

[root@master1 Kibana]# ls
kibana-configmap.yaml  kibana-deployment.yaml  kibana-service.yaml
[root@master1 Kibana]# kubectl apply -f ./
configmap/kibana-config created
deployment.apps/kibana created
service/kibana created

2.5 检查Pod状态

[root@master1 Kibana]# kubectl get pod -n elk 
NAME                        READY   STATUS    RESTARTS      AGE
elasticsearch-0             1/1     Running   1 (41m ago)   21h
filebeat-6db9l              1/1     Running   1 (41m ago)   22h
filebeat-qllxg              1/1     Running   1 (42m ago)   22h
filebeat-r5hw7              1/1     Running   1 (42m ago)   22h
kafka-0                     1/1     Running   1 (42m ago)   21h
kibana-86f8465644-grxzd     1/1     Running   0             34s
logstash-6d88fd886d-2cg9p   1/1     Running   0             13m

3. Kibana界面配置

3.1 访问Kibana

查看NodePort

[root@master1 Kibana]# kubectl get svc -n elk 
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
elasticsearch           NodePort    10.103.12.46     <none>        9200:31409/TCP      21h
elasticsearch-cluster   ClusterIP   None             <none>        9200/TCP            21h
kafka-headless          ClusterIP   None             <none>        9092/TCP,9093/TCP   21h
kibana                  NodePort    10.100.76.108    <none>        5601:30601/TCP      5m19s
logstash                ClusterIP   10.100.103.152   <none>        5044/TCP            18m

访问:http://192.168.48.10:30601

3.2 创建索引

打开左侧导航栏,依次点击Stack Management-->索引模式-->创建索引。

3.3 展示数据

http://www.dtcms.com/a/312392.html

相关文章:

  • MySQL面试题及详细答案 155道(021-040)
  • 使用Database Navigator插件进行连接sqlite报错invalid or incomplete database
  • 2025年开关电源行业深度解析:从传统应用到新兴赛道的黄金赛道
  • MVC 发布
  • 代码随想录day53图论4
  • trace-cmd记录线程被中断打断的时间
  • 笔试——Day27
  • RabbitMQ面试精讲 Day 10:消息追踪与幂等性保证
  • spring-ai-alibaba 之 graph 槽点
  • 【设计模式】4.装饰器模式
  • 2025-0803学习记录21——地表分类产品的精度验证
  • Github怎么只下载某个目录文件?(Git稀疏检出、GitZip for Github插件、在线工具DownGit)Github下载目录
  • linux2.6 和 unix-v6 源码实验
  • Nginx相关实验(2)
  • 【2025/08/03】GitHub 今日热门项目
  • C# LINQ(LINQ to XML)
  • CAP 理论笔记
  • CUDA杂记--nvcc使用介绍
  • GitHub 趋势日报 (2025年08月02日)
  • 控制建模matlab练习07:比例积分控制-③PI控制器的应用
  • 深入掌握 ExcelJS:Node.js 中强大的 Excel 操作库
  • 小红书开源dots.ocr:单一视觉语言模型中的多语言文档布局解析
  • WebRTC前处理模块技术详解:音频3A处理与视频优化实践
  • ⭐CVPR2025 3D 生成新框架|Kiss3DGen 让 2D 扩散模型玩转 3D 资产生成
  • sqli-labs:Less-26关卡详细解析
  • 【数据迁移】Windows11 下将 Ubuntu 从 C 盘迁移到 D 盘
  • Spring Boot 的事务注解 @Transactional 失效的几种情况
  • MCU中的复位生成器(Reset Generator)是什么?
  • 智能手表项目:原理图
  • kotlin kmp 跨平台环境使用sqldelight