监控利器出鞘PrometheusGrafana监控MySQL
俗话说,没有监控的系统就是在裸奔,好的监控就是运维人员的第三只手,第三只眼。本文将使用prometheus及Grafana搭建一套监控系统来监控主机及数据库(MySQL、Redis)。
1。安装Grafana
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus等数据源。
1。1下载并安装
下载地址:https:grafana。comgrafanadownload
选择最新的版本进行安装,按照网站的提示运行脚本即可(监控服务器需可访问外网,如无法访问外网可与我沟通如何离线快速部署)。
运行如下脚本wgethttps:dl。grafana。comossreleasegrafana6。3。31。x8664。rpmsudoyumlocalinstallgrafana6。3。31。x8664。rpm
1。2启动grafana
安装完成后,grafana服务默认已安装,配置文件为etcgrafanagrafana。ini,如需修改路径及端口,可在该文件中修改
启动grafanaetcinit。dgrafanaserverstart
1。3登录grafana
访问页面http:服务器IP:3000,默认账号、密码adminadmin首次登录将提示修改密码,建议修改
2。安装Prometheus
2。1Prometheus主程序安装
Prometheus主程序,主要是负责存储、抓取、聚合、查询方面
可登录官网进行下载,官网下载地址:https:prometheus。iodownload
根据操作系统类别选择文件进行下载,本次部署在linux上
下载wgethttps:github。comprometheusprometheusreleasesdownloadv2。12。0prometheus2。12。0。linuxamd64。tar。gz解压tarzxvfprometheus2。12。0。linuxamd64。tar。gz
2。2启动prometheus主程序
生产环境可参考如下方式启动生产环境启动nohup。prometheusconfig。fileprometheus。ymlweb。enablelifecyclestorage。tsdb。retention。time60dweb。enablelifecycle加上此参数可以远程热加载配置文件,无需重启prometheus,调用指令是curlXPOSThttp:ip:9090reloadstorage。tsdb。retention。time数据默认保存时间为15天,启动时加上此参数可以控制数据保存时间
其他的参数及配置可以在prometheus。yml中调整及配置
3。在需监控的机器上部署exporter
3。1监控linux主机
下载监控linux主机的nodeexporter,依旧从官网下载
下载wgethttps:github。comprometheusnodeexporterreleasesdownloadv0。18。1nodeexporter0。18。1。linuxamd64。tar。gz解压tarzxvfnodeexporter0。18。1。linuxamd64。tar。gz
可以按照默认方式启动启动nodeexportercdnodeexporter0。18。1。linuxamd64nohup。nodeexporter默认端口9100
3。2监控MySQL
3。2。1下载
下载监控MySQL的mysqldexporter,依旧从官网下载
下载wgethttps:github。comprometheusmysqldexporterreleasesdownloadv0。12。1mysqldexporter0。12。1。linuxamd64。tar。gz解压tarzxvfmysqldexporter0。12。1。linuxamd64。tar。gz
3。2。2监控账号及修改文件配置
在MySQL里配置MySQL监控账号创建账号mysqlCREATEUSERmysqlmonitorlocalhostidentifiedbymysqlmonitor;授权mysqlGRANTREPLICATIONCLIENT,PROCESSON。TOmysqlmonitorlocalhost;mysqlGRANTSELECTONperformanceschema。TOmysqlmonitorlocalhost;注意,不用版本对权限要求不一致,启动时注意查看ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a,如权限不足则继续授权或创建对应的账号
配置文件修改cdmysqldexporter0。12。0。linuxamd64vim。my。cnf添加如下配置〔client〕port3306usermysqlmonitorpasswordmysqlmonitor
3。2。3启动监控脚本nohup。mysqldexporterconfig。mycnf。my。cnf
3。3监控redis
3。3。1下载redisexporter
官网上没有redisexporter,可以从github上获取,另外redis插件无需放在redis机器上也可以下载wgethttps:github。comoliver006redisexporterreleasesdownloadv0。30。0redisexporterv0。30。0。linuxamd64。tar。gz解压tarzxvfredisexporterv0。30。0。linuxamd64。tar。gz
3。3。2启动redisexporterredis无密码nohup。redisexporterredis。addr192。168。56。118:6379web。listenaddress0。0。0。0:9121redis有密码nohup。redisexporterredis。addr192。168。56。118:6479redis。password123456web。listenaddress0。0。0。0:9122web。listenaddress可以自定义监控端口
4。配置prometheus配置文件
4。1添加各监控项
配置文件可以有多种配置方式,可以根据不同的分类和习惯配置。可参考如下方式配置myglobalconfigglobal:scrapeinterval:15sSetthescrapeintervaltoevery15seconds。Defaultisevery1minute。evaluationinterval:15sEvaluaterulesevery15seconds。Thedefaultisevery1minute。scrapetimeoutissettotheglobaldefault(10s)。Alertmanagerconfigurationalerting:alertmanagers:staticconfigs:targets:alertmanager:9093Loadrulesonceandperiodicallyevaluatethemaccordingtotheglobalevaluationinterval。rulefiles:firstrules。ymlsecondrules。ymlAscrapeconfigurationcontainingexactlyoneendpointtoscrape:HereitsPrometheusitself。scrapeconfigs:Thejobnameisaddedasalabeljobjobnametoanytimeseriesscrapedfromthisconfig。jobname:prometheusmetricspathdefaultstometricsschemedefaultstohttp。staticconfigs:targets:〔localhost:9090〕jobname:OSmetricspathdefaultstometricsschemedefaultstohttp。staticconfigs:targets:〔192。168。56。114:9100〕labels:instance:192。168。56。114targets:〔192。168。56。116:9100〕labels:instance:192。168。56。116targets:〔192。168。56。117:9100〕labels:instance:192。168。56。117上述job单独做主机监控,每台主机的instance不同jobname:mysqlmetricspathdefaultstometricsschemedefaultstohttp。staticconfigs:targets:〔192。168。56。116:9104〕labels:instance:192。168。56。116targets:〔192。168。56。117:9104〕labels:instance:192。168。56。117以上是监控mysql的,instance和主机的instance的相同jobname:redismetricspathdefaultstometricsschemedefaultstohttp。staticconfigs:targets:〔192。168。56。118:9121,192。168。56。118:9122〕labels:instance:192。168。56。118targets:〔192。168。56。118:9100〕labels:instance:192。168。56。118可以类似上述这种,redis的主机及各redis监控项组合在一起,instance使用相同的
4。2启动或热加载prometheus启动nohup。prometheusconfig。fileprometheus。ymlweb。enablelifecyclestorage。tsdb。retention。time60dstorage。tsdb。retention。time数据默认保存时间为15天,启动时加上此参数可以控制数据保存时间热加载curlXPOSThttp:ip:9090reload热加载的前提是启动时加了web。enablelifecycle
5。配置各监控仪表盘
5。1下载各监控仪表盘
以上模板grafana官方网站均有,可以根据自己的需要下载对应的模板,对应地址为https:grafana。comgrafanadashboards
找到对应的仪表盘模板后进入下载
5。2配置数据源
本次使用的均为prometheus数据源,因此配置一个prometheus的数据源
如果之前在grafana上没有配置过数据源登录后会提示创建
选择prometheus
配置prometheus地址
最终saveTest即可
5。3导入仪表盘
将5。1中下载的模板导入
导入
修改名称及数据源
import即可
5。4配置完成后即可查看各监控情况
现在可以看一下炫酷的结果了。
主机监控如下
MySQL
Redis
其他如果需要其他监控项也可以自定义添加
大家在部署过程中如有问题可留言或关注微信公众号沟通。
另外,大家帮忙关注一下我的微信公众号:数据库干货铺,将不定期有书籍及学习资料赠送