Prometheus时序数据库

一、Prometheus

1、Prometheus安装

1)源码安装

prometheus安装包最新版本下载地址:https://prometheus.io/download/

wget https://github.com/prometheus/prometheus/releases/download/v2.3.2/prometheus-2.3.2.linux-amd64.tar.gz
tar txvf prometheus-2.3.2.linux-amd64.tar.gz
cd prometheus-2.3.2.linux-amd64.tar.gz
./prometheus --config.file=prometheus.yml

注:通过执行

./prometheus -h

可以查看具体得执行参数,参数后面可以查看默认得参数。如下图所示。

2)docker 方式安装(前提docker已经安装完毕)

创建目录和prometheus配置文件

mkdir /prometheus
vim /prometheus/prometheus.yml

注:对于prometheus.yml文件的配置,稍后详细介绍。

拉取prometheus镜像

docker pull prom/prometheus

启动prometheus

docker run -d -p 9090:9090 --name prometheus -v /home/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

注:参数的简要说明

a、-d选项启动独立模式下的prometheus容器,这意味着容器将在后台启动,这种情况下只有stop docker才可以关闭prometheus,而不能执行ctrl+c

b、-p选择指定端口号映射,通过访问本机的9090端口,即可访问prometheus容器的9090端口

c、--name指定容器的名称

d、-v选项建立本机文件和docker内文件的映射

e、--config.file指定运行docker内prometheus的配置文件

2、prometheus配置文件的设定

prometheus的配置文件采用的是yaml文件,yaml文件书写的要求如下:

大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

prometheus.yml的样例

# Prometheus全局配置项
global:scrape_interval:     15s # 设定抓取数据的周期,默认为1minevaluation_interval: 15s # 设定更新rules文件的周期,默认为1minscrape_timeout: 15s # 设定抓取数据的超时时间,默认为10s  external_labels: # 额外的属性,会添加到拉取得数据并存到数据库中   monitor: 'codelab_monitor'# Alertmanager配置
alerting:alertmanagers:- static_configs:- targets: ["localhost:9093"] # 设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口# rule配置,首次读取默认加载,之后根据evaluation_interval设定的周期加载
rule_files:- "alertmanager_rules.yml"- "prometheus_rules.yml"# scape配置
scrape_configs:
- job_name: 'prometheus' # job_name默认写入timeseries的labels中,可以用于查询使用scrape_interval: 15s # 抓取周期,默认采用global配置static_configs: # 静态配置- targets: ['localdns:9090'] # prometheus所要抓取数据的地址,即instance实例项- job_name: 'example-random'static_configs:- targets: ['localhost:8080']

3、动态更新prometheus的配置项

动态更新Prometheus的配置,即热更新加载,一共有两种方式:

1)向prometheus进程发送SIGHUP信号

2)curl -X POST http://localdns:9090/-/reload

参考链接:https://songjiayang.gitbooks.io/prometheus/content/qa/hotreload.html

4、prometheus数据展示

此处介绍两种Prometheus数据界面化显示的方式。

1)表达式浏览器

在浏览器中,输入部署prometheus数据库的机器ip地址以及端口号

http://localdns:9090/graph

界面展示如下,就可以通过浏览器查看Prometheus中的数据。

2)Grafana图形界面

安装启动

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.3.linux-amd64.tar.gz
tar zxvf grafana-5.2.3.linux-amd64.tar.gz
cd grafana-5.2.3.linux-amd64.tar.gz
bin/grafana-server web

Grafana默认服务端口号为3000,通过浏览器对Grafana进行访问。

http://localdns:3000

默认登录名密码为"admin/admin"。

创建一个Prometheus数据源Data source:

