未修改镜像地址的yaml文件:https://github.com/coreos/kube-prometheus/tree/master/manifests
(使用腾讯云镜像仓库)修改镜像地址的yaml文件:https://gitee.com/mylanvv/kube-prometheus.git
prometheus官方文档:https://prometheus.io/docs/alerting/overview/
prometheus官方网站:https://prometheus.io/
kube-prometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件:
3.1 为grafana promethes alertmanager添加nodeport端口
grafana,修改grafana-service.yaml
promethes,修改prometheus-service.yaml
alertmanager,修改alertmanager-service.yaml
3.2 为alertmanager配置报警邮箱配置(可用企业微信、钉钉、webhook等等)
修改alertmanager-secret.yaml
apiVersion: v1
data: {}
kind: Secret
metadata:
name: alertmanager-main
namespace: monitoring
stringData:
alertmanager.yaml: |-
global:
resolve_timeout: 1m # 处理超时时间
smtp_smarthost: 'smtp.qq.com:465' # 邮箱smtp服务器代理
smtp_from: '[email protected]' # 发送邮箱名称
smtp_auth_username: '[email protected]' # 邮箱名称
smtp_auth_password: 'xxx' # 授权密码
smtp_require_tls: false # 不开启tls 默认开启
receivers:
- name: Default
email_configs: # 邮箱配置
- to: "[email protected]" # 接收警报的email配置
route:
group_interval: 1m # 在发送新警报前的等待时间
group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知
receiver: Default
repeat_interval: 1m # 发送重复警报的周期
type: Opaque
4.1 使用已经修改过镜像的git地址
git clone https://gitee.com/mylanvv/kube-prometheus.git
4.2 启动prometheus-operator
cd 到manifests下的setup目录
创建
kubectl apply -f .
查看是否正常启动
kubectl get pods -n monitoring
4.3 启动 promethes metric adapter grafana alertmanager
cd 到manifests目录
创建
kubectl apply -f .
查看是否正常启动
kubectl get pods -n monitoring
因为Alertmanager默认有一个Watchdog是报警状态的
因为Alertmanager设置了1m 所以会一直接收,可以打开Alertmanager的管理页面,设置为静默期
Alertmanager地址:IP:NodePrt http://x.x.x.x:32302
定义一个pod状态不是running的监控
修改,prometheus-rules.yaml,在最后面插入内容
插入如下内容 :
- alert: pod-status
annotations:
message: vv test pod-status
expr: |
kube_pod_container_status_running != 1
for: 1m
labels:
severity: warning
刷新prometheus-rules.yaml,因为使用挂载方式,刷新后,会同步到pod内,刷新需要一会时间
kubectl apply -f prometheus-rules.yaml
打开prometheus 查看是否已添加刚刚的监控项 pod-status
访问地址: IP:nodeport http://x.x.x.x:32301
创建不是running的容器
yaml文件内容
apiVersion: apps/v1
kind: Deployment
metadata:
name: vv
spec:
replicas: 1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: vv
template:
metadata:
labels:
app: vv
spec:
imagePullSecrets:
- name: registry-pull-secret
containers:
- name: vv
image: ccr.ccs.tencentyun.com/lanvv/test-jdk-1-8.0.181-bak:latest
imagePullPolicy: IfNotPresent
创建
等一会查看报警接收邮箱
再次查看prometheus
先在prometheus验证我们的查询条件是否满足
kube_pod_container_status_running != 1
继续去grafana添加图标
grafana地址: ip:32300 http://x.x.x.x:32300
输入刚刚的查询条件
右上角点击保存按钮,保存图表
结果如下:
九、 结论
整个下来,都是一些模板,简单配置
如何更好的操作整个监控,需要很多调优,增加参数配置
比如alertmanager告警不单单只使用邮件,一个用户,如何区分组,静默期,正则匹配,报警时间,间隔
prometheus 如何自定义各种监控条件 promql
grafana 如何制作好看的图表,收集
各个组件如何使用pv、pvc持久化数据