prometheus+alertmanager+granafa监控总结,安装基于docker-compose(长期更新)
最近自己个人尝试在使用prometheus+grafana监控工作业务上的指标, 但是报警功能还没有实际用上,但是感觉是很好用,写下一些啃prometheus官网文档并且自己用到的一些配置的总结,后续还用到其他东西再更新。如果想深入理解还是请看官方文档(https://prometheus.io/docs/introduction/overview/)
安装
直接在操作系统上安装
略
docker compose
version: "3"
networks:
monitor:
driver: bridge
services:
prometheus:
image: prom/prometheus
container_name: prometheus
restart: always
volumes:
- ./prometheusConfig:/etc/prometheus
- ./data/prometheus:/prometheus
ports:
- "9090:9090"
hostname: prometheus
networks:
- monitor
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--web.console.libraries=/usr/share/prometheus/console_libraries"
- "--web.console.templates=/usr/share/prometheus/consoles"
- "--storage.tsdb.retention.time=3d"
- "--web.enable-lifecycle"
alertmanager:
image: prom/alertmanager
container_name: alertmanager
hostname: alertmanager
restart: always
ports:
- '9093:9093'
volumes:
- ./data/alertmanager:/alertmanager/data
- ./alertmanager.yml:/alertmanager.yml
command:
- "--config.file=/alertmanager.yml"
networks:
- monitor
grafana:
image: grafana/grafana
container_name: grafana
restart: always
ports:
- "3000:3000"
volumes:
- ./data/grafana:/var/lib/grafana
networks:
- monitor
prometheus
理解
prometheus是一个时序性数据库,能够比较高效, 方便的采集时序列数据并以时间建立索引,以及维护数据的存储时间以免磁盘被打满。毕竟时序性数据库主要就是用来监控,监控指标存储过早之前的数据并没什么意义。
此外prometheus还提供规则功能,报警规则用于报警,但是prometheus只是做发现以及生成需要报警的消息, 发送报警的工作由alertmanager来完成。
prometheus.yml
# prometheus_config/prometheus.yml
global: # 全局变量
scrape_interval: 1m # 访问目标间隔 可以在job单独配置
evaluation_interval: 30s # 访问规则的间隔
rule_files: # 规则文件
- 'rules/*'
alerting:
alertmanagers:
- scheme: http # 使用http协议发起请求
static-configs:
- targets: [alertmanager:9093]
scrape_configs:
- job_name: 'nginx_demo'
scrape_interval: 10s
#static_configs: # 静态配置
#- targets: ['192.168.56.100:9100']
file_sd_configs: # 动态配置
- files:
- /etc/prometheus/nginx.yml
refresh_interval: 1m # 刷新时间 即修改后最大生效时间
metrics_path: "/metrics" # 默认数据采集路径 不配置的话就是 metrics
# prometheus_config/nginx.yml
- targets:
- "192.168.56.100:9100"
metrics接口返回格式
key0 value0
key1 value1
key2{label0=value0} value2
如
nginx_2xx 10234
nginx_3xx 1023
nginx_4xx 12
nginx_5xx{level="error"} 239
报警规则文件 rules/alert.yml
# rules/alert.yml
groups:
- name: nginx_example
rules:
- alert: test
expr: nginx_5xx > 100
for: 1m
labels:
serverity: warning
process: nginx
annotations:
summary: "nginx 5xx is too much"
description: "instance: {{ $labels.instance }} number:{{ $value }}"
alertmanger
理解
alertmanager进程作用是接收来自prometheus进程的报警规则消息后, 进行下一步动作(通知到人), 而alertmanager并不真正关心指标(规则)的具体细节, 而只关心告警规则的labels用于进行路由分类 将告警以合适的方式发送到应当通知到的人而不骚扰其他人。
同时altermanager提供的高级功能则是 将短时间内的报警邮件进行统一发送以及重复持续的报警有间隔的发送, 有过被重复报警刷满收件箱前几页的同学 经常能体会到这个功能的人性化。
但最重要的还是制定好报警规则, 少即是多, 多即是无, 大量无意义的报警不仅只是骚扰到收件人, 更会让真正需要被注意到的报警被掩盖,失去报警这件事情原本的意义。
alertmanager.yml
# alertmanager.yml
global:
# 邮件报警设置 都可以在 receiver单独配置
smtp_from: example@demo.com
smtp_smarthost: smtp.example.org:587
smtp_auth_username: example@demo.com
smtp_auth_password: password
smtp_require_tls: false # 协议是否使用tls 需要注意默认是 true
# 报警时调用api 暂略
route: # 路由 这将会是一个树形数据结构, 如果不满足任何子节点 才会使用本节点配置 核心数据是规则的label
receiver: default # 接收者 下面会定义
group_by: ['serverity'] # 分组使用的labels 属性 如果是 ... 则使用所有labels分组
group_interval: 1m # 针对该组发送报警邮件的间隔 间隔内多封报警会集合后发送一封
repeat_interval: 20m # 相同报警邮件发送频率间隔 如报警a b两个规则邮件发送后, c也触发了则算是新的报警 abc 1m 后一起发送
match: # 全等匹配
serverity: notice
match_re: # 正则匹配
serverity: warning | error
continue: true # 是否尝试匹配子节点路由 注意 默认是false
routes: # 子节点路由
- [route] # 也是route结构
receivers: # 接收者
- name: default
email_config: # 接受者的邮件设置
to: all@demo.com
grafana
登录
默认账号密码都是admin
增加prometheus作为数据源
- 右边侧边栏 Configuration --> Data Sources 进入配置页
- 右上角 Add data source 按钮 进入增加数据源页
- 选择prometheus 并进行host等配置即可
增加第一个简单折线图标
在Home页面 选择Add dashboard
选择右上角按钮 Add panel
选择Add Query 进入pannel配置页面
Query 选择prometheus
可以在一个panel显示多个指标 这里只弄一个 Metrics框输入nginx_2xx Min time interval框和采集时间时间间隔保持一致 如 10s
点击页面左下角设置图标 给panel title改为 nginx
保存即可
其他
- panel可以分多个ROW 创建一个新ROW的方法是新建一个panel 点击conver to row
- row的排序拖动按钮在row标题最右边 黑色皮肤下可能会忽略
prometheus+alertmanager+granafa监控总结,安装基于docker-compose(长期更新)的更多相关文章
- Prometheus Alertmanager Grafana 监控警报
Prometheus Alertmanager Grafana 监控警报 #node-exporter, Linux系统信息采集组件 #prometheus , 抓取.储存监控数据,供查询指标 #al ...
- DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路
2016 年1 月 23 日,北京史上气温最低的一天. 在下午 1 点半的时候,由 DaoCloud 赞助的 2016 年度首次 Docker Meetup 准时开始. 在这次Meetup中,我分享了 ...
- 基于Docker Compose的.NET Core微服务持续发布
是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了.今天,我就通过这篇文章来回答一下. 一.先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K ...
- 基于Docker Compose构建的MySQL MHA集群
Docker MySQL MHA 基于Docker 1.13.1之上构建的MySQL MHA Docker Compose Project 可快速启动GTID模式下的MasterHA集群, 主用于My ...
- 基于Docker Compose部署分布式MinIO集群
一.概述 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器 ...
- Prometheus+Alertmanager+Grafana监控组件容器部署
直接上部署配置文件 docker-compose.yml version: '3' networks: monitor: driver: bridge services: prometheus: im ...
- 基于Docker Compose搭建mysql主从复制(1主2从)
系统环境 * 3 Ubuntu 16.04 mysql 8.0.12 docker 18.06.1-ce docker-compose 1.23.0-rc3 *3 ==> PS ###我用的是 ...
- 使用Prometheus和Grafana监控emqx集群
以 Prometheus为例: emqx_prometheus 支持将数据推送至 Pushgateway 中,然后再由 Promethues Server 拉取进行存储. 注意:emqx_promet ...
- Docker Compose的安装及命令补全
安装Compose Compose的安装有多种方式,例如通过shell安装.通过pip安装.以及将compose作为容器安装等等.本文讲解通过shell安装的方式.其他安装方式如有兴趣,可以查看Doc ...
随机推荐
- [CSP-S 2019]括号树
[CSP-S 2019]括号树 源代码: #include<cstdio> #include<cctype> #include<vector> inline int ...
- P4218 [CTSC2010]珠宝商
P4218 [CTSC2010]珠宝商 神题... 可以想到点分治,细节不写了... (学了个新姿势,sam可以在前面加字符 但是一次点分治只能做到\(O(m)\),考虑\(\sqrt n\)点分治, ...
- CORS跨域资源共享总结
1.CORS简述 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing).它允许浏览器向跨源(协议 + 域名 + 端口)服务 ...
- C博客作业--我的第一篇博客作业
1你对网络专业或计算机专业了解是怎样的 由于从小就与电脑打交道,对于各类软件的生产非常感兴趣,所以在高三开学查询有什么专业的时候,就打算报与计算机有关的专业.我对计算机专业感到非常神奇,毕竟只是看似简 ...
- lower_bound( )和upper_bound( )怎么用嘞↓↓↓
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数 ...
- ICEM-二维Y型网格的一种做法
原视频下载地址:https://pan.baidu.com/s/1nvSBHoP 密码: uqy3
- updateprimarykey 和updateprimaryKeySelective
updateprimarykey 会对左右的字段都进行更新,updateprimaryKeySelective 只会对不为null的字段进行更新..所以在填表的web项目需要注意这个两个方法的选择,因 ...
- 刷题记录:[网鼎杯]Fakebook
目录 刷题记录:[网鼎杯]Fakebook 一.涉及知识点 1.敏感文件泄露 2.sql注入 二.解题方法 刷题记录:[网鼎杯]Fakebook 题目复现链接:https://buuoj.cn/cha ...
- (转载)golang 整数常量INT_MAX INT_MIN最大值最小值
转载地址:https://blog.csdn.net/bdss58/article/details/78388858 在C语言中,有标准库limits.h定义了一些最大最小值常量,例如int类型的最大 ...
- flask 开发接口测试平台
flask 开发接口测试平台 数据库,forms views 视图, 数据库如下: # encoding: utf-8 ''' @author: lileilei @file: models.py ...