-
介绍一下我们今天的prometheus stack三位伙计: prometheus alertmanager grafana
-
-
-
-
prometheus: 一个Go语言开发的开源的服务监控系统和时间序列数据库 ,后端使用 LevelDB key-value 存储
-
alertmanager: 负责处理 prometheus 发送来的报警条目,处理逻辑根据用户配置的 route 来实现报警
-
grafana: 负责时序数据的前端展示
部署 prometheus stack , 整个 stack 部署在一个单独的 docker daemon上,并未内置入k8s中
step 1 deploy alertmanager
run -d -p 9093:9093 -v /data/alertmanager/:/etc/alertmanager/ --name alertmanager-debug prom/alertmanager -log.level debug -config.file=/etc/alertmanager/alertmanager-config.yml -storage.path==/alertmanager
[root@VM_1_234_centos alertmanager]# cat /data/alertmanager/alertmanager-config.yml
global:
smtp_smarthost: 'smtp.exmail.qq.com:25' // 定义全局配置,发送报警邮箱信息
smtp_from: 'monitor@wexxx.com'
smtp_auth_username: 'monitor@wexxx.com'
smtp_auth_password: 'WY@xxx'
route:
group_by: ['alertname', 'image', 'service'] // 根绝 label 进行报警分组,定义一个默认收件人
group_wait: 30s
group_interval: 5m
repeat_interval: 3h
receiver: wepiao-alert
receivers: // 定义报警人方式, webhook 会调用我们用python封装的一个短信接口
- name: 'wepiao-alert'
email_configs:
- to: 'cailu@wepiao.com'
- to: 'zhanglong@wepiao.com'
webhook_configs:
- url: ''
send_resolved: false
inhibit_rules: // 开启压抑模式,当获取指标的 exporter dwon 后,上面的容器就不在报警了
- source_match: 这个 stack 也监控了一些 docker daemon 上面的容器,获取数据指标通过
alertname: 'exporter_down' daemon 上启动的 cadvisor
target_match:
alertname: 'ContainersDown'
-
step 2 deploy prometheus
docker run -d -p 9090:9090 -v /data/prometheus/:/etc/prometheus -v /data/prometheus_data/:/prmetheus --name prometheus-meup-debug prom/prometheus -log.level "debug" -storage.local.memory-chunks=12074368 -storage.local.chunk-encoding-version=2 -config.file=/etc/prometheus/prometheus.yml -storage.local.path=/prometheus -alertmanager.url= // 加大存储chunk的内存池大小,启动时关联 alertmanager
-
-
// prometheus数据卷挂在到本机中, 加载 alert.rules prometheus.yml相关配置
-
-
[root@VM_1_234_centos prometheus]# cat prometheus.yml
global:
scrape_interval: 50s
evaluation_interval: 50s
rule_files:
- '/etc/prometheus/alert.rules'
scrape_configs:
- job_name: 'cadvisor'
static_configs:
- targets: ['10.3.1.22:8080','10.3.1.229:8080','10.3.1.124:8080']
labels:
service: 'm-site' // swarm集群容器指标的获取地址
- job_name: 'node-exporter'
static_configs:
- targets: ['10.3.1.22:9100','10.3.1.229:9100','10.3.1.124:9100']
labels:
group: 'product' // swarm集群node节点指标数据的获取地址
- job_name: 'kubernetes-node'
scheme: https // 默认scheme http,声明为 https
tls_config:
insecure_skip_verify: true // 跳过不安全的认证提示
kubernetes_sd_configs:
- api_servers:
- ''
role: node
relabel_configs: // 复写meta label
- action: labelmap
regex: __meta_kubernetes_node_label_(.+) // 复写后指标为 kubernetes_io_hostname="xxxx", 用于 grafana 作图
setp 3 depoly grafana
docker run -d -p 3000:3000 -v /data/grafana_data/:/var/lib/grafana --name grafana grafana/grafana
add data sources
ok, 数据源也有了,就到了你自己 DIY的时刻到了
以下展示几张具体效果;
swarm 集群, 可以选择生命周期未结束容器,按照image名称分类
kubernetes
kubernetes node
报警邮件示例
好了,今天就简单介绍一些 prometheus stack 简单应用,有兴趣的同学自己在深入吧.
Cail_wepiao
参考链接: