目录
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-->索引模式-->创建索引。