Prometheus支持抓取应用程序的多个实例。 由于其IP地址会发生变化,因此需要动态发现在协调环境中运行的应用程序。 可以将Prometheus配置为使用Kubernetes API动态地发现正在运行的实例列表中的更改。

下面显示了一个简单的Prometheus示例,该示例对具有多个Pod实例的应用程序进行检测。

普罗米修斯配置

我们配置Prometheus来发现我们的config-example应用程序的pod。

 global: scrape_interval:    15s external_labels: monitor: 'example-monitor'  scrape_configs:  - job_name: 'example-metric' scrape_interval: 5s metrics_path: /metrics/ scheme: https basic_auth: username: admin password: adminadmin tls_config: insecure_skip_verify: true kubernetes_sd_configs: - role: endpoints namespaces: names: - default relabel_configs: - source_labels: [__meta_kubernetes_service_label_app] separator: ; regex: config-example replacement: $ 1 action: keep - source_labels: [__meta_kubernetes_endpoint_port_name] separator: ; regex: https replacement: $ 1 action: keep - source_labels: [__meta_kubernetes_namespace] separator: ; regex: (.*) target_label: namespace replacement: $ 1 action: replace - source_labels: [__meta_kubernetes_pod_name] separator: ; regex: (.*) target_label: pod replacement: $ 1 action: replace - source_labels: [__meta_kubernetes_service_name] separator: ; regex: (.*) target_label: service replacement: $ 1 action: replace - source_labels: [__meta_kubernetes_service_name] separator: ; regex: (.*) target_label: job replacement: ${ 1 } action: replace - separator: ; regex: (.*) target_label: endpoint replacement: https action: replace 

我们需要调整app标签(在此处为config-example )和端口名称( https ),在该端口下可以使用监视端点。

仪表应用

本示例使用在Open Liberty之上运行的MicroProfile Metrics端点。 该应用程序在端口9443和路径/metrics/下以Prometheus格式公开/metrics/

在这里,您可以看到示例服务和部署:

 kind: Service  apiVersion: v1  metadata: name: config-example labels: app: config-example  spec: selector: app: config-example ports: - port: 9443 name: https - port: 9080 name: http 
 kind: Deployment  apiVersion: apps/v1beta1  metadata: name: config-example  spec: replicas: 2 template: metadata: labels: app: config-example spec: containers: - name: config-example image: sdaschner/config-example: 1 # ... 

您可以在GitHub上找到完整的示例,包括正在运行的应用程序。

Prometheus设置和RBAC

为了使该示例适用于RBAC Kubernetes设置,Prometheus服务帐户需要具有正确的权限。 因此,我们将在此处创建服务帐户和相应的群集角色,如YAML定义中所述。 同样,我们在创建Prometheus部署时指定服务帐户。

我们为Prometheus实例创建部署和服务。

 kind: Service  apiVersion: v1  metadata: name: prometheus labels: app: prometheus  spec: selector: app: prometheus ports: - port: 9090 name: http 
 kind: Deployment  apiVersion: apps/v1beta1  metadata: name: prometheus  spec: replicas: 1 template: metadata: labels: app: prometheus version: v1 spec: serviceAccountName: prometheus containers: - name: prometheus image: prom/prometheus:v2. 7.1 ports: 9090 - containerPort: 9090 volumeMounts: - name: prometheus-config-volume mountPath: /etc/prometheus/prometheus.yml subPath: prometheus.yml volumes: - name: prometheus-config-volume configMap: name: prometheus-config restartPolicy: Always 

前面显示的配置可以从配置映射中注入实例。

 kind: ConfigMap  apiVersion: v1  metadata: name: prometheus-config  data: prometheus.yml: | global: scrape_interval:    15s # content as shown earlier ... 

有关Prometheus配置的完整说明,请参阅文档 。

访问目标

现在,正在运行的Prometheus实例可以发现两个正在运行的配置示例应用程序,它们都作为Kubernetes容器运行:

 gt; kubectl get pods NAME READY STATUS RESTARTS AGE config-example-69974cbc96-dqd96 gt; kubectl get pods NAME READY STATUS RESTARTS AGE config-example-69974cbc96-dqd96 1 / 1 Running 0 4m config-example-69974cbc96-zstg7 1 / 1 Running 0 4m grafana-8694db9d4f-nvn5s 1 / 1 Running 0 3m prometheus-594dd9cdb8-95ftz 1 / 1 Running 0 3m 

我们可以在Prometheus配置下看到实际目标,包括其IP地址。


