• 利用ELK搭建Docker容器化应用日志中心


    利用ELK搭建Docker容器化应用日志中心

    概述

    应用一旦容器化以后,需要考虑的就是如何采集位于Docker容器中的应用程序的打印日志供运维分析。典型的比如 SpringBoot应用的日志 收集。本文即将阐述如何利用ELK日志中心来收集容器化应用程序所产生的日志,并且可以用可视化的方式对日志进行查询与分析,其架构如下图所示:


    镜像准备

    • ElasticSearch镜像

    • docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    • Logstash镜像

    • Kibana镜像

    • docker pull kibana:6.6.0
    • Nginx镜像(作为容器化应用来生产日志)


    开启Linux系统Rsyslog服务

    修改Rsyslog服务配置文件:

    1. vim /etc/rsyslog.conf

    开启下面三个参数:

    1. $ModLoad imtcp

    2. $InputTCPServerRun 514

    3. *.* @@localhost:4560

    意图很简单:让Rsyslog加载imtcp模块并监听514端口,然后将Rsyslog中收集的数据转发到本地4560端口!

    然后重启Rsyslog服务:

    1. systemctl restart rsyslog

    查看rsyslog启动状态:

    1. netstat -tnl


    部署ElasticSearch服务

    1. docker run -d  -p 9200:9200

    2. -v ~/elasticsearch/data:/usr/share/elasticsearch/data

    3. --name elasticsearch elasticsearch


    部署Logstash服务

    添加 ~/logstash/logstash.conf 配置文件如下:

    1. input {

    2.  syslog {

    3.    type => "rsyslog"

    4.    port => 4560

    5.  }

    6. }

    7. output {

    8.  elasticsearch {

    9.    hosts => [ "elasticsearch:9200" ]

    10.  }

    11. }

    配置中我们让Logstash从本地的Rsyslog服务中取出应用日志数据,然后转发到ElasticSearch数据库中!

    配置完成以后,可以通过如下命令来启动Logstash容器:

    1. docker run -d -p 4560:4560

    2. -v ~/logstash/logstash.conf:/etc/logstash.conf

    3. --link elasticsearch:elasticsearch

    4. --name logstash logstash

    5. logstash -f /etc/logstash.conf


    部署Kibana服务

    1. docker run -d -p 5601:5601

    2. --link elasticsearch:elasticsearch

    3. -e ELASTICSEARCH_URL=http://elasticsearch:9200

    4. --name kibana kibana


    启动nginx容器来生产日志

    1. docker run -d -p 90:80 --log-driver syslog --log-opt

    2. syslog-address=tcp://localhost:514

    3. --log-opt tag="nginx" --name nginx nginx

    很明显Docker容器中的Nginx应用日志转发到本地syslog服务中,然后由syslog服务将数据转给Logstash进行收集。

    至此,日志中心搭建完毕,目前一共四个容器在工作:

    实验验证

    • 浏览器打开 localhost:90来打开Nginx界面,并刷新几次,让后台产生GET请求的日志

    • 打开Kibana可视化界面: localhost:5601

    • 收集Nginx应用日志

    • 查询应用日志

    在查询框中输入 program=nginx可查询出特定日志

  • 相关阅读:
    js组件常用封装方法。。。。。【组件封装】 ★★★★★★ 1月会员日 集人气【弹窗】
    以后开公司用的资源瞎记录
    SpringSecurityFilter 链
    分布式系统数据一致性的6种方案(转)
    统一日志监控系统 springboot websocket 作品
    MyBatis generator 使用方式 小结
    swagger and restful api 参考
    kafka linux 启动脚本 sample
    转 CAS实现SSO单点登录原理
    江南白衣 Java性能优化PPT
  • 原文地址:https://www.cnblogs.com/Python-K8S/p/13212212.html
Copyright © 2020-2023  润新知