1 在左侧工具栏中,点击"Configuration"菜单。
2 点击"Data Sources"。
3 点击"Add data source"。
4 数据源Type选择“Prometheus”。
5 设置Prometheus服务访问地址(例如:http://localhost:9090)。
6 调整其他想要的设置(例如:关闭代理访问)。
7 点击“Add”按钮,保存这个新数据源。

之后,通过添加仪表盘(dashboards)进行数据的展示。

二、Alertmanager(email报警)

1、Alertmanager安装

源码安装

mkdir -p $GOPATH/src/github.com/prometheus
cd $GOPATH/src/github.com/prometheus
git clone https://github.com/prometheus/alertmanager.git
cd alertmanager
make build

启动

./alertmanager-config.file= alertmanager.yml #默认配置项为alertmanager.yml

注:alertmanager.yml配置文件,默认是不存在的,需要新建。

2、alertmanager.yml的配置

# 全局配置项
global: resolve_timeout: 5m #处理超时时间,默认为5minsmtp_smarthost: 'smtp.sina.com:25' # 邮箱smtp服务器代理smtp_from: '******@sina.com' # 发送邮箱名称smtp_auth_username: '******@sina.com' # 邮箱名称smtp_auth_password: '******' # 邮箱密码或授权码  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/' # 企业微信地址

# 定义模板信心templates:  - 'template/*.tmpl'
# 定义路由树信息
route:group_by: ['alertname'] # 报警分组依据group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知group_interval: 10s # 在发送新警报前的等待时间repeat_interval: 1m # 发送重复警报的周期 对于email配置中,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝receiver: 'email' # 发送警报的接收者的名称,以下receivers name的名称# 定义警报接收者信息
receivers:- name: 'email' # 警报email_configs: # 邮箱配置- to: '******@163.com'  # 接收警报的email配置      html: '{{ template "test.html" . }}' # 设定邮箱的内容模板      headers: { Subject: "[WARN] 报警邮件"} # 接收邮件的标题    webhook_configs: # webhook配置    - url: 'http://127.0.0.1:5001'    send_resolved: true    wechat_configs: # 企业微信报警配置    - send_resolved: true      to_party: '1' # 接收组的id      agent_id: '1000002' # (企业微信-->自定应用-->AgentId)      corp_id: '******' # 企业信息(我的企业-->CorpId[在底部])      api_secret: '******' # 企业微信(企业微信-->自定应用-->Secret)      message: '{{ template "test_wechat.html" . }}' # 发送消息模板的设定
# 一个inhibition规则是在与另一组匹配器匹配的警报存在的条件下,使匹配一组匹配器的警报失效的规则。两个警报必须具有一组相同的标签。 inhibit_rules:   - source_match:      severity: 'critical'     target_match:      severity: 'warning'     equal: ['alertname', 'dev', 'instance']

注:

1)repeat_interval配置项,对于email来说,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝

2)企业微信注册地址:https://work.weixin.qq.com

上述配置的email、webhook和wechat三种报警方式。目前Alertmanager所有的报警方式有以下几个方面:

email_config
hipchat_config
pagerduty_config
pushover_config
slack_config
opsgenie_config
victorops_config

3、.tmpl模板的配置

1)test.tmpl

{{ define "test.html" }}
<table border="1"><tr><td>报警项</td><td>实例</td><td>报警阀值</td><td>开始时间</td></tr>{{ range $i, $alert := .Alerts }}<tr><td>{{ index $alert.Labels "alertname" }}</td><td>{{ index $alert.Labels "instance" }}</td><td>{{ index $alert.Annotations "value" }}</td><td>{{ $alert.StartsAt }}</td></tr>{{ end }}
</table>
{{ end }}

注:上述Labels项,表示prometheus里面的可选label项。annotation项表示报警规则中定义的annotation项的内容。

2)test_wechat.tmpl

{{ define "cdn_live_wechat.html" }}{{ range $i, $alert := .Alerts.Firing }}[报警项]:{{ index $alert.Labels "alertname" }}[实例]:{{ index $alert.Labels "instance" }}[报警阀值]:{{ index $alert.Annotations "value" }}[开始时间]:{{ $alert.StartsAt }}{{ end }}
{{ end }}

注:此处range遍历项与email模板中略有不同,只遍历当前没有处理的报警(Firing)。此项如果不设置,则在Alert中已经Resolved的报警项,也会被发送到企业微信。

4、在Prometheus模块定义告警规则

alertmanager_rules.yml样例配置文件(与prometheus同目录下)

groups:- name: test-rulesrules:- alert: InstanceDown # 告警名称expr: up == 0 # 告警的判定条件,参考Prometheus高级查询来设定for: 2m # 满足告警条件持续时间多久后,才会发送告警labels: #标签项team: nodeannotations: # 解析项,详细解释告警信息summary: "{{$labels.instance}}: has been down"description: "{{$labels.instance}}: job {{$labels.job}} has been down "      value: {{$value}}

5、告警信息生命周期的3中状态

1)inactive:表示当前报警信息即不是firing状态也不是pending状态

2)pending:表示在设置的阈值时间范围内被激活的

3)firing:表示超过设置的阈值时间被激活的

三、结果展示

启动prometheus和alertmanager,满足报警条件后,就可以收到报警邮件了。

1、浏览器界面化告警展示

在浏览器输入alertmanager的配置地址,即可查看所监控到的报警信息

http://localdns:9093/#/alerts

如图所示:

2、邮箱告警展示

1)原始邮箱告警展示

2)模板邮箱告警展示

3、企业微信告警展示

参考链接:

https://www.kancloud.cn/cdh0805010118/prometheus/719379

https://songjiayang.gitbooks.io/prometheus/content/alertmanager/what.html

https://www.kancloud.cn/cdh0805010118/prometheus/719380

