开发者社区> 问答> 正文

Kubernetes 集群 日志管理 为 Kubernetes 和日志服务配置 Log4JAppender

Log4j 是 Apache 的一个开放源代码项目。Log4j 由三个重要组件构成:日志信息的优先级、日志信息的输出目的地、日志信息的输出格式。通过配置 Log4jAppender,您可以控制日志信息输送的目的地是控制台、文件、GUI 组件、甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等。
本文介绍在不需要修改应用代码的前提下,通过配置一个 yaml 文件,将阿里云容器服务 Kubernetes 集群中产生的日志输出到阿里云日志服务。此外,通过在 Kubernetes 集群上部署一个示例 API 程序,来进行演示。

前提条件


  • 您已经开通容器服务,并且创建了 Kubernetes 集群。
    本示例中,创建的 Kubernetes 集群位于华东 1 地域。
  • 启用 AccessKey 或 RAM,确保有足够的访问权限。本例中使用 AccessKey。


步骤 1 在阿里云日志服务上配置 Log4jAppender

  1. 登录 日志服务管理控制台
  2. 单击页面右上角的创建 Project,填写 Project 的基本信息并单击确认进行创建。
    本示例创建一个名为 k8s-log4j,与 Kubernetes 集群位于同一地域(华东 1)的 Project。

Note:[font=PingFangSC, "]在配置时,一般会使用与 Kubernetes 集群位于同一地域的日志服务 Project。因为当 Kubernetes 集群和日志服务 Project 位于同一地域时,日志数据会通过内网进行传输,从而避免了因地域不一致而导致的数据传输外网带宽费用和耗时,从而实现实时采集、快速检索的最佳实践。



3. 创建完成后,k8s-log4j 出现在 project 列表下,单击该 project 名称,进入 project 详情页面。
4. 默认进入日志库页面,单击右上角的创建。
5. 填写日志库配置信息并单击确认。
本示例创建名为 k8s-logstore 的日志库。


6. 创建完毕后,页面会提示您创建数据接入向导。


7. 选择自定义数据下的log4jAppender,根据页面引导进行配置。
本示例使用了默认配置,您可根据日志数据的具体使用场景,进行相应的配置。


步骤 2 在 Kubernetes 集群中配置 log4j


本示例使用 demo-deploymentdemo-Service 示例 yaml 文件进行演示。
  1. 连接到您的 Kubernetes 集群。
    具体操作参见SSH 访问 Kubernetes 集群通过 kubectl 连接 Kubernetes 集群
  2. 获取demo-deployment.yaml文件并配置环境变量 JAVA_OPTS 设置 Kubernetes 集群日志的采集。
    demo-deployment.yaml 文件的示例编排如下。

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: log4j-appender-demo-spring-boot
  labels:
    app: log4j-appender
spec:
  replicas: 1
  selector:
    matchLabels:
      app: log4j-appender
  template:
    metadata:
    labels:
      app: log4j-appender
  spec:
    containers:
    - name: log4j-appender-demo-spring-boot
      image: registry.cn-hangzhou.aliyuncs.com/jaegertracing/log4j-appender-demo-spring-boot:0.0.2
      env:
      - name: JAVA_OPTS                ##注意
        value: "-Dproject={your_project} -Dlogstore={your_logstore} -Dendpoint={your_endpoint} -Daccess_key_id={your_access_key_id} -Daccess_key={your_access_key_secret}"
      ports:
      - containerPort: 8080
其中:
  • -Dproject:您所使用的阿里云日志服务 Project 的名称。本示例中为 k8s-log4j。
  • -Dlogstore:您所使用的阿里云日志服务 Logstore 的名称。本示例中为 k8s-logstore。
  • -Dendpoint:日志服务的服务入口,用户需要根据日志 Project 所属的地域,配置自己的服务入口,参见服务入口进行查询。本示例中为 cn-hangzhou.log.aliyuncs.com。
  • -Daccess_key_id:您的 AccessKey ID。
  • -Daccess_key:您的 AccessKey Secret。

3.  在命令行中执行以下命令,创建 deployment。
kubectl create -f demo-deployment.yaml
4. 获取demo-Service.yaml文件,并运行以下命令创建 service。
您不需要修改demo-Service.yaml中的配置。
kubectl create -f demo-service.yaml

步骤 3 测试生成 Kubernetes 集群日志


您可以使用 kubectl get 命令查看资源对象部署状况,等待 deployment 和 service 部署成功后,执行 kubectl get svc 查看 service 的外部访问 IP,即 EXTERNAL-IP。 $ kubectl get svc
NAME                      TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)          AGE
log4j-appender-demo-spring-boot-svc   LoadBalancer   172.21.XX.XX   120.55.XXX.XXX   8080:30398/TCP   1h
在本示例中,通过运行login命令来测试生成 Kubernetes 集群日志。其中 K8S_SERVICE_IP 即为 EXTERNAL-IP。

Note: [font=PingFangSC, "]您可以在 GitHub log4j-appender-demo 中查看完整的 API 集合。 [font=PingFangSC, "] curl http://${K8S_SERVICE_IP}:8080/login?name=bruce


步骤 4 在阿里云日志服务中查看日志


登录 日志服务管理控制台。进入对应的 Project 的详情页面,选择对应的日志库 k8s-logstore,并单击右侧的 查询分析 - 查询,查看 Kubernetes 集群输出的日志
[font=PingFangSC, "]
日志的输出内容对应上面的命令。本示例演示了将示例应用产生的日志输出到阿里云日志服务的操作。通过这些操作,您可以在阿里云上配置 Log4JAppender,并通过阿里云日志服务,实现日志实时搜集、数据过滤、检索等高级功能。
[font=PingFangSC, "]

展开
收起
青蛙跳 2018-08-18 13:52:13 2106 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
ACK 云原生弹性方案—云原生时代的加速器 立即下载
ACK集群类型选择最佳实践 立即下载
企业运维之云原生和Kubernetes 实战 立即下载