电子商城系统开发模块,seo网站建设技巧,网页微信版传输助手,网站建设有关的软件目录 一、Prometheus服务发现的方式1.1 基于文件的服务发现1.2 基于consul的服务发现1.3 基于 Kubernetes API 的服务发现1.3.1 简介1.3.2 基于Kurbernetes发现机制的部分配置参数 二、实例一#xff1a;部署基于文件的服务发现2.1 创建用于服务发现的文件2.2 修改Prometheus的… 目录 一、Prometheus服务发现的方式1.1 基于文件的服务发现1.2 基于consul的服务发现1.3 基于 Kubernetes API 的服务发现1.3.1 简介1.3.2 基于Kurbernetes发现机制的部分配置参数 二、实例一部署基于文件的服务发现2.1 创建用于服务发现的文件2.2 修改Prometheus的配置文件2.3 浏览器访问测试 三、实例二部署基于consul的服务发现3.1 部署Consul服务3.2 在Consul 上注册 Services3.3 修改 prometheus 配置文件 一、Prometheus服务发现的方式
1.1 基于文件的服务发现
基于文件的服务发现是仅仅略优于静态配置的服务发现方式它不依赖于任何平台或第三方服务因而也是最为简单和通用的实现方式。
Prometheus Server 会定期从文件中加载 Target 信息文件可使用 YAML 和 JSON 格式它含有定义的 Target 列表以及可选的标签信息。
1.2 基于consul的服务发现
下载地址https://www.consul.io/downloads/
Consul 是一款基于 golang 开发的开源工具主要面向分布式服务化的系统提供服务注册、服务发现和配置管理的功能。 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。
1.3 基于 Kubernetes API 的服务发现
1.3.1 简介 //基于 Kubernetes API 的服务发现
基于 Kubernetes API 的服务发现机制支持将API Server 中 Node、Service、Endpoint、Pod 和 Ingress 等资源类型下相应的各资源对象视作 target 并持续监视相关资源的变动●Node、Service、Endpoint、Pod 和 Ingress 资源分别由各自的发现机制进行定义●负责发现每种类型资源对象的组件在 Prometheus 中称为一个 role●支持在集群上基于 DaemonSet 控制器部署 node-exporter 后发现各 Node 节点也可以通过 kubelet 来作为 Prometheus 发现各 Node 节点的入口#基于 Kubernetes 发现机制的部分配置参数
# The API server addresses. If left empty, Prometheus is assumed to run inside of the cluster and will discover API servers automatically
and use the pods
# CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.
[ api_server: host ]# The Kubernetes role of entities that should be discovered. One of endpoints, service, pod, node, or ingress.
role: string# Optional authentication information used to authenticate to the API server.
# Note that basic_auth, bearer_token和bearer_token_file 等认证方式互斥
[ bearer_token: secret ]
[ bearer_token_file: filename ]# TLS configuration.
tls_config:
# CA certificate to validate API server certificate with.
[ ca_file: filename ]# Certificate and key files for client cert authentication to the server.
[ cert_file: filename ]
[ key_file: filename ]# ServerName extension to indicate the name of the server.
[ server_name: string ]# Optional namespace discovery. If omitted, all namespaces are used.
namespaces:
names:
[ - string ]1.3.2 基于Kurbernetes发现机制的部分配置参数
# The API server addresses. If left empty, Prometheus is assumed to run inside of the cluster and will discover API servers automatically
and use the pods
# CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.
[ api_server: host ]# The Kubernetes role of entities that should be discovered. One of endpoints, service, pod, node, or ingress.
role: string# Optional authentication information used to authenticate to the API server.
# Note that basic_auth, bearer_token和bearer_token_file 等认证方式互斥
[ bearer_token: secret ]
[ bearer_token_file: filename ]# TLS configuration.
tls_config:
# CA certificate to validate API server certificate with.
[ ca_file: filename ]# Certificate and key files for client cert authentication to the server.
[ cert_file: filename ]
[ key_file: filename ]# ServerName extension to indicate the name of the server.
[ server_name: string ]# Optional namespace discovery. If omitted, all namespaces are used.
namespaces:
names:
[ - string ]二、实例一部署基于文件的服务发现
2.1 创建用于服务发现的文件 新建工作目录 cd /usr/local/prometheusmkdir targets在文件中配置所需的 target vim targets/node-exporter.yaml
- targets:- 192.168.2.108:9100- 192.168.2.106:9100labels:app: node-exporterjob: nodevim targets/mysqld-exporter.yaml
- targets:- 192.168.2.108:9104- 192.168.2.106:9104labels:app: mysqld-exporterjob: mysqld2.2 修改Prometheus的配置文件
修改 prometheus 配置文件发现 target 的配置定义在配置文件的 job 之中。
vim /usr/local/prometheus/prometheus.yml
......
scrape_configs:- job_name: nodesfile_sd_configs: #指定使用文件服务发现- files: #指定要加载的文件列表- targets/node*.yaml #文件加载支持通配符refresh_interval: 2m #每隔 2 分钟重新加载一次文件中定义的 Targets默认为 5m- job_name: mysqldfile_sd_configs:- files:- targets/mysqld*.yamlrefresh_interval: 2m2.3 浏览器访问测试
#先重启服务
systemctl reload prometheus
#然后
浏览器查看 Prometheus 页面的 Status - Targets三、实例二部署基于consul的服务发现
3.1 部署Consul服务
cd /opt/
unzip consul_1.9.2_linux_amd64.zip
mv consul /usr/local/bin/#创建 Consul 服务的数据目录和配置目录
mkdir /var/lib/consul-data
mkdir /etc/consul/#使用 server 模式启动 Consul 服务
consul agent \
-server \
-bootstrap \
-ui \
-data-dir/var/lib/consul-data \
-config-dir/etc/consul/ \
-bind192.168.2.108 \
-client0.0.0.0 \
-nodeconsul-server01 /var/log/consul.log #查看 consul 集群成员
consul members3.2 在Consul 上注册 Services
#在配置目录中添加文件
vim /etc/consul/nodes.json
{services: [{id: node_exporter-node01,name: node01,address: 192.168.2.108,port: 9100,tags: [nodes],checks: [{http: http://192.168.2.108:9100/metrics,interval: 5s}]},{id: node_exporter-node02,name: node02,address: 192.168.2.106,port: 9100,tags: [nodes],checks: [{http: http://192.168.2.106:9100/metrics,interval: 5s}]}]
}#让 consul 重新加载配置信息
consul reload 浏览器访问http://192.168.2.108:85003.3 修改 prometheus 配置文件
vim /usr/local/prometheus/prometheus.yml
......- job_name: nodesconsul_sd_configs: #指定使用 consul 服务发现- server: 192.168.2.108:8500 #指定 consul 服务的端点列表tags: #指定 consul 服务发现的 services 中哪些 service 能够加入到 prometheus 监控的标签- nodesrefresh_interval: 2msystemctl reload prometheus浏览器查看 Prometheus 页面的 Status - Targets#让 consul 注销 Service
consul services deregister -idnode_exporter-node02#重新注册
consul services register /etc/consul/nodes.json