[TOC]
## **使用ConfigMap管理配置**
新建文件prometheus-config.yaml,内容如下:
```
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
namespace: kube-system
data:
prometheus.yml: |
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
```
然后在kubernetes中创建该ConfigMap
```
$ kubectl create -f prometheus-config.yaml
```
## **使用Deployment部署Prometheus**
当ConfigMap资源创建成功后,我们就可以通过Volume挂载的方式,将Prometheus的配置文件挂载到容器中。 这里我们通过Deployment部署Prometheus Server实例,创建prometheus-deployment.yml文件,并写入以下内容
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
template:
metadata:
labels:
app: prometheus
spec:
containers:
- name: prometheus
image: prom/prometheus:v2.15.1
command:
- /bin/prometheus
args:
- --config.file=/etc/prometheus/prometheus.yml
volumeMounts:
- mountPath: /etc/prometheus
name: prometheus-config
volumes:
- name: prometheus-config
configMap:
name: prometheus-config
```
为了能够让Prometheus实例使用ConfigMap中管理的配置文件,这里通过volumes声明了一个磁盘卷。并且通过volumeMounts将该磁盘卷挂载到了Prometheus实例的`/etc/prometheus`目录下。
使用以下命令创建资源,并查看Pod:
```
$ kubectl create -f prometheus-deployment.yaml
deployment.apps/prometheus created
$ kubectl get pod -n kube-system | grep prometheus
prometheus-79bc59554f-4psxt 1/1 Running 0 42s
```
## **创建Service对外提供访问**
新建文件prometheus-service.yaml,内容如下:
```
apiVersion: v1
kind: Service
metadata:
name: prometheus
namespace: kube-system
spec:
type: NodePort
selector:
app: prometheus
ports:
- name: prometheus
protocol: TCP
port: 9090
targetPort: 9090
```
执行以下的命令创建,并查看Service的状态
```
$ kubectl apply -f prometheus-service.yaml
service/prometheus created
$ kubectl get service prometheus -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus NodePort 10.101.84.173 <none> 9090:31320/TCP 38s
```
现在,我们可以通过主机的31320端口来访问Prometheus了
- (一)快速开始
- 安装Prometheus
- 使用NodeExporter采集数据
- AlertManager进行告警
- Grafana数据可视化
- (二)探索PromQL
- 理解时间序列
- Metrics类型
- 初识PromQL
- PromQL操作符
- PromQL内置函数
- rate和irate
- 常见指标的PromQL
- 主机CPU使用率
- 主机内存使用率
- 主机磁盘使用率
- 主机磁盘IO
- 主机网络IO
- API的响应时间
- (三)Promtheus告警处理
- 自定义告警规则
- 示例-对主机进行监控告警
- 部署AlertManager
- 告警的路由与分组
- 使用Receiver接收告警信息
- 集成邮件系统
- 屏蔽告警通知
- 扩展阅读
- AlertManager的API
- Prometheus发送告警机制
- 实践:接收Prometheus的告警
- 实践:AlertManager
- (四)监控Kubernetes集群
- 部署Prometheus
- Kubernetes下的服务发现
- 监控Kubernetes集群
- 监控Kubelet的运行状态
- 监控Pod的资源(cadvisor)
- 监控K8s主机的资源
- KubeStateMetrics
- K8S及ETCD常见监控指标
- ETCD监控指标
- Kube-apiserver监控指标
- (五)其他
- Prometheus的relabel-config
- Target的Endpoint
- Prometheus的其他配置
- (六)BlackboxExporter
- 安装
- BlackboxExporter的应用场景
- 在Promtheus中使用BlackboxExporter
- 参考