zoukankan      html  css  js  c++  java
  • K8S上的ELK和应用日志上报实战

    来源:DevOps

    ID:Idevops168

    本次实战的基础结构如下图所示: 

    一共有两个Pod:ELK和web应用;

    ELK的Pod会暴露两个服务,一个暴露logstash的5044端口,给filebeat用,另一个暴露kibana的5601端口,给搜索日志的用户访问的时候用;

    web应用暴露一个服务,给用户通过浏览器访问;

    实战步骤简介

    部署ELK的pod和服务;

    部署web应用的pod和服务;

    web应用的pod从一个扩展为三个;

    体验ELK;

    部署ELK

    我们从ELK Sever开始部署吧: 

    1. ssh登录到可以执行kubectl命令的机器上去; 

    2. 创建elk的部署脚本elkhost.yaml,内容如下:

    如上所示,暴露了两个端口:kibana的5601和logstash的5044; 

    3. 在elkhost.yaml所在目录执行命令kubectl create -f elkhost.yaml,即可创建elk对应的pod,如下:

    4. 将kibana的5601端口以NodePort的方式对外暴露,这样外部就可以通过节点IP地址来访问kibana服务了,创建部署脚本elkkibana-svc.yaml,kibana的服务通过node节点的30001端口对外暴露,内容如下:

    5. 将logstash的5044端口以ClusterIP的方式对外暴露,这样其他pod的filebeat就可以通过服务名加5044端口来访问logstash服务了,创建部署脚本elkhost-svc.yaml,logstash的服务通过5044端口对K8S内部的pod暴露,内容如下:

    6. 在elkhost-svc.yaml所在目录执行命令kubectl create -f elkhost-svc.yaml && kubectl create -f elkkibana-svc.yaml,即可创建elkhost和elkkibana这两个服务,如下:

    7. 执行命令查看elkhost的pod部署在K8S的哪个node节点上:

    如上所示,Node: willzhao-vostro-3267/192.168.31.89显示了这个pod部署的节点IP是192.168.31.89; 

    8. 打开浏览器,输入192.168.31.89:30001,即可访问到Kibana服务,如下图: 

    部署应用

    ELK Sever已经OK,接下来部署web应用: 

    1. 创建elkwebdemo的部署脚本elkwebdemo.yaml,内容如下:

     

    2. 在elkwebdemo.yaml所在目录执行命令kubectl create -f elkwebdemo.yaml,即可创建elk对应的pod,如下:

     

    3. 创建elk对外服务的部署脚本elkwebdemo-svc.yaml,web的服务通过node节点的30002端口对外暴露,内容如下:

     

    5. 在elkwebdemo-svc.yaml所在目录执行命令kubectl create -f elkwebdemo-svc.yaml,即可创建elkwebdemo对应的pod,如下:

     

    6. 执行命令查看elkwebdemo的pod部署在K8S的哪个node节点上:

     

    如上所示,Node: willzhao-vostro-3267/192.168.31.89显示了这个pod部署的节点IP是192.168.31.89; 

    7. 打开浏览器,输入http://192.168.31.89:30002/hello/tom,即可访问到web服务,如下图: 

     

    设置kibana

    再次打开kibana页面,如下图所示,点击红框中的“Discover”,发现已经搜集到了上报的日志,如绿框所示: 

     

    如下图设置: 

     

    继续设置,如下图: 

     

    再此点击左上角的”Discover”,既可开始搜索web应用日志,如下图: 

     

    web应用扩容

    现在我们模拟生产环境的在线扩容: 

    1. 将web应用从一个扩展到三个,执行以下命令:

     

    2. 可以看到web应用对应的pod已经扩展了,如下所示:

     

    3. 为了能多上报一些日志,在浏览器上多刷新几次这个地址:http://192.168.31.89:30002/hello/tom 
    4. 回到kibana页面,如下图,点击红框中的“host”,展开的信息显示,这些日志来自三个host: 

     

    5. 打开K8S的dashboard页面看一下容器信息,如下图,可以见到三个web容器的hostname和kibana中的host是一样的:

     

  • 相关阅读:
    【报错问题】mysql无法使用别名查询
    【报错问题】java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode
    【源码】-springboot 启动后立马执行的方式
    【LINUX】$搭配使用的含义
    【JAVA】javaMail附件名超过60显示错误
    【Gradle】简单入门
    慢SQL案例之一
    【Flink】一. 什么是Flink?
    【spring基础】环境的搭建与后台
    [org.apache.common][打算学习开源工具包]
  • 原文地址:https://www.cnblogs.com/magedu/p/10640762.html
Copyright © 2011-2022 走看看