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

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.xdnf.cn/news/16919.html

相关文章:

  • [硬件电路-144]:模拟电路 - 开关电源与线性稳压电源常见的性能指标对比
  • Android设备认证体系深度解析:GMS/CTS/GTS/VTS/STS核心差异与认证逻辑
  • 【连接器专题】连接器做为固定连接介质的三种分类
  • 问题集000
  • Go语言常量
  • CAP 理论笔记
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第四天(DOM编程和AJAX异步交互)
  • Mysql深入学习:InnoDB执行引擎篇
  • K8S几种常见CNI深入比较
  • Vue+SpringBoot+langchain4j实战案例:实现AI消息问答 及 Markdown打字机渲染效果
  • C语言与数据结构:从基础到实战
  • 基于 Spring Boot + Vue 实现人脸采集功能全流程
  • 大模型智能体(Agent)技术全景:架构演进、协作范式与应用前沿
  • Selenium Web 自动化
  • 【AI论文】ScreenCoder:通过模块化多模态智能体推动前端自动化中的视觉到代码生成技术发展
  • 【Django】-9- 单元测试和集成测试(上)
  • 使用 Spring Initializr 生成项目结构:Java 开发效率提升指南
  • centos9 安装docker engine
  • react native中markdown添加数学公式的支持
  • 【大模型核心技术】Agent 理论与实战
  • 【项目日志|苍穹外卖】 Day1:项目环境搭建与架构设计
  • 【Excel】利用函数和Power Query进行数据分析
  • NX969NX972美光固态闪存NX975NX977
  • Java,八股,cv,算法——双非研0四修之路day24
  • javaweb开发之Servlet笔记
  • Android 优化 - 日志 Log
  • 【MySQL进阶】------MySQL程序
  • 自动驾驶控制算法——LQR控制算法
  • MySQL极简安装挑战
  • MySQL事务与存储引擎的学习(一)