优势
- 易于管理
- 轻易获取服务内部状态
- 高效灵活的查询语句
- 支持本地和远程存储
- 采用http协议,默认pull模式拉取数据,也可以通过中间网关push数据
- 支持自动发现
- 可扩展
- 易集成(客户端分为不同语言的SDK和不同用途的exporter两种)
Prometheus运行流程
prometheus根据配置定时去拉取各个节点的数据,默认使用的拉取方式是pull,也可以使用pushgateway提供的push方式获取各个监控节点的数据。将获取到的数据存入TSDB,一款时序型数据库。此时prometheus已经获取到了监控数据,可以使用内置的PromQL进行查询。它的报警功能使用Alertmanager提供,Alertmanager是prometheus的告警管理和发送报警的一个组件。prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。
搭建GO语言环境
下载go安装包
wget https://dl.google.com/go/go1.12.3.linux-amd64.tar.gz
其他安装包可在此挑选: https://golang.google.cn/dl/
解压&配置
tar -C /usr/local -zxvf go1.12.3.linux-amd64.tar.gz
修改配置文件
vim /etc/profile
在末尾新增两行
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
刷新配置
source /etc/profile
检测是否安装成功
go version
安装Grafana
获取安装包
下载地址:https://grafana.com/grafana/download
在Linux联网环境下可以直接获取
wget https://dl.grafana.com/oss/release/grafana-6.3.5-1.x86_64.rpm
sudo yum localinstall grafana-6.3.5-1.x86_64.rpm
接着把Grafana加入到系统服务,将服务启动
sudo /sbin/chkconfig --add grafana-server
sudo service grafana-server start
安装Prometheus
下载地址: https://prometheus.io/download/
解压
tar -vxf prometheus-2.12.0.linux-amd64.tar.gz -C /usr/local/
制作软连接
ln -sv /usr/local/prometheus-2.12.0.linux-amd64/ /usr/local/prometheus
进入目录后执行命令
./prometheus
node_exporter安装
tar xvf node_exporter-0.18.1.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/node_exporter-0.18.1.linux-amd64/
nohup ./node_exporter >/dev/null 2>&1 &
修改 prometheus.yml
cd /usr/local/prometheus
vim prometheus.yml
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['IP:9090']- job_name: 'server'static_configs:- targets: ['IP:9100']
重启!! !
如果需要配置监控对象则配置(prometheus.yml)!!!!
配置文件大致可以分为四部分:
- global:全局配置,其中scrape_interval表示抓取一次数据的间隔时间,evaluation_interval表示进行告警规则检测的间隔时间;
- alerting:告警管理器(Alertmanager)的配置,目前还没有安装Alertmanager;
- rule_files:告警规则有哪些;
- scrape_configs:抓取监控信息的目标。一个job_name就是一个目标,其targets就是采集信息的IP和端口。这里默认监控了Prometheus自己,可以通过修改这里来修改Prometheus的监控端口。Prometheus的每个exporter都会是一个目标,它们可以上报不同的监控信息,比如机器状态,或者mysql性能等等,不同语言sdk也会是一个目标,它们会上报你自定义的业务监控信息。
整合Grafana
到设置页面配置Prometheus的连接信息
例子:计算出整个CPU的工作状态
(((count(count(node_cpu_seconds_total) by (cpu))) - avg(sum by (mode)(irate(node_cpu_seconds_total{mode='idle'}[5m])))) * 100) / count(count(node_cpu_seconds_total) by (cpu))
访问该地址:https://grafana.com/grafana/dashboards
使用官方推荐仪表盘!
推荐:https://www.jianshu.com/p/413fd42ae660