最近自己个人尝试在使用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(长期更新)的更多相关文章

  1. Prometheus Alertmanager Grafana 监控警报

    Prometheus Alertmanager Grafana 监控警报 #node-exporter, Linux系统信息采集组件 #prometheus , 抓取.储存监控数据,供查询指标 #al ...

  2. DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路

    2016 年1 月 23 日,北京史上气温最低的一天. 在下午 1 点半的时候,由 DaoCloud 赞助的 2016 年度首次 Docker Meetup 准时开始. 在这次Meetup中,我分享了 ...

  3. 基于Docker Compose的.NET Core微服务持续发布

    是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了.今天,我就通过这篇文章来回答一下. 一.先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K ...

  4. 基于Docker Compose构建的MySQL MHA集群

    Docker MySQL MHA 基于Docker 1.13.1之上构建的MySQL MHA Docker Compose Project 可快速启动GTID模式下的MasterHA集群, 主用于My ...

  5. 基于Docker Compose部署分布式MinIO集群

    一.概述 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器 ...

  6. Prometheus+Alertmanager+Grafana监控组件容器部署

    直接上部署配置文件 docker-compose.yml version: '3' networks: monitor: driver: bridge services: prometheus: im ...

  7. 基于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  ###我用的是 ...

  8. 使用Prometheus和Grafana监控emqx集群

    以 Prometheus为例: emqx_prometheus 支持将数据推送至 Pushgateway 中,然后再由 Promethues Server 拉取进行存储. 注意:emqx_promet ...

  9. Docker Compose的安装及命令补全

    安装Compose Compose的安装有多种方式,例如通过shell安装.通过pip安装.以及将compose作为容器安装等等.本文讲解通过shell安装的方式.其他安装方式如有兴趣,可以查看Doc ...

随机推荐

  1. .NET Core入门程序及命令行练习

    用命令行一步一步新建项目.添加Package.Restore.Build.Run 执行的实现方式,更让容易让我们了解.NET Core的运行机制. 准备工作 安装.NET Core 运行环境,下载地址 ...

  2. terraform v0.12.0 发布了

    v0.12.0 相比以前的有好多新的特性,包括语法,以及函数增强,昨天还在折腾的一个json解码的问题,直接使用 v0.12.0 就可以解决了,同时也包含了for 操作处理同时官方文档对于v0.12. ...

  3. sdcf day4 qaq模拟赛总结

    目录 链接 总结 链接 点这里,O(∩_∩)O~ 总结 我还是太菜了,第二题提交了\(8\)遍,真心无语了 总结来看 一是思维能力弱,第二个思维题想了很长时间,想不出来 二是代码能力弱,尽管代码短,但 ...

  4. 洛谷P3147 262144

    题目 此题数据范围小的话可以用区间\(DP\),但是该题目的数据范围并不能用区间DP来求解,因此我们考虑优化\(DP\). 每个数的生成一定是由这两个区间 考虑区间DP的弊端是并不知道每个数生成的区间 ...

  5. 如何学习uni-app?

    uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架. 开发者通过编写 Vue.js 代码,uni-app 将其编译到iOS.Android.微信小程序.H5等多个平台,保证其正确运行并 ...

  6. GoCN每日新闻(2019-10-12)

    GoCN每日新闻(2019-10-12) 1. Go 1.13中sync.Pool是如何优化的 https://colobu.com/2019/10/08/how-is-sync-Pool-impro ...

  7. mysql 升序降序

    默认不指定,order by 按照升序排列. asc:升序 desc:降序

  8. 【大数据】分布式文件系统HDFS 练习

    作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3292 利用Shell命令与HDFS进行交互 以”./bin/dfs d ...

  9. Phpoffice 已经弃用

      Package phpoffice/phpexcel is abandoned, you should avoid using it. Use phpoffice/phpspreadsheet i ...

  10. VMware7.1安装教程

    VMWare是一个"虚拟PC"软件公司.它的产品可以使你在一台机器上同时运行二个或更多Windows.DOS.LINUX系 统.与"多启动"系统相比,VMWar ...