在Azure云上通过Helm Chart部署SLS-Kibana

本文主要扩展SLS-Kibana Helm Chart在多云场景下的安装方法。在微软Azure云平台上,可通过Helm工具部署名为sls-kibanaHelm Chart(部署包),以此在Azure环境中运行日志分析与可视化系统(包含Kibana及相关组件)。本文向您介绍在Azure上构建日志分析系统的操作步骤。

操作步骤

如果您是阿里云ACK环境,请参考对接Kibana

  1. 创建并编辑values.yaml文件,内容如下,请根据实际情况修改。

    kibana:
      serviceType: ClusterIP # 对应service中的Type,可设ClusterIP,LoadBalancer
    #  serviceAnnotation: # 对应serviceannotation
    #    service.beta.kubernetes.io/azure-load-balancer-internal: 'true'
    #    service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "xxx-subnet"
      ingressClass: nginx # 根据实际安装的ingress controller修改, 如果为空表示不使用ingress
      ingressDomain: #可以为空,如果需要通过域名访问kibana,可以设置该值
      ingressPath: /kibana/ # 必填,访问时的子路径
      # 如果ingressDomain非空, 那么ingressPath支持设置为/
      #i18nLocale: en # 设置Kibana的语言,默认为英文,如果需要中文可以设置值为zh-CN
    
    elasticsearch:
      password: aStrongPass  # 请根据实际情况修改es的密码,同时也是kibana的访问密码,对应账号为elastic
      diskStorageSize: 16Gi
      diskStorageClassName: managed-csi # 设置storageClass名称
      
    repository:
      region: cn-hangzhou
      # 镜像所在区域,中国固定设置为cn-hangzhou 海外固定设置为ap-southeast-1;会使用公网拉取镜像
    
    sls:
      - project: k8s-log-c5****** # slsproject
        endpoint: cn-huhehaote.log.aliyuncs.com # sls project对应的endpoint
        accessKeyId: 具有sls访问权限的accessKeyId
        accessKeySecret: 具有sls访问权限的accessKeySecret
      #  alias: etl-logs # 可选,如果觉得project名在kibana中显示太长,可以设置别名
      #  kibanaSpace: default  # 可选,指定index pattern创建在哪个space下; 不存在则自动创建
      #  logstoreFilters: "*" # 可选,过滤哪些logstore自动创建index pattern创建,多个pattern用逗号分隔,比如 "access*,error*",注意加上双引号。
    
      # 如果有第二个继续按上面的格式添加
      #- project: etl-dev2 # slsproject
      #  endpoint: cn-huhehaote.log.aliyuncs.com # sls project对应的endpoint
      #  accessKeyId: 具有sls访问权限的accessKeyId
      #  accessKeySecret: 具有sls访问权限的accessKeySecret
      #  alias: etl-logs2 # 可选,如果觉得project名在kibana中显示太长,可以设置别名
      #  kibanaSpace: default  # 可选,指定index pattern创建在哪个space下; 不存在则自动创建
      #  logstoreFilters: "*" # 可选,过滤哪些logstore自动创建index pattern创建,多个pattern用逗号分隔,比如 "access*,error*",注意加上双引号
    
    #kproxy:
    #  maxAllowTimeRangeSeconds: 900 # 限制允许查询的时间范围,默认不限制

    参数说明

    说明

    kibana.ingressClass

    根据实际安装的ingress controller修改,查看组件的步骤请参见管理组件

    • ALB Ingress Controller:设置为alb

    • MSE Ingress Controller:设置为mse

    • Nginx Ingress Controller:设置为nginx

    kibana.ingressDomain

    可以为空,如果需要通过域名访问kibana,需要设置该值。

    repository.region

    镜像所在区域,中国固定设置为cn-hangzhou,海外固定设置为ap-southeast-1,会使用公网拉取镜像。

    kibana.ingressPath

    访问时的子路径。如果ingressDomain非空,那么ingressPath支持设置为/

    elasticsearch.password

    请根据实际情况修改Elasticsearch的密码,同时也是Kibana的访问密码,Elasticsearch账号为elastic

    sls.project

    日志服务的Project名称,请参见管理Project

    sls.endpoint

    Project的访问域名,请参见管理Project

    sls.accessKeyId

    前提条件中创建的RAM用户的AK。RAM用户需要具备Logstore的查询权限,请参见RAM授权

    sls.accessKeySecret

    前提条件中创建的RAM用户的SK。RAM用户需要具备Logstore的查询权限,请参见RAM授权

    sls.alias

    可选,如果Project名在Kibana中显示太长,可以设置别名。

    sls.kibanaSpace

    可选,指定索引模式(index pattern)创建在哪个space下, 不存在则自动创建。

    sls.logstoreFilters

    可选,过滤哪些logstore自动创建index pattern,多个index pattern用逗号分隔,比如 "access*,error*",注意加上双引号。

  2. 创建命名空间(Namespace)。

    kubectl create namespace sls-kibana
  3. 执行安装命令。

    helm install sls-kibana \
     https://sls-kproxy.oss-cn-hangzhou.aliyuncs.com/sls-kibana-1.5.5.tgz \
      -f values.yaml --namespace sls-kibana

常见问题

如何卸载helm?

helm uninstall sls-kibana --namespace sls-kibana

Kibana中如何显示高精度时间?

  1. 确保SLS中的时间使用高精度时间采集或上报,通过配置 纳秒精度时间戳 ,支持纳秒级精度时间戳。

  2. 在确保高精度时间采集后,需在字段索引中添加类型为long__time_ns_part__纳秒字段索引。由于Kibana的部分查询可能被转换为SQL执行,因此需要在SQL结果中包含高精度时间。

如何升级Helm Chart?

Helm Chart升级和install类似,把install命令换成upgrade即可。values.yaml可以复用之前install时的文件。

helm upgrade sls-kibana https://sls-kproxy.oss-cn-hangzhou.aliyuncs.com/sls-kibana-1.5.5.tgz -f values.yaml --namespace sls-kibana