监控相关
ZABBIX安装与使用
自动发现与自动注册
配置文件
分布式监控
zabbix_sender安装和使用
zabbix_get安装与使用
自定义监控
自动发现监控json
PERCONA插件
PERCONA多实例
日志监控
相关项目监控
监控MySQL
监控Haproxy
Fluentd日志监控
Grafana(可视化监控指标)
grafana地图插件
添加prometheus模板
开启HTTPS
添加zabbix插件
Grafana模板
正则表达式
Prometheus监控
安装与使用
Prometheus存储
服务发现
Prometheus标签
PromQL查询
PushGateway推送组件
AlertManager告警组件
告警规则rule
K8S监控(kube-state-metric/cadvisor)
探针监控(blackbox_exporter)
Node_export
Mysql_export
Redis-exporter
cloudeye-exporter【华为云监控】
RabbitMQ-exporter
K8S监控
本文档使用MrDoc发布
返回首页
-
+
cloudeye-exporter【华为云监控】
2024年6月20日 13:55
admin
#参考资料 https://github.com/huaweicloud/cloudeye-exporter/blob/br_release_sdk_v3/README_cn.md --- #原理 ![](/media//202406/2024-06-20134307569297.png) --- 基于ELB监控指标的弹性伸缩具体实施方案如下所示: 开发一个Prometheus exporter,获取ELB的指标,并转化成Prometheus需要的格式,上报到Prometheus。本文使用cloudeye-exporter作为示例。 将Prometheus的数据转换成Kubernetes metric api提供给HPA controller使用。 设置HPA规则,使用ELB的监控数据作为弹性伸缩指标。 --- #拓展标签支持情况 ####该插件对于已对接云监控的云服务均支持指标数据的导出。为提高云服务资源的识别度、可读性,插件对于以下服务支持导出资源属性label,如ECS实例会增加hostname、ip等label,同时支持将华为云标签转化为label,满足对资源自定义label的诉求,具体如下: |云服务|命名空间|支持通过实例TAG增加标签|标签数据来源 |--|--|--|-- |弹性云服务器|SYS.ECS/AGT.ECS|√|RMS/云服务 |云硬盘|SYS.EVS|√|RMS/云服务 |分布式缓存服务|SYS.DCS|√|RMS |云专线|SYS.DCAAS|√|RMS |弹性公网IP和带宽|SYS.VPC|√|RMS |云搜索服务|SYS.ES|√|RMS |关系型数据库|SYS.RDS|√|RMS |弹性负载均衡|SYS.ELB|√|云服务 |云数据库 GaussDB(for MySQL)|SYS.GAUSSDB|√|RMS |云数据库 GaussDB(for openGauss)|SYS.GAUSSDBV5|√|云服务 |NAT网关|SYS.NAT|√|RMS |弹性伸缩|SYS.AS|√|RMS |函数工作流|SYS.FunctionGraph|√|RMS |数据复制服务|SYS.DRS|√|RMS |Web应用防火墙|SYS.WAF|√|RMS |文档数据库服务|SYS.DDS|√|云服务 |API网关|SYS.APIG|×|云服务 |云备份|SYS.CBR|√|RMS/云服务 |数据湖探索|SYS.DLI|√|RMS&云服务 |弹性文件服务|SYS.SFS|×|云服务 |弹性文件服务 SFS Turbo|SYS.EFS|√|RMS |虚拟专用网络|SYS.VPN|√|RMS |云数据迁移|SYS.CDM|×|云服务 |数据仓库服务|SYS.DWS|√|云服务 |内容审核Moderation|SYS.MODERATION|×|- |Anti-DDoS流量清洗|SYS.DDOS|√|RMS |云数据库GaussDB(for Nosql)|SYS.NoSQL|×|云服务 |分布式消息服务|SYS.DMS|√|RMS |分布式数据库中间件|SYS.DDMS|×|RMS&云服务 |API专享版网关|SYS.APIC|×|云服务 |裸金属服务器|SYS.BMS/SERVICE.BMS|√|RMS |ModelArts|SYS.ModelArts|√|RMS |VPC终端节点|SYS.VPCEP|√|RMS |图引擎服务GES|SYS.GES|√|RMS |数据库安全服务DBSS|SYS.DBSS|√|RMS |MapReduce服务|SYS.MRS|√|RMS/云服务 |湖仓构建服务|SYS.LakeFormation|√|RMS/云服务 |智能数据湖运营平台|SYS.DAYU|√|云服务 |云防火墙|SYS.CFW|√|RMS |对象存储|SYS.OBS|√|RMS --- #构建exporter镜像 ####git项目 mkdir -p cloudeye-exporter cd cloudeye-exporter git clone http://github.com/huaweicloud/cloudeye-exporter ####编写Dockerfile cd cloudeye-exporter vim dockerfile --- FROM ubuntu:18.04 WORKDIR /app COPY cloudeye-exporter /app/cloudeye-exporter #CMD ls -lh /app/cloudeye-exporter CMD ["/app/cloudeye-exporter/cloudeye-exporter", "-config=/app/cloudeye-exporter/clouds.yml"] --- #指标说明 #OBS https://support.huaweicloud.com/usermanual-obs/obs_03_0010.html#ZH-CN_TOPIC_0000001960566477 --- #构建镜像 docker build --network host . -t cloudeye-exporter:1.0 --- #部署exporter ####Prometheus中常用的annotations如下: prometheus.io/scrape:true表示该资源会作为监控目标。 prometheus.io/path:采集的url,默认为/metrics。 prometheus.io/port:采集endpoint的端口号。 prometheus.io/scheme:默认为http,如果为了安全设置了https,此处需要改为https。 --- ##创建Secret,cloudeye-exporter将使用该Secret进行认证。 ####创建clouds.yml文件,文件内容如下: vim clouds.yml --- global: prefix: "huaweicloud" scrape_batch_size: 10 auth: auth_url: "https://iam.cn-east-3.myhuaweicloud.com/v3" project_name: "cn-east-3" access_key: "********" secret_key: "***********" region: "cn-east-3" --- 其中: auth_url:IAM终端节点,可通过地区和终端节点获取。 project_name:项目名称。您可在“我的凭证”页面,前往“项目列表”区域查看项目名称和项目ID。 access_key和secret_key:可通过访问密钥获取。 region:区域名称,需要与project_name中的项目对应。 --- ####获取上述文件的base64加密内容字符串。 cat clouds.yml | base64 -w0 ;echo --- 回显如下: ICAga***** --- ####创建clouds-secret.yaml文件,其内容如下: vim clouds-secret.yaml --- apiVersion: v1 kind: Secret data: clouds.yml: ICAga***** #替换为base64加密字符串 metadata: annotations: description: '' name: 'clouds.yml' namespace: monitoring #密钥所在的命名空间,需和deployment命名空间保持一致 labels: {} type: Opaque --- ####创建密钥。 kubectl apply -f clouds-secret.yaml --- ####创建cloudeye-exporter-deployment.yaml文件,内容如下: kind: Deployment apiVersion: apps/v1 metadata: name: cloudeye-exporter namespace: monitoring spec: replicas: 1 selector: matchLabels: app: cloudeye-exporter version: v1 template: metadata: labels: app: cloudeye-exporter version: v1 spec: volumes: - name: vol-166055064743016314 secret: secretName: clouds.yml defaultMode: 420 containers: - name: container-1 image: swr.cn-east-3.myhuaweicloud.com/cloud-develop/cloudeye-exporter:1.0 # 上文构建的exporter镜像地址 command: - /cloudeye-exporter/cloudeye-exporter - '-config=/tmp/clouds.yml' resources: {} volumeMounts: - name: vol-166055064743016314 readOnly: true mountPath: /tmp terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: IfNotPresent restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst securityContext: {} imagePullSecrets: - name: default-secret schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% revisionHistoryLimit: 10 progressDeadlineSeconds: 600 --- ####创建上述工作负载。 kubectl apply -f cloudeye-exporter-deployment.yaml --- ####创建cloudeye-exporter-service.yaml文件。 vim cloudeye-exporter-service.yaml --- apiVersion: v1 kind: Service metadata: name: cloudeye-exporter namespace: monitoring labels: app: cloudeye-exporter version: v1 annotations: prometheus.io/port: '8087' #采集endpoint的端口号 prometheus.io/scrape: 'true' #设置为true表示该资源会作为监控目标 prometheus.io/path: "/metrics" #采集的url,默认为/metrics prometheus.io/scheme: "http" #默认为http,如果为了安全设置了https,此处需要改为https spec: ports: - name: cce-service-0 protocol: TCP port: 8087 targetPort: 8087 selector: app: cloudeye-exporter version: v1 type: ClusterIP ####创建上述Service。 --- kubectl apply -f cloudeye-exporter-service.yaml --- #对接Prometheus ####查看需要监控的工作负载访问方式,获取ELB监听器ID。 在CCE集群控制台中,选择左侧“服务发现”,在“服务”或“路由”页签下查看负载均衡类型的Service或Ingress,单击对应的负载均衡器名称跳转至ELB页面。 ![](/media//202406/2024-06-20135648837287.png) 在“监听器”页面,查看工作负载所对应的监听器,并复制该监听器ID。 ![](/media//202406/2024-06-20135701697286.png) --- ####prometheus添加配置 - job_name: elb_metric params: services: ['SYS.ELB'] kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep regex: '8087' source_labels: - __meta_kubernetes_service_annotation_prometheus_io_port - action: replace regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:$2 source_labels: - __address__ - __meta_kubernetes_service_annotation_prometheus_io_port target_label: __address__ - action: labelmap regex: __meta_kubernetes_service_label_(.+) - action: replace source_labels: - __meta_kubernetes_namespace target_label: kubernetes_namespace - action: replace source_labels: - __meta_kubernetes_service_name target_label: kubernetes_service
分享到: