加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

一文读懂如何在Kubernetes上轻松实现自动化部署Prometheus

发布时间:2019-08-28 22:59:32 所属栏目:建站 来源:火眼狻猊
导读:副标题#e# 简介 Prometheus 是当下火热的监控解决方案,尤其是容器微服务架构,Kubernetes 的首选监控方案。关于为什么要用 Prometheus,我这里就不多讲,相关的文章太多了,大家也可以看看官方的说法。本文就讲讲如何自动化的搭建一套基于 Kubernetes 集群

我们使用如下命令来部署 InfluxDB:

  1. helm install --name=influxdb --namespace=monitoring -f influxdb.yaml stable/influxdb 

存储后端部署成功后,我们就来部署 Prometheus-operator 了,首先创建如下的配置文件

prometheus.yaml

  1. # prometheus 服务端  
  2. prometheus:  
  3.   prometheusSpec:  
  4.     # 远端存储配置  
  5.     remoteWrite:  
  6.     - url: "http://influxdb:8086/api/v1/prom/write?db=prometheus"  
  7.     remoteRead:  
  8.     - url: "http://influxdb:8086/api/v1/prom/read?db=prometheus"  
  9.   # ingress 配置,暴露 web 界面  
  10.   ingress:  
  11.     enabled: true  
  12.     annotations:  
  13.       kubernetes.io/ingress.class: traefik  # ingress class  
  14.     hosts:  
  15.     - "prometheus.mydomain.io"  # 配置域名  
  16. alertmanager:  
  17.   # alertmanager 配置  
  18.   config:  
  19.     global:  
  20.       # SMTP 配置  
  21.       smtp_smarthost: 'xxx'  
  22.       smtp_from: 'xxx' 
  23.        smtp_auth_username: 'xxx'  
  24.       smtp_auth_password: 'xxx'  
  25.       # 全局 opsgenie 配置  
  26.       # opsgenie_api_key: ""  
  27.     # 报警路由  
  28.     route:  
  29.       receiver: 'monitoring-warning' 
  30.        group_by: ['alertname']  
  31.       group_wait: 30s  
  32.       group_interval: 3m  
  33.       repeat_interval: 8h  
  34.       routes:  
  35.       - match:  
  36.           severity: critical  
  37.         receiver: monitoring-critical  
  38.         group_by: ['alertname']  
  39.       - match:  
  40.           severity: warning  
  41.         receiver: monitoring-warning  
  42.         group_by: ['alertname']  
  43.     # 报警抑制规则  
  44.     inhibit_rules:  
  45.     - source_match:  
  46.         severity: 'critical'  
  47.       target_match:  
  48.         severity: 'warning'  
  49.       # 抑制相同的报警  
  50.       equal: ['alertname']  
  51.     # 接收者配置  
  52.     receivers:  
  53.     - name: 'monitoring-critical'  
  54.       email_configs:  
  55.       - to: 'monitor@mydomain.com'  
  56.       # 发送到钉钉的 webhook,需要部署一个转发服务,详见项目代码  
  57.       webhook_configs:  
  58.       - send_resolved: true  
  59.         url: http://prometheus-webhook-dingtalk/dingtalk/monitoring/send  
  60.     - name: 'monitoring-warning'  
  61.       email_configs:  
  62.       - to: 'monitor@mydomain.com'  
  63.   alertmanagerSpec:  
  64.     # alertmanager 存储配置,alertmanager 会以文件形式存储报警静默等配置  
  65.     storage:  
  66.       volumeClaimTemplate:  
  67.         spec:  
  68.           accessModes:  
  69.           - ReadWriteOnce  
  70.           storageClassName: monitor-ebs  # 选择合适的存储类  
  71.           resources:  
  72.             requests:  
  73.               storage: 20Gi  # 选择合适的大小  
  74.   # ingress 配置,暴露 alert 的界面  
  75.   ingress:  
  76.     enabled: true  
  77.     annotations:  
  78.       kubernetes.io/ingress.class: traefik  # ingress class  
  79.     hosts:  
  80.     - "alert.mydomain.io"  # 配置域名  
  81. # grafana 配置  
  82. grafana:  
  83.   replicas: 1  
  84.   adminPassword: "admin"  # 管理员账户 admin,密码 admin  
  85.   env:  
  86.     # GF_SERVER_DOMAIN: ""  # 域名  
  87.     GF_SERVER_ROOT_URL: "%(protocol)s://%(domain)s/"  
  88.     # GF_DATABASE_URL: "mysql://user:secret@host:port/database"  # SQL 数据库  
  89.   # ingress 配置,暴露界面  
  90.   ingress:  
  91.     enabled: true  
  92.     annotations:  
  93.       kubernetes.io/ingress.class: traefik  # ingress class  
  94.     hosts:  
  95.     - "grafana.mydomain.io"  # 设置域名  
  96. # exporter 设置,自建集群需要开启,如果是云服务商托管集群,则获取不到这些信息,可以关闭  
  97. kubeControllerManager:  
  98.   enabled: true  
  99. kubeEtcd:  
  100.   enabled: true  
  101. kubeScheduler:  
  102.   enabled: true 

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读