
# ElasticSearch Exporter接入AOM实现指标监控
#### 应用场景
使用ElasticSearch过程中需要对ElasticSearch运行状态进行监控，例如集群及索引状态等。Prometheus监控服务提供了CCE容器场景下基于Exporter的方式来监控ElasticSearch运行状态。本文介绍如何部署ElasticSearch Exporter以及实现ElasticSearch Exporter告警接入等操作。
#### 约束与限制
为了方便安装管理Exporter，推荐使用云容器引擎CCE进行统一管理。
#### 前提条件
- CCE服务已拥有CCE集群，已安装ElasticSearch。
- 服务已接入可观测Prometheus监控并接入CCE集群，具体请参见[Prometheus实例 for CCE](https://support.huaweicloud.com/usermanual-aom2/mon_01_0073.html)。
- 已将[elasticsearch_exporter](https://github.com/prometheus-community/elasticsearch_exporter)镜像上传到SWR，具体操作请参见[使用容器引擎客户端上传镜像](https://support.huaweicloud.com/qs-swr/index.html)。
 
#### 在CCE集群部署ElasticSearch Exporter
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0#/cce/betaTest)。
2. 单击已接入的CCE集群名称，进入该集群的管理页面。
3. 执行以下操作完成Exporter部署。 
   1. 配置密钥。 在左侧导航栏中选择"配置与密钥"，单击页面右上角"YAML创建"。配置密钥的详细操作可参考[创建密钥](https://support.huaweicloud.com/usermanual-cce/cce_10_0153.html)。
      ElasticSearch连接串的格式为\<proto\>://\<user\>:\<password\>@\<host\>:\<port\>，也可以不设置密码。
      YAML配置示例如下，**密码已按照Opaque加密**：
      ```
      apiVersion: v1
      kind: Secret
      metadata:
        name: es-secret-test
        namespace: default 
      type: Opaque
      stringData:
        esURI: http://124.70.14.51:30920 # 对应 ElasticSearch 的 URI，IP为集群IP或集群任意节点IP
      ```
      
   
   2. 部署ElasticSearch Exporter。
      在左侧导航栏中选择"工作负载"，在右上角单击"创建负载"，选择"负载类型"为无状态工作负载Deployment，选择需要的命名空间部署ElasticSearch Exporter。
      如果以YAML的方式部署Exporter，Exporter更多详细的参数可参考[elasticsearch_exporter](https://github.com/prometheus-community/elasticsearch_exporter)。
      YAML配置示例如下，通过ES_ALL采集了所有ElasticSearch的监控项，也可以通过对应的参数进行调整：
      ```
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          k8s-app: es-exporter # 根据业务需要调整
        name: es-exporter # 根据业务需要调整
        namespace: default # 选择一个适合的 namespace 来部署 Exporter，如果没有需要新建一个
      spec:
        replicas: 1
        selector:
          matchLabels:
            k8s-app: es-exporter # 根据业务需要调整
        template:
          metadata:
            labels:
              k8s-app: es-exporter # 根据业务需要调整
          spec:
            containers:
            - env:
                - name: ES_URI
                  valueFrom:
                    secretKeyRef:
                      name: es-secret-test # 对应上一步中的 Secret 的名称
                      key: esURI # 对应上一步中的 Secret Key
                - name: ES_ALL
                  value: "true"
              image: swr.cn-north-4.myhuaweicloud.com/mall-swarm-demo/es-exporter:1.1.0
              imagePullPolicy: IfNotPresent
              name: es-exporter
              ports:
              - containerPort: 9114
                name: metric-port
              securityContext:
                privileged: false
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
            dnsPolicy: ClusterFirst
            imagePullSecrets:
            - name: default-secret
            restartPolicy: Always
            schedulerName: default-scheduler
            securityContext: {}
            terminationGracePeriodSeconds: 30
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: es-exporter
        name-space: default # 与Exporter部署的namespace相同
      spec:
        type: NodePort
        selector:
          k8s-app: es-exporter
        ports:
          - protocol: TCP
            nodePort: 30921
            port: 9114
            targetPort: 9114
      ```
      
   
   3. 验证ElasticSearch Exporter是否部署成功。
      1. 在工作负载列表中"无状态负载"页签下，单击[3.b]创建的无状态工作负载的名称，在实例列表中单击操作列下的"更多 \> 日志"，可以查看到Exporter成功启动并暴露访问地址。
         图1查看日志   
         ![](https://support.huaweicloud.com/bestpractice-aom2/zh-cn_image_0000001869864130.png "点击放大") 
      
      2. 输入命令验证ElasticSearch Exporter是否部署成功，有指标数据返回则表示ElasticSearch Exporter已部署成功。有以下三种方法进行验证：
         - 登录集群节点执行如下任意一种命令：
           ```
           curl http://{集群IP}:9114/metrics
           ```
           ```
           curl http://{集群任意节点私有IP}:30921/metrics
           ```
           
         
         - 访问地址：http://{集群任意节点的公网IP}:30921/metrics。
           图2访问地址   
           ![](https://support.huaweicloud.com/bestpractice-aom2/zh-cn_image_0000001869704286.png "点击放大") 
         
         
         
         - 在实例列表中单击操作列下的"更多 \> 远程登录"，执行如下命令。
           ```
           curl http://localhost:9114/metrics
           ```
           
          
       
   
   
   
   
 
#### 配置CCE集群指标采集规则
通过"新增PodMonitor"方式为应用配置可观测监控Prometheus版的采集规则，监控部署在CCE集群内的应用的业务数据。
1. 登录[AOM 2.0控制台](https://console.huaweicloud.com/aom2#/aom2/betaTest)。
2. 在左侧菜单栏中选择"Prometheus监控 \> 实例列表"。
3. 在Prometheus实例列表中，单击CCE类型的Prometheus实例名称，进入该实例的详情界面。
4. 在左侧导航栏单击"指标管理"，在"配置"页签下单击"PodMonitor"。
5. 单击"新增PodMonitor"，在弹出的对话框中输入PodMonitor的相关参数信息，然后单击"确定"。 
   采集规则YAML配置样例如下，样例的指标采集的周期是30秒，所以等待大概30秒后才能在AOM的界面上查看到上报的指标：
   ```
   apiVersion: monitoring.coreos.com/v1
   kind: PodMonitor
   metadata:
     name: elasticSearch-exporter
     namespace: default
   spec:
     namespaceSelector: # 选择监控Exporter部署所在的namespace
       matchNames:
         - default # exporter所在的命名空间
     podMetricsEndpoints:
     - interval: 30s # 设置指标采集周期
       path: /metrics # 填写Prometheus Exporter对应的Path的值，默认/metrics
       port: metric-port # 填写Prometheus Exporter对应YAML的ports的name
     selector: # 填写要监控Exporter Pod的Label标签，以定位目标Exporter
       matchLabels:
         k8s-app: elasticSearch-exporter
   ```
   
   
 
#### 验证CCE集群指标上报到AOM
1. 登录[AOM 2.0控制台](https://console.huaweicloud.com/aom2#/aom2/betaTest)。
2. 在左侧菜单栏中选择"Prometheus监控 \> 实例列表"。
3. 单击接入了该CCE集群的"prometheus for CCE"实例名称，进入实例详情页面。
4. 在"指标管理"页面的"指标"页签下，选择对应集群。
5. 选择Job：{namespace}/elasticsearch-exporter，可以查询到elasticsearch开头的自定义指标。
 
#### 在AOM上配置仪表盘和告警
通过仪表盘功能可视化监控CCE集群数据，通过告警规则功能，在集群发生故障时能够及时发现并预警。
- 配置仪表盘图表
  1. 登录[AOM 2.0控制台](https://console.huaweicloud.com/aom2#/aom2/betaTest)。
  
  2. 在左侧菜单栏中选择"仪表盘 \> 仪表盘"，单击"创建仪表盘"新建一个仪表盘，详情可参见[创建仪表盘](https://support.huaweicloud.com/usermanual-aom2/mon_01_0003.html)。
  
  3. 在仪表盘页面选择实例类型为"Prometheus for CCE"的实例并单击"添加图表"，详情请参见[添加图表至仪表盘](https://support.huaweicloud.com/usermanual-aom2/mon_01_0003.html#section2)。
   
- 配置告警
  1. 登录[AOM 2.0控制台](https://console.huaweicloud.com/aom2#/aom2/betaTest)。
  
  2. 在左侧菜单栏中选择"告警中心 \> 告警规则"。
  
  3. 在"Prometheus监控"页签下单击"创建告警规则"配置告警，详情请参见[创建指标告警规则](https://support.huaweicloud.com/usermanual-aom2/mon_01_0008.html)。
   
 
