写点什么

Cloudeye 对接 Prometheus 实现华为云全方位监控

  • 2023-12-21
    广东
  • 本文字数:3127 字

    阅读完需:约 10 分钟

Cloudeye对接Prometheus实现华为云全方位监控

本文分享自华为云社区《Cloudeye对接Prometheus实现华为云全方位监控》,作者:可以交个朋友 。

一、 背景


云眼系统 Cloudeye 服务为我们提供了针对弹性云服务器、宽带等资源的立体化监控平台。帮助我们全面了解华为云上的资源使用情况、业务的运行状况。将华为云 Cloudeye 服务接入 prometheus 后,可以利用 Prometheus 生态更好地监控和分析来自 Cloudeye 服务的数据。


二、 简介


通过使用 cloudeye-exporter,将华为云 Cloudeye 服务与华为云 CCE 集群(Kubernetes 集群)中的 Prometheus 容器进行对接。继而使用 Prometheus 系统对云上资源的性能数据进行运维监控。


注意:该 exporter 仅适用于华为云局点。

三、实践演示


Prometheus 将会以 operator 形式部署在 kubernetes 集群当中。所以也需要制作 cloudeye-exporter 容器镜像,然后容器化部署在 kubernetes 集群中。

3.1 获取 cloudeye-exporter 安装包


1、下载最新版本的 cloudeye-exporter


