热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

基于华为云的k8s+elk项目,使用kibana,页面展示,分析k8s集群日志

项目背景: 此项目使用elk来展示分析k8s集群产生的日志。k8s集群是apache网站,将apache产生的日记信息通过filebeat传递给logstash-elastics

项目背景: 此项目使用elk来展示分析k8s集群产生的日志。k8s集群是apache网站,将apache产生的日记信息通过filebeat传递给logstash -> elasticsearch -> kibana, 然后页面展示及分析。此项目将apache制作的网站以及elasticsearch集群和kibana发布至公网。

项目最终实现的架构图:

主机准备及配置:

 

Phase 1, 部署Harbor私有仓库

为了简洁,单独一个随笔:部署Harbor私有仓库 - 小白白bai - 博客园 (cnblogs.com)

Phase 2, K8S集群环境部署

K8S集群环境部署 - 小白白bai - 博客园 (cnblogs.com)

Phase 3, Elasticsearch集群环境部署并发布

Elasticsearch集群环境部署并发布 - 小白白bai - 博客园 (cnblogs.com)

Phase 4, Kibana服务部署

Kibana是一款开源的数据分析和可视化平台,它是Elastic Stack成员之一。可以使用Kibana对Elasticsearch索引中的数据进行搜索、查看、交互操作。可利用图表、表格等对数据进行多元化的分析和显现。

1,安装kibana软件包
[root@kibana ~]# yum -y install kibana

2,更改kibana服务配置文件
[root@kibana ~]# vim /etc/kibana/kibana.yml
server.port: 5601 #2行,提供服务的端口。
server.host: "192.168.1.74" #7行,服务器监听地址。
elasticsearch.hosts: ["http://192.168.1.71:9200"] #28行,用于查询es实例主机地址,集群里面任选一个
即可。

3,启动服务器并查看端口是否启用
[root@knbana ~]# systemctl enable --now kibana
[root@kibana ~]# netstat -antpu | grep 5601
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 8840/node

 4,将kibana服务器的5601端口发布出来;访问kibana界面:http://公网IP:5601 

 

 

Phase 5, 制作Apache和filebeat镜像,并上传至Harbor仓库

制作Apache和filebeat镜像,并上传至Harbor仓库 - 小白白bai - 博客园 (cnblogs.com)

Phase 6, 编写apachelog.yaml资源清单文件 (一个pod包括两个容器,并使用持久化存储,hostpath)

从私有仓库harbor中pull镜像的时候,k8s集群使用类型为docker-registry的Secret进行认证。
现在创建一个Secret,名称为regcred:
master主机认证,登录harbor
[root@master
~]# kubectl create secret docker-registry regcred --docker-server=192.168.1.100:80
--docker-username=admin --docker-password=Harbor12345
查看regcred的详细信息,其中.dockerconfigjson的值包含了登录harbor的用户名和密码等信息
[root@master
~]# kubectl get secret regcred --output=yaml
通过以下命令进行查看:
[root@master
~]# kubectl get secret regcred --output="jsOnpath={.data.\.dockerconfigjson}" | base64 -d

1,编写apachelog.yaml资源清单文件

[root@master ~]# vim apachelog.yaml
---
kind: Deployment
apiVersion: apps
/v1
metadata:
name: weblog
spec:
selector:
matchLabels:
myapp: weblog
replicas:
1
template:
metadata:
labels:
myapp: weblog
spec:
volumes:
#
- name: empty-data
# emptyDir: {}
- name: log-data
hostPath:
path:
/var/weblog
type: DirectoryOrCreate
containers:
- name: apache
image:
192.168.1.100:80/library/myos:httpd
volumeMounts:
#
- name: empty-data
# mountPath:
/var/cache
- name: log-data
mountPath:
/var/log/httpd
ports:
- protocol: TCP
containerPort:
80
- name: filebeat-backend
image:
192.168.1.100:80/library/myos:filebeat
volumeMounts:
- name: log-data
mountPath:
/var/weblog
restartPolicy: Always
imagePullSecrets:
- name: regcred