看一下GitHub上的完整示例。 您可能还会看到以下视频,了解如何使用MicroProfile在Java EE应用程序中实现业务指标。

对于定义了更多应用程序的更复杂的微服务示例,使用纯Prometheus配置的这种方法可能有点麻烦。 为了减少样板代码,开发人员可以使用抽象化较低层配置的解决方案,例如Prometheus Operator 。 在下一篇文章中,我们将看到Prometheus Operator如何促进应用程序的配置。

监控愉快!

翻译自: https://www.javacodegeeks.com/2019/02/applications-running-kubernetes-prometheus.html

使用Prometheus发现在Kubernetes上运行的应用程序相关推荐

  1. 如何在Kubernetes上运行Apache Flink

    本文最初发布于Zalando网站Technology Blog板块,经原作者授权由InfoQ中文站翻译并分享 最近,我在用Apache Flink构建小型的流处理应用.在Zalando,我们默认使用K ...

  2. [KubeCon+CloudNativeCon China 2018] 在Kubernetes上运行区块链服务(BaaS)

    笔者注:本文是在2018年11月15日由Linux基金会CNCF主办的KubeCon & CloudNativeCon China 2018大会的"Running Blockchai ...

  3. 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩...

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用 ...

  4. 在阿里云Kubernetes上运行SpringCloud示例PiggyMetrics

    阿里云Kubernetes服务运行SpringCloud osswangxining大侠在 阿里云Kubernetes SpringCloud 实践进行时 系列文章中系统地介绍了如何在阿里云Kuber ...

  5. 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩

    上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Dock ...

  6. 在Kubernetes上运行区块链服务(BaaS)

    本文是在2018年11月15日由Linux基金会CNCF主办的KubeCon & CloudNativeCon China 2018大会的"Running Blockchain as ...

  7. 如何在Kubernetes上运行PostgreSQL

    通过在Kubernetes上运行PostgreSQL数据库,您可以创建统一管理的云原生生产部署,并可以灵活地部署满足您特定需求的个性化数据库即服务. 使用运算符可以让您向Kubernetes提供其他上 ...

  8. (九)在Kubernetes上运行人脸识别

    目录 介绍 为Kubernetes修改容器 安装Kubernetes 在Kubernetes上运行容器 下一步 在这里,我们给出了需要使用Kubernetes在真实生产环境中扩展和部署我们的AI解决方 ...

  9. android phone win10下载,微软Your Phone新功能: 可在Win 10 PC 上运行 Android 应用程序...

    今年 8 月,微软发布了一项 Your Phone 重大功能,可以在 Windows 10 PC 上运行 Android 应用程序.该功能主要通过 Your Phone 应用将 Android 应用投 ...

最新文章

  1. 搜狗分身技术再进化,让AI合成主播“动”起来
  2. 牲畜体表信息的三维重建
  3. SQL Server 存储过程的分页
  4. 【教程】超漂亮的CSS3按钮制作教程
  5. 引入其他配置文件(分模块开发)
  6. 协同遗漏的效果–使用简单的NIO客户端/服务器测量回送延迟
  7. cpri带宽不足的解决方法_白皮书:FPGA赋能下一代通信和网络解决方案(第四部分)...
  8. 人生价值观的培养和建立
  9. Pycharm 安装
  10. 【机器学习-西瓜书】四、决策树:信息熵;信息增益;增益率;ID3;C4.5
  11. linux mint 18安装中文,无法在Linux Mint 18.1“Serena”下安装pyFFTW
  12. java定义一个空数组_一个 Java 方法,最多能定义多少参数?
  13. time函数python_python time模块函数
  14. #Linux Shell 脚本编程(10)—文本过滤(合并与分割—sort、uniq、join、cut、paste、split)
  15. 三星5G先锋计划:0元起抢先换5G不是梦
  16. 【MATLAB基础】数据作图--imagesc
  17. 诱人的 TypeScript 视频教程(69 个视频)
  18. Pixhawk原生固件PX4之调节怠速
  19. 60万餐厅数据为你画出全国美食地图(附技术讲解)
  20. NVIDIA NGC镜像使用笔记

热门文章

  1. 【DP】滑雪场的缆车(jzoj 1257)
  2. 【二分】Distinct
  3. JVM发生OOM的 8 种原因、及解决办法
  4. Java多线程面试问题
  5. Mybatis传入参数类型为Map
  6. require.ensure与require AMD的区别
  7. Oracle入门(十四.22)之创建DDL和数据库事件触发器
  8. jstl中添加自定义的函数
  9. 阿里巴巴对Java编程【控制语句】的规约
  10. 班级日常分享:一天一瞬间!