介绍
Grafana是一个可视化面板,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持zabbix、InfluxDB、Prometheus,MySQL,PotgreSQL等数据源。主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式。
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,可以用于监控Linux系统信息,MySQL等。
使用Grafana添加Prometheus数据源,可以实现MySQL非常友好的监控界面。
示意图
安装环境监控工具部署环境:
IP:10.xx.xxx.175
被监控环境:
IP:10.xx.xxx.181
安装包明细Golang:
go-1.4.3
>go-1.6
Prometheus:
prometheus-2.3.1
Prometheus exporter:
mysqld_exporter-0.10.0
node_exporter-0.16.0
grafana:
grafana-4.6.3-1.x86_64.rpm(最新版本5.2不可用)
grafana dashboard:
grafana-dashboards-1.9.0(最新版本1.12.0不可用)
参考及引用链接Go源码下载链接:
https://github.com/golang/go
Grafana-dashboards仪表盘下载链接:
https://github.com/percona/grafana-dashboards/tree/v1.9.0
Prometheus官方下载链接:
https://prometheus.io/download/
Granfana官方下载链接
https://grafana.com/grafana/download
Percona博客 搭建Prometheus+Grafana:
https://www.percona.com/blog/2016/02/29/graphing-mysql-performance-with-prometheus-and-grafana/
安装步骤
大前提:
由于网络不通,go get,git clone等均无效。所以本次安装步骤均以手动下载包的方式安装
一,下载好上述列出的所有安装包
二,安装Go环境(如果有Go环境跳过此步)
由于prometheus和grafana依赖Go环境,所以需要安装Golang 如果系统中已经有go>1.4.3版本,则不需要装go-1.4.3,只需执行:export GOROOT_BOOTSTRAP=go所在目录
如果系统中没有go环境,想装高版本Go,需要先装go-1.4.3cd go-go-1.4.3/src
./all.bash
安装完成后export GOROOT_BOOTSTRAP=go所在目录
继续安装高版本Go,这边装的是go-1.10.3:mv go-go-1.10.3 /usr/local/go
cd /usr/local/go/src
./all.bash
vim ~/.bash_profile 添加以下环境变量
export GOROOT=/usr/local/go
export GOPATH=/usr/local/go/bin
export PATH=/usr/local/go/bin:$PATH
source ~/.bash_profile
三,搭建Prometheustar -C /opt -zxvf prometheus-2.3.1.linux-amd64.tar.gz
cd /opt
mv prometheus-2.3.1.linux-amd64 prometheus
cd prometheus
mv prometheus.yml prometheus_bak.yml
vim prometheus.yml
编辑prometheus配置:
见[附录]-prometheus.yml
启动prometheus:关闭iptables和selinux./prometheus --config.file="prometheus.yml" &
启动完成后可以登录prometheus页面:http://10.37.123.175:9090
进入后点击菜单栏Status-Targets
进入Targets页面可以看到prometheus.yml中配置的linux和mysql状态是DOWN,显示连接10.37.123.181失败。这是正常现象。需要安装在待监控机器安装exporter工具来建立数据传输。
四,搭建prometheus exporter
exporter工具需要在待监控的服务器上进行安装,作用是格式化数据传输。tar -zxvf mysqld_exporter-0.10.0.linux-amd64.tar.gz
tar -zxvf node_exporter-0.16.0.linux-amd64.tar.gz
mv mysqld_exporter-0.10.0.linux-amd64 /usr/local/mysqld_exporter
mv node_exporter-0.16.0.linux-amd64 /usr/local/node_exporter
启动node_exporter:/usr/local/node_exporter/node_exporter &
创建mysqld_exporter用户:
mysqld_exporter需要连接到Mysql,所以需要Mysql的权限,先创建用户并赋予所需的权限:mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'prom'@'10.37.%' identified by '123456';
mysql> GRANT SELECT ON performance_schema.* TO 'prom'@'10.37.%';
创建.my.cnf配置文件:cd /usr/local/mysqld_exporter
cat < .my.cnf
[client]
user=prom
password=123456
host=10.37.123.181
EOF
启动mysqld_exporter:./mysqld_exporter -config.my-cnf=".my.cnf" &
启动完node_exporter和mysqld_exporter后,再回到http://10.37.123.175:9090 Status->Targets下 状态已经切换为UP
到此Prometheus安装完成,可以通过其监控os和mysql的状态数据,不过由于Prometheus图形界面不是很友好,继续安装Grafana。
五,安装Grafanayum localinstall grafana-4.6.3-1.x86_64.rpm
安装路径信息:二进制文件: /usr/sbin/grafana-server
init.d 脚本: /etc/init.d/grafana-server
环境变量文件: /etc/sysconfig/grafana-server
配置文件: /etc/grafana/grafana.ini
启动项: grafana-server.service
日志文件:/var/log/grafana/grafana.log
默认配置的sqlite3数据库:/var/lib/grafana/grafana.db
编辑Grafana配置项:vim /etc/grafana/grafana.ini
将dashboards.json配置项中的配置按图中所示修改:
(注意:参数前面的;必须去掉,不然不生效!!!
如果下载最新Grafana版本,则没有此配置项)
六,配置仪表盘:(注意:经测试Grafana-dashboards-1.10-1.12均无效,无法显示图表)
unzip grafana-dashboards-1.9.0.zip
cd grafana-dashboards-1.9.0
cp -r dashboards /var/lib/grafana/
grafana-3.x及以下版本需要执行以下命令,不然图形不显示sed -i 's/step_input:""/step_input:c.target.step/; s/ HH:MM/ HH:mm/; s/,function(c)/,"templateSrv",function(c,g)/; s/expr:c.target.expr/expr:g.replace(c.target.expr,c.panel.scopedVars)/' /usr/share/grafana/public/app/plugins/datasource/prometheus/query_ctrl.js
sed -i 's/h=a.interval/h=g.replace(a.interval, c.scopedVars)/' /usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js
七,启动Grafanaservice grafana-server start
如果提示已经启动则:
service grafana-server restart
登录Grafana页面:http://10.37.123.175:3000
初始用户名和密码:admin/admin
登录进入后,先点击add data source配置数据源:
配置信息如图所示,不要做其他任何修改:
配置完成后,点击dashboards->home进入主界面
点击最上方Home下拉按钮,即可选择想要的监控参数:
这里选择MySQL Overview,即可看到非常棒的图形化监控界面
[附录]
prometheus.yml:global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['10.xx.xxx.181:9100']
labels:
instance: db1
- job_name: mysql
static_configs:
- targets: ['10.xx.xxx.181:9104']
labels:
instance: db1