前言:今天给大家带来的是企业级监控解决方案Promethus+Grafana,其中Promethus用作监控数据采集与处理,而Grafana只是用作数据展示,话不多说,直接开干吧,所有安装包都已放入网盘
一、Promethus简介
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由[SoundCloud](https://soundcloud.com/)公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。<br /> Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。<br />Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。<br /> 输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:[https://github.com/prometheus](https://github.com/prometheus)<br />与其他监控系统相比,Prometheus的主要特点是:
一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)。
非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
一种灵活的查询语言。
不依赖分布式存储,单个服务器节点。
时间集合通过HTTP上的PULL模型进行。
通过中间网关支持推送时间。
通过服务发现或静态配置发现目标。
多种模式的图形和仪表板支持。
二、Promethus原理
基本原理就是这样:
exporter作为数据采集器部署在被监控端,暴露一个http接口给server端抓取数据
Promethus Server通过接口去每个exporter上抓取监控数据
实际上也可以通过pushgateway将监控数据主动推送给服务端
服务端存入监控数据,以K/V形式存储,并将报警推送给Alertmanager实现报警
三、安装Promethus
(1)服务端安装
1.安装go
[root@db-monitor-01 data]# yum install go -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 golang-1.9.4-1.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@db-monitor-01 data]# go version
go version go1.9.4 linux/amd64
2.上传解压安装包
tar xvf prometheus-2.3.2.linux-amd64.tar.gz -C /usr/local/
3.建立连接
ln -sv prometheus-2.3.2.linux-amd64 prometheus
4.配置文件
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux-cbpt
static_configs:
- targets: ['10.100.63.xxx:9100']
labels:
instance: MLF-master
- targets: ['10.100.63.xxx:9100']
labels:
instance: MLF-slave1
- targets: ['10.100.63.xxx:9100']
labels:
instance: MLF-slave2
- job_name: linux-fzxt
static_configs:
- targets: ['10.100.63.xxx:9100']
labels:
instance: FUZHU-master
- targets: ['10.100.63.xxx:9100']
labels:
instance: FUZHU-slave
- job_name: mysql-cbpt
static_configs:
- targets: ['10.100.63.xxx:9104']
labels:
instance: MLF-master
- targets: ['10.100.63.xxx:9104']
labels:
instance: MLF-slave1
- targets: ['10.100.63.xxx:9104']
labels:
instance: MLF-slave2
- job_name: mysql-fzxt
static_configs:
- targets: ['10.100.63.xxx:9104']
labels:
instance: FUZHU-master
- targets: ['10.100.63.xxx:9104']
labels:
instance: FUZHU-slave
5.启动Promethus
./prometheus --config.file=prometheus.yml --storage.tsdb.path="/storage/data" --storage.tsdb.retention=30d
config.file:指定配置文件
storage.tsdb.path:指定监控数据存放目录
storage.tsdb.retention:指定保留30天监控数据
6.查看状态
登陆ip:9090可以看到promethus自带的web界面,可以自己写类SQL查询数据,点击status可以看到节点的exporter的状态
(2)exporter安装
1.上传解压安装包
tar xvf mysqld_exporter-0.11.0.linux-amd64.tar.gz
tar xvf node_exporter-0.16.0.linux-amd64.tar.gz
mv node_exporter-0.16.0.linux-amd64 /usr/local/node_exporter
mv mysqld_exporter-0.11.0.linux-amd64 /usr/local/mysqld_exporter
2.启动node_exporter
node_export主要采集系统层的监控数据
/usr/local/node_exporter/node_exporter &
3.启动mysqld_exporter
mysqld_exporter主要采集mysql层的监控数据
3.1创建监控账号
GRANT REPLICATION CLIENT,PROCESS,SELECT ON *.* TO 'mysql_monitor'@'localhost' identified by 'xxxxxx';
3.2创建配置文件
vim /usr/local/mysqld_exporter/.my.cnf
[client]
user=mysql_monitor
password=xxxxxx
3.3启动mysqld_exporter
/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf="/usr/local/mysqld_exporter/.my.cnf" &
4.web界面测试数据获取
四、安装Grafana
1.上传RPM包后,直接安装即可
2.登陆web界面
登陆ip:3000,首次登陆初始账号密码都是admin,会提示修改密码
3.配置数据源
4.导入模板
网上找的模板很多不能用,直接导入我给的json格式的dashboard即可
看下效果图