2,创建资源

[root@master ~]# kubectl apply -f apachelog.yaml 

3,查看在哪台机器上面启动,就去哪台机器上面看日志
[root@master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
weblog-688dd9768c-vwkbs 1/1 Running 0 4m24s 10.244.3.4 node-0002

[root@node-0002 ~]# ls /var/weblog/
access_log error_log
[root@node-0002 ~]# cat /var/weblog/access_log

Phase 7, 安装部署logstash服务1.75并配置logstash配置文件

1,装包
[root@logstash ~]# yum -y install logstash
2,配置logstash
[root@logstash ~]# vim /etc/logstash/logstash.conf
input{
stdin{ codec => "json" }
beats{
port => 5044
}
}

filter{
if [type] == "apache_log" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
}

output{
stdout{ codec => "rubydebug" }
if [type] == "apache_log" {
elasticsearch {
index => "apache"
hosts => ["es-0001:9200","es-0002:9200","es-0003:9200"]
}
}
}
3,启服务
[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/logstash.conf

Phase 8, 验证



推荐阅读
  • Flume 数据采集组件
    目录1、数据收集工具系统产生背景2、专业的数据收集工具2.1、Chukwa2.2、Scribe2.3、Fluentd2.4、Logstash2.5、ApacheFlu ... [详细]
  • 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http:blog.csdn.netjiangjunshow也欢迎大家转载本篇文章。分 ... [详细]
  • 在本周的白板演练中,Apache Flink 的 PMC 成员及数据工匠首席技术官 Stephan Ewen 深入探讨了如何利用保存点功能进行流处理中的数据重新处理、错误修复、系统升级和 A/B 测试。本文将详细解释保存点的工作原理及其应用场景。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 深入解析Spark核心架构与部署策略
    本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
  • Kubernetes 1.9.0 Alpha.1 发布公告 [Kubernetes 最新动态]
    近日,Kubernetes 社区发布了两个新版本:1.8.0 RC.1 和 1.9.0 Alpha.1。这是 k8s 1.9.0 的首次发布,自 v1.8.0 Alpha.3 以来进行了大量更新,共提交了 279 次。 ... [详细]
  • 检查 Kubernetes 系统命名空间中的 Pod 状态时,发现 Metric Server Pod 虽然处于运行状态,但存在异常:日志显示 'it doesn’t contain any IP SANs'。 ... [详细]
  • 如何安全有效地强制移除Kubernetes Pod
    在Kubernetes集群管理中,有时需要安全且高效地强制移除Pod以解决故障或进行维护。本文介绍了在遇到难以终止的Pod时,如何通过正确的方法进行强制删除,同时确保不影响集群的稳定性和其他服务的正常运行。通过具体的操作步骤和最佳实践,帮助读者掌握处理此类问题的有效方法。 ... [详细]
  • 简短的问题是:是否可以从远程服务器中提取日志(在日志文件中)并将其提取到 ... [详细]
  • ELK stack 学习记录
    ELK日志分析平台学习记录首先ELK主要指elasticsearch、logstash和kibana,三个开源软件组合而成的一套日志平台解决方案。可以将平时收集到的日志,通过前台展 ... [详细]
  •                               前言日志,一直以来都是开发人员和运维人员最关心的问题。开发人员可通过日志记录来协助问题定位,运维人员可通过日志发现系统隐 ... [详细]
  • ELK+filebeat安装部署监控springboot日志
    ELK服务器端部署1.安装dockercompose,略2.配置docker-compose.ymlcdrootelkvidocker-compose.ymlversion:&am ... [详细]
  • 搞懂 ELK 并不是一件特别难的事
    点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!本篇文章主要介绍ELK的一些框架组成,原理和实践&#x ... [详细]
author-avatar
杯莫停
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有