ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

日志收集案例-容器内置日志收集

2022-09-10 16:00:50  阅读:215  来源: 互联网

标签:filebeat 内置 收集 tomcat app 192.168 usr 日志 root


       在容器内安装filebeat服务进程,收集当前容器的业务容器日志

       流程图

  1、构建tomcat容器镜像

root@deploy:/dockerfile/tomcat/ cat Dockerfile 
FROM harbor.cncf.net/baseimages/jdk:1.8.191
  
MAINTAINER LXH

ADD apache-tomcat-8.5.43.tar.gz /usr/local

RUN ln -sv /usr/local/apache-tomcat-8.5.43 /usr/local/tomcat

ADD start.sh /usr/local/tomcat/bin

ENTRYPOINT ["/usr/local/tomcat/bin/start.sh"]

 

  2、创建tomcat服务启动脚本

root@deploy:/dockerfile/tomcat/ cat start.sh 
#!/bin/bash
/usr/local/tomcat/bin/catalina.sh start
tail -f /usr/local/tomcat/logs/catalina.out

 

  3、创建tomcat站点文件

root@deploy:/dockerfile/tomcat/ cat apache-tomcat-8.5.43/webapps/myapp/index.html 
test page

 

  4、引用tomcat镜像构建filebeat镜像

root@deploy:/dockerfile/project/app-filebeat/ cat Dockerfile 
FROM harbor.cncf.net/web/tomcat:8.5.43

ADD filebeat-7.12.1-amd64.deb /tmp
RUN cd /tmp/ && dpkg -i filebeat-7.12.1-amd64.deb
ADD filebeat.yml /etc/filebeat/filebeat.yml
ADD filebeat.sh /
ENTRYPOINT ["/filebeat.sh"]

 

  5、tomcat镜像构建脚本

root@deploy:/dockerfile/project/app-filebeat/ cat /dockerfile/tomcat/build.sh 
#!/bin/bash
DIR=$(pwd)
docker build -t harbor.cncf.net/web/tomcat:8.5.43 $DIR
docker push harbor.cncf.net/web/tomcat:8.5.43

 

  6、创建filebeat启动脚本

root@deploy:/dockerfile/project/app-filebeat/ cat filebeat.sh 
#!/bin/bash
/usr/local/tomcat/bin/catalina.sh start
sleep 3s
/usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat -path.data /var/lib/filebeat -path.logs /var/log/filebeat &
tail -f /usr/local/tomcat/logs/catalina.out

 

  7、创建filebeat服务配置文件

root@deploy:/dockerfile/project/app-filebeat/ cat filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/local/tomcat/logs/catalina.out   #获取tomat catalina.out日志
  tags: ["catalinalog"]
  multiline.pattern: '^\d{2}' #\d匹配数字开头,数字为2位
  multiline.negate: true
  multiline.match: after
  multiline.max_lines: 10000   #最大的合并行数,默认合并的数量为500

  
- type: log
  enabled: true
  paths:
    - /usr/local/tomcat/logs/localhost_access_log.*.txt  #获取tomcat访问日志
  tags: ["accesslog"]
  json.keys_under_root: true   #Flase会将json解析的格式存储至messages,改为true则不存储至message
  json.overwrite_keys: true   #覆盖默认message字段,使用自定义json格式的key

 
output.kafka:
  hosts: ["192.168.100.103:9092","192.168.100.102:9092","192.168.100.103:9092"]
  topic: "tomcatlog"
  partition.round_robin:
    reachable_only: false
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000

  8、filebeat镜像构建脚本

root@deploy:/dockerfile/project/app-filebeat/ cat build.sh 
#!/bin/bash
TAG=$1
docker build -t  harbor.cncf.net/project/tomcat-app1:${TAG} .
docker push  harbor.cncf.net/project/tomcat-app1:${TAG}

 

  9、kafka创建主题

[root@zookeeper1 ~]/ kafka-topics.sh --bootstrap-server zookeeper1:9092 --create --partitions 1 --replication-factor 3 --topic tomcatlog

 

  10、创建tomcat容器k8s yaml

root@deploy:/dockerfile/project/app-filebeat/ cat tomcat-filebeat.yml 
kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    app: tomcat
  name: tomcat-deployment
  namespace: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: harbor.cncf.net/project/tomcat-app1:1.0
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
          protocol: TCP
          name: http
        resources:
          limits:
            cpu: 1
            memory: "512Mi"
          requests:
            cpu: 500m
            memory: "512Mi"

 

  11、创建tomcat容器svc

root@deploy:/dockerfile/project/app-filebeat/ cat tomcat-service.yaml 
---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: tomcat
  name: tomcat
  namespace: test
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
    nodePort: 30180
  selector:
    app: tomcat

 

  浏览器访问:

      

   kafkatools查看主题消息

      

   12、配置logstash

[root@logstash ~]/ vim /etc/logstash/conf.d/tomcat.conf
input {
  kafka {
    bootstrap_servers => "192.168.100.101:9092,192.168.100.102:9092,192.168.100.103:9092"   #生产者kafka地址
    topics => ["tomcatlog"]             #消费主题
    codec => "json"
  }
}

output {
    if "catalinalog" in [tags] {
      elasticsearch {
        hosts => ["http://192.168.100.70:9200","192.168.100.71:9200","192.168.100.72:9200"]
        manage_template => false
        index => "tomcat-catalinalog-%{+yyyy.MM.dd}"
      }
    }
    if "accesslog" in [tags] {
      elasticsearch {
        hosts => ["http://192.168.100.70:9200","192.168.100.71:9200","192.168.100.72:9200"]
        manage_template => false
        index => "tomcat-accesslog-%{+yyyy.MM.dd}"
      }
    }
}

 

       重启logstash

[root@logstash ~]/ systemctl restart logstash

 

  查看ES,两个类型的日志索引

      

  13、配置kibana创建索引模式

       创建访问日志索引模式

      

  创建catalina输出日志索引模式

      

  查看访问日志

      

  查看catalina日志

 

标签:filebeat,内置,收集,tomcat,app,192.168,usr,日志,root
来源: https://www.cnblogs.com/punchlinux/p/16676746.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有