https://blog.csdn.net/qq_21398167/article/details/76008594?locationNum=10&fps=1

https://blog.qikqiak.com/post/alertmanager-of-prometheus-in-practice/

转载于:https://www.cnblogs.com/longcnblogs/p/9620733.html

Prometheus 和 Alertmanager实战配置相关推荐

  1. (四) prometheus + grafana + alertmanager 配置Kafka监控

    安装请看https://blog.51cto.com/liuqs/2027365 ,最好是对应的版本组件,否则可能会有差别. (一)prometheus + grafana + alertmanage ...

  2. 通过Alertmanager实现Prometheus的告警告警配置(邮箱加钉钉)

    通过Alertmanager实现Prometheus的告警 告警配置 Prometheus本身不支持的告警功能,主要通过插件Alertmanager来实现告警.Alertmanager用于接收Prom ...

  3. alertmanager监控 Prometheus 告警,alertmanage配置邮件告警

    1.搭建Prometheus,node及mysql参考该链接: 配置grafana展示prometheus监控数据 2.下载安装 alert manager: https://prometheus.i ...

  4. Prometheus配合 alertmanager 使用企业微信告警(坑已平!!!)

    部署Prometheus 和 Alertmanager略 安装包部署prometheus+Grafana+node_exporter_争取不加班!的博客-CSDN博客 prometheus监控报警部署 ...

  5. Prometheus监控以及告警配置

    Prometheus监控 Prometheus简介 Prometheus是一套开源的系统监控报警框架.Prometheus作为新一代的云原生监控系统,相比传统监控监控系统(Nagios或者Zabbix ...

  6. Prometheus+Grafana监控安装及配置JVM实现企业微信告警

    背景 本人Java开发工程师一枚,主攻后端,需要搭建一套Prometheus+Grafana的监控系统,采用企业微信告警通知.在网上各种查阅资料的同时,发现很多资料都大致相通且不完整,踩坑无数,经过多 ...

  7. 【Prometheus】Alertmanager告警全方位讲解

    Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告 ...

  8. docker-compose 部署prometheus+grafana+alertmanager+chronograf+prometheus-webhook-dingtalk+loki

    tree树状图 ├── alertmanager │ ├── alertmanager.yml │ └── alertmanager.yml_bak ├── chronograf ├── docker ...

  9. docker-compose搭建prometheus+granafa+alertmanager+dingtalk

    文章目录 前言 一.docker-compose安装 1.1 安装docker 1.2 安装docker-compose 二.路径准备 三.配置文件准备 3.1 prometheus.yml 3.2 ...

  10. Prometheus监控系部署配置过程

    一.前言 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),基于Go语言开发,是Google BorgMon监控系统的开源版本.Prometheus在201 ...

最新文章

  1. 基于 KubeVela 与 Kubernetes 打造“无限能力”的开放 PaaS
  2. WiFi安全之WPA介绍
  3. How is setModel triggering propery binding
  4. 分区起始位置参数溢出_IIS6.0缓冲区溢出漏洞深度分析(CVE-2017-7269)
  5. mysql中having的例子_有关mysql中having子句对组记录进行筛选的例子
  6. 利用Onionshare 共享匿名文件
  7. easydarwin 安装_EasyDarwin HLS直播详细配置指南
  8. 2019年湖南省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书-A卷
  9. HDFS数据加密空间--Encryption zone
  10. 台服天堂2更新服务器无响应,天堂2台服被限制怎么回事?该怎么解决?
  11. python 期货现货差价监测_期货现货价差小工具——天勤量化(TqSdk)
  12. mc服务器地皮系统权限指令,我的世界地皮指令大全
  13. Pandas详解十之Dropna滤除缺失数据
  14. 一看就懂的贪吃蛇游戏(c++实现)
  15. python集合及其运算
  16. echarts 环状饼图 显示lebel
  17. python-爬虫中的extract()
  18. 用人单位与劳动者达成的不缴纳社会保险费的协议是否有效?
  19. C/C++ 大公司笔试题(一)
  20. python 机器人运动仿真_使用RoboDK对工业机器人与传送带进行动态仿真

热门文章

  1. 算法:翻转图片Rotate Image
  2. 2021-08-24XLNET 语言模型
  3. Crashing Balloon ZOJ1003
  4. 估计理论(4):例5.8说明如何用完备的充分统计量找到MVU估计
  5. 解决github访问慢
  6. java基础学习(9)堆和栈的区别详解
  7. 什么是OM3、OM4光纤跳线?
  8. 美图欣赏,转载[原文链接http://toutiao.com/a4001258776/]
  9. 超级易懂的非递归实现二叉树三种遍历(与网上都不一样)
  10. aesmiyao php_PHP实现的AES 128位加密算法示例