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.gztar 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 /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml
注:参数的简要说明
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 # 设定抓取数据的周期,默认为1min evaluation_interval: 15s # 设定更新rules文件的周期,默认为1min scrape_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)kill -HUP pid
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.gztar 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.gitcd alertmanagermake build
启动
./alertmanager-config.file= alertmanager.yml #默认配置项为alertmanager.yml
注:alertmanager.yml配置文件,默认是不存在的,需要新建。
2、alertmanager.yml的配置
# 全局配置项 global: resolve_timeout: 5m #处理超时时间,默认为5min smtp_smarthost: 'smtp.sina.com:25' # 邮箱smtp服务器代理 smtp_from: '******@sina.com' # 发送邮箱名称 smtp_auth_username: '******@sina.com' # 邮箱名称 smtp_auth_password: '******' #邮箱密码 # 定义路由树信息 route: group_by: ['alertname'] # 报警分组名称 group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知 group_interval: 10s # 在发送新警报前的等待时间 repeat_interval: 1m # 发送重复警报的周期 receiver: 'email' # 发送警报的接收者的名称,以下receivers name的名称 # 定义警报接收者信息 receivers: - name: 'email' # 警报 email_configs: # 邮箱配置 - to: '******@163.com' # 接收警报的email配置 # 一个inhibition规则是在与另一组匹配器匹配的警报存在的条件下,使匹配一组匹配器的警报失效的规则。两个警报必须具有一组相同的标签。 inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
3、在Prometheus模块定义告警规则
alertmanager_rules.yml样例配置文件(与prometheus同目录下)
groups: - name: test-rules rules: - alert: InstanceDown # 告警名称 expr: up == 0 # 告警的判定条件,参考Prometheus高级查询来设定 for: 2m # 满足告警条件持续时间多久后,才会发送告警 labels: #标签项 team: node annotations: # 解析项,详细解释告警信息 summary: "{{$labels.instance}}: has been down" description: "{{$labels.instance}}: job {{$labels.job}} has been down "
4、告警信息生命周期的3中状态
1)inactive:表示当前报警信息即不是firing状态也不是pending状态
2)pending:表示在设置的阈值时间范围内被激活的
3)firing:表示超过设置的阈值时间被激活的
三、结果展示
启动prometheus和alertmanager,满足报警条件后,就可以收到报警邮件了。
1、浏览器界面化展示
在浏览器输入alertmanager的配置地址,即可查看所监控到的报警信息
http://localdns:9093/#/alerts
如图所示:
2、邮箱展示
参考链接:
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