查看插件 Releases 版本 (https://github.com/huaweicloud/cloudeye-exporter/releases) ,获取 cloudeye-exporter 下载地址,下载解压安装。


mkdir cloudeye-exporter & cd cloudeye-exporter

wget https://github.com/huaweicloud/cloudeye-exporter/releases/download/v2.0.6/cloudeye-exporter.v2.0.6.tar.gz


2、解压


tar -xzvf cloudeye-exporter.v2.0.6.tar.gz


3.2 制作容器镜像


1、需要编写 Dockerfile 文件 这里使用 centos 用作基础镜像


FROM centos  COPY cloudeye-exporter logs.yml metric.yml /root/WORKDIR /rootCMD ["/root/cloudeye-exporter"]
复制代码


2、构建容器镜像


docker build -t swr.cn-north-4.myhuaweicloud.com/k8s-solution/cloudeye-exporter:v2.0.6 --platform=linux/amd64 .



3、推送至镜像仓库


建议使用华为云 SWR 镜像仓库

3.3 配置 cloudeye-exporter 的访问鉴权


1、编辑 clouds.yml 文件配置公有云信息


cloudeye-exporter 启动时需要使用该配置文件进行云服务的访问鉴权


global:  port: ":8087" # 监听端口 :8087代表在全部网络接口上开启监听8087端口,限定内部访问也可以指定IP例如:192.168.1.100:8087  scrape_batch_size: 300auth:  auth_url: "https://iam.cn-north-4.myhuaweicloud.com/v3"  project_name: "cn-north-4" # 华为云项目名称,可以在“华为云->统一身份认证服务->项目”中查看  access_key: "" # IAM用户访问密钥 您可参考3.1章节使用命令行输入加密后的ak sk,避免在配置文件中明文配置AK SK  secret_key: ""  region: "cn-north-4" # 区域ID
复制代码


2、基于该配置文件创建 kubernetes secrets


kubectl create secret generic clouds-exporter --from-file=clouds.yml -n monitoring


容器化部署需要将该配置以 secrets 形式挂载给 cloudeye-exporter

3.4 CCE 集群(k8s 集群)部署 cloudeye-exporter


1、首先部署负载和 service


apiVersion: apps/v1kind: Deploymentmetadata:  name: cloudeye-exporter  namespace: monitoring  labels:    app: cloudeye-exporterspec:  replicas: 1  selector:    matchLabels:      app: cloudeye-exporter  template:    metadata:      labels:        app: cloudeye-exporter    spec:      volumes:        - name: cloudeye          secret:            secretName: clouds-exporter      imagePullSecrets:        - name: default-secret      containers:      - name: cloudeye-exporter        image: swr.cn-north-4.myhuaweicloud.com/k8s-solution/cloudeye-exporter:v2.0.6        ports:          - containerPort: 8087        resources:          limits:            cpu: 500m            memory: 1Gi          requests:            cpu: 100m            memory: 500Mi        volumeMounts:          - name: cloudeye            mountPath: "/root/clouds.yml"            subPath: clouds.yml
---apiVersion: v1kind: Servicemetadata: name: cloudeye-exporter namespace: monitoring labels: app: cloudeye-exporterspec: selector: app: cloudeye-exporter ports: - name: ces targetPort: 8087 #业务监听端口 port: 8087 protocol: TCP type: ClusterIP
复制代码


2、确认是 cloudeye-exporter 否暴露指标


部署成功,查看 Pod 信息。访问 pod 指标端点,确认指标源是否能暴露指标。


curl http://podIP:8087/metrics?services='SYS.VPC'



cloudeye-exporter Pod 实例作为 Prometheus 抓取指标的源端,可以暴露监控数据。


查看 Service,确认访问 Service 能否获取数据



2、注意


需要注意: 由于 cloudeye-exporter 需要访问公网端点: iam.huaweicloud.com。如果您使用的 kuberntes 平台是 CCE turbo 集群,需要对容器网段配置公网 snat。否则指标数据抓取会失败。

3.5 Prometheus 对接 cloudeye-exporter 获取指标


修改 prometheus 中的 prometheus.yml 文件配置。由于现在 k8s 集群中都会采用 prometheus-operator 形态部署 Prometheus。所以我们需要编写 ServiceMonitor 进行指标的获取。


1、以监控华为云 VPC,ELB 服务为例


抓取规则 cloudeye-exporter-servicemonitor.yaml 如下:


apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata:   name: cloudeye-exporter  namespace: monitoring   labels:    app: cloudeye-exporterspec:  endpoints:    - interval: 1m      scrapeTimeout: 1m      port: ces      scheme: http      params:        services: ['SYS.VPC,SYS.ELB']  namespaceSelector:    matchNames:    - monitoring  selector:    matchLabels:      app: cloudeye-exporter
复制代码


2、将上述抓取规则于集群中创建。等待片刻可观察到 Prometheus 已经成功抓取




3、至此,cloudeye-exporter 成功接入 Prometheus。

3.6 接入 Grafana 大盘


华为云社区提供了若干个云服务现成的 dashborad。我们可以拿来使用。


https://github.com/huaweicloud/cloudeye-exporter/tree/v2.0.6/grafana_dashboard/templates

例如: 使用 VPC 云服务的 dashboard。


1、将该 dashboard 的 json 文件上传到 grafana 中



选择好数据源后,点击导入即可。


2、发现异常


会发现 dashboard 并未产生数据



3、解决方式


根据华为云社区声明: 如果需要直接使用以下模板,需要修改 prometheus 配置,增加获取企业项目信息的任务。所以我们还需要修改 servicemonitor,在原来 cloudeye-exporter-servicemonitor 的基础上增加一项配置


apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata:   name: cloudeye-exporter  namespace: monitoring   labels:    app: cloudeye-exporterspec:  endpoints:    - interval: 1m      scrapeTimeout: 1m      port: ces      scheme: http      params:        services: ['SYS.VPC,SYS.ELB']    # 配置该任务获取企业项目信息,用于华为云云服务的dashboard    - interval: 1m      scrapeTimeout: 1m      port: ces      path: "/eps-info"      scheme: http  namespaceSelector:    matchNames:    - monitoring  selector:    matchLabels:      app: cloudeye-exporter      
复制代码


在集群中将上述指标抓取规则更新后,等待片刻后。


4、前往 Prometheus 页面可查看到,新的抓取任务已成功运行




5、再次观察 Grafana


此时再前往 Grafana 前端查看 dashboard: 华为云 VPC 云服务 dashboard 已成功展示



6、导入 ELB grafana dashboard



华为云 ELB 监控信息也成功展示

四 、延伸扩展


目前已支持的 Grafana Dashboard 有:


  • 云搜索服务 CSS

  • 云专线 DCAAS

  • 分布式缓存服务 DCS

  • 弹性云服务器 ECS

  • 弹性负载均衡 ELB

  • 关系型数据库 RDS

  • Web 应用防火墙 WAF

  • 弹性公网 IP 和带宽 VPC


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 5
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
Cloudeye对接Prometheus实现华为云全方位监控_云计算_华为云开发者联盟_InfoQ写作社区