目录
[1. Kibana 简介](#1. Kibana 简介)
[1.1 主要功能](#1.1 主要功能)
[1.2 核心组件](#1.2 核心组件)
[1.3 主要特点](#1.3 主要特点)
[1.4 典型应用场景](#1.4 典型应用场景)
[1.5 主要优势](#1.5 主要优势)
[1.6 简单使用示例](#1.6 简单使用示例)
[2. 部署Kibana](#2. 部署Kibana)
[2.1 创建Namespace](#2.1 创建Namespace)
[2.2 创建Service](#2.2 创建Service)
[2.2 创建ConfigMap](#2.2 创建ConfigMap)
[2.3 创建Deployment](#2.3 创建Deployment)
[2.4 部署所有资源](#2.4 部署所有资源)
[2.5 检查Pod状态](#2.5 检查Pod状态)
[3. Kibana界面配置](#3. Kibana界面配置)
[3.1 访问Kibana](#3.1 访问Kibana)
[3.2 创建索引](#3.2 创建索引)
[3.3 展示数据](#3.3 展示数据)
1. Kibana 简介
Kibana 是一个开源的数据可视化和分析平台,是 Elastic Stack(原 ELK Stack)的核心组件之一,专门设计用于与 Elasticsearch 协同工作。
1.1 主要功能
-
数据可视化:创建丰富的图表、仪表板和交互式报表
-
数据探索:通过直观界面查询和分析 Elasticsearch 中的数据
-
日志分析:与 Logstash 和 Beats 配合进行日志管理和分析
-
应用监控:通过 APM 功能监控应用程序性能
-
机器学习:提供异常检测和预测分析功能
1.2 核心组件
-
Discover:原始数据浏览和搜索界面
-
Visualize:创建各种可视化图表(柱状图、饼图、热图等)
-
Dashboard:将多个可视化组合成交互式仪表板
-
Canvas:创建像素完美的信息展示板
-
Maps:地理空间数据分析
-
Machine Learning:异常检测和预测分析
-
APM:应用性能监控
-
Dev Tools:开发者工具(包含 Console 用于直接与 ES 交互)
1.3 主要特点
-
直观的 Web 界面:基于浏览器的用户友好界面
-
实时分析:数据变化几乎实时反映在可视化中
-
高度可定制:支持自定义可视化插件和仪表板
-
强大的查询能力:支持 Lucene 查询语法和 Kibana Query Language (KQL)
-
安全集成:支持基于角色的访问控制
1.4 典型应用场景
-
日志分析和故障排查
-
业务指标监控和报告
-
应用性能监控(APM)
-
网络安全分析
-
物联网(IoT)数据分析
-
运营智能和业务分析
1.5 主要优势
-
与 Elasticsearch 深度集成:专为 Elasticsearch 设计,提供最佳性能
-
丰富的可视化类型:从简单图表到复杂地理空间可视化
-
交互式仪表板:支持钻取和下钻分析
-
时间序列分析:特别适合处理时间序列数据
-
警报功能:可以设置基于条件的警报通知
1.6 简单使用示例
-
连接到 Elasticsearch 索引
-
在 Discover 中探索原始数据
-
使用 Visualize 创建柱状图显示错误日志随时间变化
-
将多个可视化组合到 Dashboard
-
设置当错误率超过阈值时触发警报
Kibana 是企业级数据分析和可视化的强大工具,特别适合需要从大规模数据中提取洞察的场景,是日志分析、业务智能和运维监控的理想解决方案。
2. 部署Kibana
2.1 创建Namespace
kubectl create namespace elk
2.2 创建Service
vim kibana-service.yaml
apiVersion: v1
kind: Service
metadata:
name: kibana
namespace: elk
spec:
selector:
app: kibana
type: NodePort
ports:
- port: 5601
targetPort: 5601
nodePort: 30601
2.2 创建ConfigMap
vim kibana-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: kibana-config
namespace: elk
data:
kibana.yml: |
server.port: 5601
server.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.log
i18n.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: kibana
namespace: elk
spec:
replicas: 1
selector:
matchLabels:
app: kibana
template:
metadata:
labels:
app: kibana
spec:
affinity:
nodeAffinity: #资源有限,这里配置节点亲和性,尽量调度到node1节点
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: DoesNotExist # 排除 Master 节点
containers:
- name: kibana
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/kibana:7.17.3
ports:
- containerPort: 5601
env:
- name: ELASTICSEARCH_HOSTS
value: "http://elasticsearch-0.elasticsearch-cluster.elk.svc.cluster.local:9200"
volumeMounts:
- name: config
mountPath: /usr/share/kibana/config/kibana.yml
subPath: kibana.yml
- name: logs
mountPath: /usr/share/kibana/logs
resources:
requests:
cpu: "200m"
memory: "500Mi"
limits:
cpu: "500m"
memory: "1Gi"
livenessProbe:
httpGet:
path: /api/status
port: 5601
initialDelaySeconds: 30
periodSeconds: 10
volumes:
- name: config
configMap:
name: kibana-config
- name: logs
emptyDir: {}
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

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

3.3 展示数据
