使用Prometheus发现在Kubernetes上运行的应用程序
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地址。
![](/assets/blank.gif)
看一下GitHub上的完整示例。 您可能还会看到以下视频,了解如何使用MicroProfile在Java EE应用程序中实现业务指标。
对于定义了更多应用程序的更复杂的微服务示例,使用纯Prometheus配置的这种方法可能有点麻烦。 为了减少样板代码,开发人员可以使用抽象化较低层配置的解决方案,例如Prometheus Operator 。 在下一篇文章中,我们将看到Prometheus Operator如何促进应用程序的配置。
监控愉快!
翻译自: https://www.javacodegeeks.com/2019/02/applications-running-kubernetes-prometheus.html
使用Prometheus发现在Kubernetes上运行的应用程序相关推荐
- 如何在Kubernetes上运行Apache Flink
本文最初发布于Zalando网站Technology Blog板块,经原作者授权由InfoQ中文站翻译并分享 最近,我在用Apache Flink构建小型的流处理应用.在Zalando,我们默认使用K ...
- [KubeCon+CloudNativeCon China 2018] 在Kubernetes上运行区块链服务(BaaS)
笔者注:本文是在2018年11月15日由Linux基金会CNCF主办的KubeCon & CloudNativeCon China 2018大会的"Running Blockchai ...
- 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩...
2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用 ...
- 在阿里云Kubernetes上运行SpringCloud示例PiggyMetrics
阿里云Kubernetes服务运行SpringCloud osswangxining大侠在 阿里云Kubernetes SpringCloud 实践进行时 系列文章中系统地介绍了如何在阿里云Kuber ...
- 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩
上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Dock ...
- 在Kubernetes上运行区块链服务(BaaS)
本文是在2018年11月15日由Linux基金会CNCF主办的KubeCon & CloudNativeCon China 2018大会的"Running Blockchain as ...
- 如何在Kubernetes上运行PostgreSQL
通过在Kubernetes上运行PostgreSQL数据库,您可以创建统一管理的云原生生产部署,并可以灵活地部署满足您特定需求的个性化数据库即服务. 使用运算符可以让您向Kubernetes提供其他上 ...
- (九)在Kubernetes上运行人脸识别
目录 介绍 为Kubernetes修改容器 安装Kubernetes 在Kubernetes上运行容器 下一步 在这里,我们给出了需要使用Kubernetes在真实生产环境中扩展和部署我们的AI解决方 ...
- android phone win10下载,微软Your Phone新功能: 可在Win 10 PC 上运行 Android 应用程序...
今年 8 月,微软发布了一项 Your Phone 重大功能,可以在 Windows 10 PC 上运行 Android 应用程序.该功能主要通过 Your Phone 应用将 Android 应用投 ...
最新文章
- 搜狗分身技术再进化,让AI合成主播“动”起来
- 牲畜体表信息的三维重建
- SQL Server 存储过程的分页
- 【教程】超漂亮的CSS3按钮制作教程
- 引入其他配置文件(分模块开发)
- 协同遗漏的效果–使用简单的NIO客户端/服务器测量回送延迟
- cpri带宽不足的解决方法_白皮书:FPGA赋能下一代通信和网络解决方案(第四部分)...
- 人生价值观的培养和建立
- Pycharm 安装
- 【机器学习-西瓜书】四、决策树:信息熵;信息增益;增益率;ID3;C4.5
- linux mint 18安装中文,无法在Linux Mint 18.1“Serena”下安装pyFFTW
- java定义一个空数组_一个 Java 方法,最多能定义多少参数?
- time函数python_python time模块函数
- #Linux Shell 脚本编程(10)—文本过滤(合并与分割—sort、uniq、join、cut、paste、split)
- 三星5G先锋计划:0元起抢先换5G不是梦
- 【MATLAB基础】数据作图--imagesc
- 诱人的 TypeScript 视频教程(69 个视频)
- Pixhawk原生固件PX4之调节怠速
- 60万餐厅数据为你画出全国美食地图(附技术讲解)
- NVIDIA NGC镜像使用笔记