Prometheus 是一套开源的系统监控报警框架。Prometheus 所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB):属于同一指标名称,同一标签集合的、有时间戳标记的数据流。除了存储的时间序列,Prometheus 还可以根据查询请求产生临时的、衍生的时间序列作为返回结果
Exporter 是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取
Grafana 是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知
本次实验环境:
操作系统 :CentOS Linux release 7.6.1810
MySQL :5.6.43
一.下载Prometheus
下载地址:https://prometheus.io/download/
选择合适的版本,右键点击链接并复制链接地址,到linux系统内 用wget 命令下载并解压,这里我下的是2.8.1版本
wget https://github.com/prometheus/prometheus/releases/download/v2.8.1/prometheus-2.8.1.linux-amd64.tar.gz
tar zxvf prometheus-2.8.1.linux-amd64.tar.gz
mv prometheus-2.8.1.linux-amd64 /opt/prometheus
二.下载并运行 mysqld_exporter,node_exporter
exporter 是需要安装在需要被监控的服务器上的,本次演示为了方便,我就把所有软件都安装在同一个服务器上了
1.下载解压
这两个node_exporter 需要运行在需要被监控的服务器上
在上面 Prometheus 的下载页面,也提供了很多exporter的下载,其中就包括了mysqld_exporter和node_exporter
#下载解压mysqld_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/mysqld_exporter-0.11.0.linux-amd64.tar.gz
tar zxvf mysqld_exporter-0.11.0.linux-amd64.tar.gz
mv mysqld_exporter-0.11.0.linux-amd64 /opt/mysqld_exporter
#下载解压node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar zxvf node_exporter-0.17.0.linux-amd64.tar.gz
mv node_exporter-0.17.0.linux-amd64 /opt/node_exporter
2.运行
进入mysqld_exporter安装目录并运行node_exporter
cd /opt/node_exporter
nohup ./node_exporter &
运行mysqld_exporter需要连接到MySQL,需要授权,在本案例中,被授权的账号为mysql_monitor,密码为123123
#先用root 账号登录mysql
mysql -u root -p
#输入密码登录成功执行授权sql语句
grant replication client, process on *.* to mysql_monitor@"localhost" identified by "123123";
grant select on performance_schema.* to mysql_monitor@"localhost";
授权后进入mysqld_exporter安装目录创建.my.cnf配置文件,并运行mysqld_exporter
cd /opt/mysqld_exporter
vim .my.cnf
.my.cnf文件中写入以下内容
[client]
user=mysql_monitor
password=123123
保存后,运行 mysqld_exporter
nohup ./mysqld_exporter --config.my-cnf=.my.cnf &
mysqld_exporter占用9104端口, node_exporter 占用9100端口
三. 配置prometheus 并运行
进入prometheus安装路径并修改配置文件
cd /opt/prometheus
vim prometheus.yml
配置文件修改后内容如下
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
labels:
instance: 'db1'
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
labels:
instance: 'nd1'
每个job_name标签标示一个监控的job
targets 标签标示受监控的应用的 ip和端口号
注意:这个配置文件要特别注意格式缩进,严格按照他原来的格式来修改,不然会导致prometheus运行不了。
运行prometheus
nohup ./prometheus --config.file=./prometheus.yml &
运行后可以通过 cat nohup.out 查看运行日志
浏览器访问 服务器的9090端口可以访问prometheus的页面
然后我们进入status 目录下的Targets页面
我们可以看到,我们在配置文件配置的三个监控的job状态都是up的
如果状态不是up,则证明该job的配置有问题或着监控的应用没有运行起来,可以返回去检查一下。
prometheus 对于数据的展现并不直观和美观,所以,我们需要grafana
四.下载安装并运行Grafana
下载地址:https://grafana.com/grafana/download
可以按照官网的指导下载安装合适的版本,这里我下载的是6.1.3版本
wget https://dl.grafana.com/oss/release/grafana-6.1.3-1.x86_64.rpm
sudo yum localinstall grafana-6.1.3-1.x86_64.rpm
然后运行grafana
systemctl start grafana-server
运行后我们从浏览器访问服务的3000端口,可以访问grafana的页面
初始账号和密码 都是 admin
登录成功并修改了密码之后,我们添加一个data source ,并且在选择data source type 时选择 Prometheus
在配置好data source 后点击 save&test 按钮,如果提示data source is working 则为成功
配置好 data sources 后,我们需要去下载dashboard 的json文件并导入,
当然,你也可以自己去创建dashboard.
本次我们下载 “mysql overview” 和 “1 Node Exporter 0.16 0.17 for Prometheus 监控展示看板” ,下面演示 “mysql overview” dashboard 的json文件下载过程
dashboard 的json文件下载地址:https://grafana.com/dashboards
我选择了一个下载次数最多的,选择后,我们可以预览这个dashbord 展示的内容,点击 dowload json 下载 json 文件,这里还需要注意一下 Dependencies里的版本,因为有些版本不支持的问题可能会导致导入的dashboard 不显示图标或者图表都是空的。如果下载的dashboard用不了,可以换一个试试。
“1 Node Exporter 0.16 0.17 for Prometheus 监控展示看板” 的下载方法和上面差不多。
下载了 “”mysql overview“” 和 “1 Node Exporter 0.16 0.17 for Prometheus 监控展示看板” 的json文件之后,我们需要导入到grafana,
我演示下 ‘1 Node Exporter 0.16 0.17 for Prometheus 监控展示看板’ dashboard的json文件导入。
点击 upload json file,并选择下载好的json文件
修改好 name 和 prometheus node 后 点击import
然后就备件款的node的信息就很直观且美观的展现出来了。但是这个dashboard的磁盘总空间 那一块 有警告 说找不到 grafana-piechart-panel 插件,接下来我们就进行插件的安装
grafana-piechart-panel插件 是一个饼状图插件,grafana的插件安装很简单
在grafana 安装的服务器环境 执行以下命令进行插件安装
grafana-cli plugins install grafana-piechart-panel
#插件安装后重启grafana
systemctl restart grafana-server
然后我们刷新下 grafana的dashboar页面 就可以看到饼状图显示出来了
本次监控平台的简单搭建完成,关于更高级更深入的使用还需要继续研究。