颜值实力派—打造MySQL运行监控环境
关注我们获得更多内容
关注我们获得更多精彩
作者 | 陈龙,云和恩墨西区工程师,一线服务过金融等行业,精通 oracle 性能优化,故障诊断,特殊恢复领域 。
摘要
本文给大家推荐一款颜值实力派的监控展示软件 Grafana,围绕 MySQL,快速打造 Prometheus+Grafana 监控系统。
提起监控软件,可能是这样的:
也有可能是这样的:
那么今天给大家推荐一款颜值实力派的监控展示软件 Grafana 。
本文围绕 MySQL,快速打造 Prometheus+Grafana 监控系统。
所需工具:
Prometheus
Grafana
mysqld_exporter
01
工具介绍
1)Prometheus,是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud 公司开发的。成立于2012年,之后许多公司和组织接受和采用prometheus,他们便将它独立成开源项目,并且有公司来运作.该项目有非常活跃的社区和开发人员,目前是独立的开源项目,任何公司都可以使用它。
官方 GitHub 地址为:https://github.com/prometheus/prometheus
官方地址:https://prometheus.io/
主要功能:
多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成)。
灵活的查询语句(PromQL)。
无依赖存储,支持 local 和 remote 不同模型。
采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
监控目标,可以采用服务发现或静态配置的方式。
支持多种统计数据模型,图形化友好。
-架构拓扑图-
功能简述:
prometheus server: 定期从静态配置的 targets 或者服务发现targets 抽取的数据。
exporters:负责向prometheus server传输抽取数据。比如监控主机有node-exporters,mysql有MySQL server exporter。
pushgateway:主要使用场景为:Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
Alertmanager:实现prometheus的告警功能。
webui:主要通过grafana来实现webui展示。
2)Grafana
grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,基于商业友好的 Apache License 2.0 开源协议。
在网络架构和应用分析中最流行的时序数据展示工具,并且也在工业控制、自动化监控和过程管理等领域有着广泛的应用。
grafana 有热插拔控制面板和可扩展的数据源,已经支持绝大部分常用的时序数据库
包含以下:Graphite、Elasticsearch、CloudWatch、InfluxDB、OpenTSDB、Prometheus
3)mysqld_exporter
mysqld_exporter主要用于抽取MySQL数据,回传到Prometheus service
02
快速部署
1)安装 grafana
登录 grafana 官网下载界面(https://grafana.com/get)选择下载。
下载到本地进行 yum 安装
[root@albert monitor]# yum localinstall grafana-5.2.1-1.x86_64.rpm
Loaded plugins: refresh-packagekit, security
Setting up Local Package Process
Examining grafana-5.2.1-1.x86_64.rpm: grafana-5.2.1-1.x86_64
Marking grafana-5.2.1-1.x86_64.rpm to be installed
file:///media/disk/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/disk/repodata/repomd.xml
Trying other mirror.
Resolving Dependencies
--> Running transaction check
---> Package grafana.x86_64 0:5.2.1-1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================================================================================
Installing:
grafana x86_64 5.2.1-1 /grafana-5.2.1-1.x86_64 158 M
Transaction Summary
=================================================================================================================================================================================================
Install 1 Package(s)
Total size: 158 M
Installed size: 158 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : grafana-5.2.1-1.x86_64 1/1
### NOT starting grafana-server by default on bootup, please execute
sudo /sbin/chkconfig --add grafana-server
### In order to start grafana-server, execute
sudo service grafana-server start
Verifying : grafana-5.2.1-1.x86_64
Installed:
grafana.x86_64 0:5.2.1-1
Complete!
[root@albert monitor]#
将 grafana-server 加入开机启动
[root@albert monitor]# service grafana-server start
Starting Grafana Server: ... [ OK ]
[root@albert monitor]# chkconfig --add grafana-server
[root@albert monitor]# service grafana-server status
grafana-server (pid 128243) is running...
端口:
[root@albert monitor]# netstat -plntu | grep grafana-serv
tcp 0 0 :::3000 :::* LISTEN 128243/grafana-serv
登录控制台,本地 IP+3000 端口(默认)
用户:admin
密码:admin(默认)
主菜单:
2)部署 Prometheus
解压安装包:
[root@albert monitor]# tar -zxvf prometheus-2.3.1.linux-amd64.tar.gz
prometheus-2.3.1.linux-amd64/
prometheus-2.3.1.linux-amd64/console_libraries/
prometheus-2.3.1.linux-amd64/console_libraries/menu.lib
prometheus-2.3.1.linux-amd64/console_libraries/prom.lib
prometheus-2.3.1.linux-amd64/prometheus
prometheus-2.3.1.linux-amd64/consoles/
prometheus-2.3.1.linux-amd64/consoles/node.html
prometheus-2.3.1.linux-amd64/consoles/prometheus.html
prometheus-2.3.1.linux-amd64/consoles/node-disk.html
prometheus-2.3.1.linux-amd64/consoles/node-overview.html
prometheus-2.3.1.linux-amd64/consoles/node-cpu.html
prometheus-2.3.1.linux-amd64/consoles/index.html.example
prometheus-2.3.1.linux-amd64/consoles/prometheus-overview.html
prometheus-2.3.1.linux-amd64/LICENSE
prometheus-2.3.1.linux-amd64/promtool
prometheus-2.3.1.linux-amd64/NOTICE
prometheus-2.3.1.linux-amd64/prometheus.yml
配置 Prometheus:
[root@albert prometheus-2.3.1.linux-amd64]# cat 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=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['172.16.94.181:9090']
运行 Prometheus:
[root@albert prometheus-2.3.1.linux-amd64]# ./prometheus --config.file=prometheus.yml
level=info ts=2018-07-11T09:16:00.496842912Z caller=main.go:222 msg="Starting Prometheus" version="(version=2.3.1, branch=HEAD, revision=188ca45bd85ce843071e768d855722a9d9dabe03)"
level=info ts=2018-07-11T09:16:00.496913131Z caller=main.go:223 build_context="(go=go1.10.3, user=root@82ef94f1b8f7, date=20180619-15:56:22)"
level=info ts=2018-07-11T09:16:00.496933529Z caller=main.go:224 host_details="(Linux 2.6.32-431.el6.x86_64 #1 SMP Wed Nov 20 23:56:07 PST 2013 x86_64 albert (none))"
level=info ts=2018-07-11T09:16:00.496949832Z caller=main.go:225 fd_limits="(soft=1024, hard=4096)"
level=info ts=2018-07-11T09:16:00.505128258Z caller=main.go:514 msg="Starting TSDB ..."
level=info ts=2018-07-11T09:16:00.509703595Z caller=web.go:415 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2018-07-11T09:16:00.5495258Z caller=main.go:524 msg="TSDB started"
level=info ts=2018-07-11T09:16:00.549583533Z caller=main.go:603 msg="Loading configuration file" filename=prometheus.yml
level=info ts=2018-07-11T09:16:00.570661335Z caller=main.go:500 msg="Server is ready to receive web requests."
登录Prometheus控制台,由于还没有部署MySQL_EXPORTER,所以只有Prometheus。
3)安装 mysqld_exporter
mysqld_exporter,负责抽取 MySQL 基础性能数据。
下载:mysqld_exporter(prometheus.io/download/#mysqld_exporter)。当然也要下载对应系统的版本。
解压后的内容如下:
[root@albert mysqld_exporter-0.11.0.linux-amd64]# ls -l
total 14064
-rw-r--r--. 1 3434 3434 11325 Jun 29 11:08 LICENSE
-rwxr-xr-x. 1 3434 3434 14381431 Jun 29 11:00 mysqld_exporter
-rw-r--r--. 1 3434 3434 65 Jun 29 11:08 NOTICE
进行mysqld_exporter 配置:
这里配置需要连接监控的MySQL数据库信息
[root@albert mysqld_exporter-0.11.0.linux-amd64]# cat .my.cnf
[client]
host = 172.16.94.181
user=root
password=xxxxx
启动 mysqld_exporter:
[root@albert mysqld_exporter-0.11.0.linux-amd64]# ./mysqld_exporter --config.my-cnf="/monitor/mysqld_exporter-0.11.0.linux-amd64/.my.cnf"
INFO[0000] Starting mysqld_exporter (version=0.11.0, branch=HEAD, revision=5d7179615695a61ecc3b5bf90a2a7c76a9592cdd) source="mysqld_exporter.go:206"
INFO[0000] Build context (go=go1.10.3, user=root@3d3ff666b0e4, date=20180629-15:00:35) source="mysqld_exporter.go:207"
INFO[0000] Enabled scrapers: source="mysqld_exporter.go:218"
INFO[0000] --collect.global_status source="mysqld_exporter.go:222"
INFO[0000] --collect.global_variables source="mysqld_exporter.go:222"
INFO[0000] --collect.slave_status source="mysqld_exporter.go:222"
INFO[0000] --collect.info_schema.tables source="mysqld_exporter.go:222"
INFO[0000] Listening on :9104 source="mysqld_exporter.go:232"
登录到端口 9104 的界面,可以看到抽取的数据信息。
4)在 Prometheus 中配置 mysqld_exporter
exporter启动后,需要在 Prometheus 中正确的配置。修改 prometheus 目录中的prometheus.yml,增加配置如下:
[root@albert prometheus-2.3.1.linux-amd64]# cat 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=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['172.16.94.181:9090']
# - job_name: mysql
- job_name: mysql
static_configs:
- targets: ['172.16.94.181:9104']
labels:
instance: db1
备注:
job_name,当前执行job的名字
targets,连接的主机
instance,数据库实例的标签明
重启 prometheus,点击导航栏中的 status->targets 可以看到,mysql 的 exporter 已经集成进来了。
5) Grafana 和 Prometheus 关联
现在增加数据源将 Grafana 和 Prometheus 关联起来。点击 Add data source,如下填写数据保存即可:
出现 DATA SOURCE IS WORKING 表示关联成功
6)添加仪表盘
Grafana,提供了大量的仪表盘展示 json,可以到官网进行选择。
本文在 Grafana GitHub 上随意选择了一个 json
把 json 导入到本地
到这里,大功完成了。一起来看一下监控仪表盘吧!
03
表盘内容
还可以设置告警信息:
关于定制化 Grafana 展示界面,可以参考官方文档进行修改,里面有具体的规则及其粒度设置信息。
下期预告:如何监控 docker
原创:陈龙。
投稿:有投稿意向技术人请在公众号对话框留言。
转载:意向文章下方留言。
更多精彩请关注 “数据和云” 公众号 。
招聘专栏
Oracle 售前工程师(广州、深圳、上海、武汉、北京、石家庄)
Oracle 高级工程师(上海、深圳、北京、成都、昆明、贵州、西宁)
MySQL 技术经理(上海、南京、成都)
超高待遇:丰厚的年终奖,五险一金,高额学习基金,团建旅游,法定节假日,福利假期等。
推荐他人成功入职有好礼(iPhone X)相送 。
投递简历至邮箱:hr@enmotech.com
资源下载
关注公众号:数据和云(OraNews)回复关键字获取
2018DTCC , 数据库大会PPT
2017DTC,2017 DTC 大会 PPT
DBALIFE ,“DBA 的一天”海报
DBA04 ,DBA 手记4 电子书
122ARCH ,Oracle 12.2体系结构图
2017OOW ,Oracle OpenWorld 资料
PRELECTION ,大讲堂讲师课程资料
近期文章
仅仅使用AWR做报告? 性能优化还未入门
实战课堂:一则CPU 100%的故障分析
杨廷琨:如何编写高效SQL(含PPT)
一份高达555页的技术PPT会是什么样子?
大象起舞:用PostgreSQL解海盗分金问题
ProxySQL!像C罗一样的强大
高手过招:用SQL解决环环相扣刑侦推理问题
颜值实力派—打造MySQL运行监控环境相关推荐
- mysql mtop 使用_MYSQLMTOP监控环境搭建
MySQLMTOP是一个由Python+PHP开发的MySQL企业级监控系统.系统由Python实现多进程数据采集和告警,PHP实现WEB展示和管理.最重要是MySQL服务器无需安装任何Agent,只 ...
- 2012 iis php mysql_Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建wordpress博客教程
Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程 一.环境说明: 操作系统:Windows Server2012 R2 PHP版本:php 5.5.8 MySQ ...
- php 运行环境 去mysql,php、MySql运行环境
php.MySql运行环境 这里介绍一个集成环境 XAMPP. XAMPP 是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发行版.XAMPP 的确非常容易安装和使用:只需下 ...
- iis8.5 php mysql_Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
这篇文章主要介绍了Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程,需要的朋友可以参考下 准备篇 一.环境说明: 操作系统:Windows Server 201 ...
- 对正在运行的mysql进行监控
对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql &g ...
- MySQL在Docker环境下运行基础
墨墨导读:MySQL在Docker环境下运行的基础操作,本文从Docker介绍.安装Docker.MySQL安装部署几个方面展开介绍. 另:墨天轮邀请到原厂专家直播解析MySQL的性能管理,欢迎大家报 ...
- win2012 r2 iis php,Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建wordpress博客教程
运行环境搭建教程 一.环境说明: 操作系统:Windows Server2012 R2 PHP版本:php 5.5.8 MySQL版本:MySQL5.6.15 二.相关软件下载: 1.PHP下载地址: ...
- 云主机mysql环境_云主机搭建php+mysql运行环境教程(护卫神 PHP套件)
目前windows系统使用iis来搭建php+mysql环境的居多,由于手动配置会出现很多意想不到的错误以及安全上的问题,这里推荐的是护卫神·PHP套件,可以非常方便的搭建好php+mysql+php ...
- MySQL 性能监控4大指标——第一部分
[编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分将详细介绍前两个指标: 查询吞吐量与查询执行性能.文章系国内 ITOM 管理平台 OneAPM ...
最新文章
- 京东商城-商城研发部 算法岗面试
- 115天 起飞ing
- set删除一个元素时间复杂度_set/map接口及其实现类
- Java中三种交换值得方式
- DCASE 2013任务1(声学场景分类)参赛作品相关信息
- Facebook 中国程序员之死
- 演示:思科交换机的Telnet管理与SSH管理
- 「晓松奇谈」——矮大紧语录
- PJzhang:360压缩的用户许可协议和隐私政策阅读
- Kotlin-Android-Extensions:不仅仅是替代findViewById
- model.train()与model.eval()的用法
- 安卓逆向——刷机Pixel2 ROOT
- 基于阿里云API的图像文字识别
- csdn人工客服体验2小时-9.26
- HUD1.2.4 Nasty Hacks
- [SDOI2012]拯救小云公主【bfs+二分答案】
- 中鑫吉鼎|家庭成长期如何进行理财规划
- 小傻蛋的妹妹跟随小甲鱼学习Python的第一节001
- ERP沙盘人机模拟系统人机对抗第一名攻略
- 【约稿】给自己交一份年度总结——我的2014年
热门文章
- 在实践中总结出的几条 CodeReview 实用经验
- 修复IE的浮动元素双倍边距Bug
- aix查看oracle进程内存,Aix 查看进程占用内存大小(按从大小排列)
- python3 https_python3安装,支持openssl,支持采集https
- react入门(1)之阮一峰react教程
- 1. K近邻算法(KNN)
- Java对象表示方式1:序列化、反序列化和 transient 关键字的作用
- ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
- Python开发【Part 7】:常用模块
- 文件下载及web文件的contentType类型大全