首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

作者头像
July
发布2019-08-30 15:18:19
2.4K0
发布2019-08-30 15:18:19
举报
文章被收录于专栏:数据库干货铺数据库干货铺

俗话说,没有监控的系统就是在裸奔,好的监控就是运维人员的第三只手,第三只眼。本文将使用prometheus及Grafana搭建一套监控系统来监控主机及数据库(MySQL、Redis)。

1. 安装Grafana

Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus等数据源。

1.1 下载并安装

下载地址:https://grafana.com/grafana/download

选择最新的版本进行安装,按照网站的提示运行脚本即可(监控服务器需可访问外网,如无法访问外网可与我沟通如何离线快速部署)。

运行如下脚本

1.2 启动grafana

安装完成后,grafana服务默认已安装,配置文件为/etc/grafana/grafana.ini,如需修改路径及端口,可在该文件中修改

启动grafana

1.3 登录grafana

访问页面http://服务器IP:3000 ,默认账号、密码admin/admin 首次登录将提示修改密码,建议修改

2. 安装Prometheus

2.1 Prometheus 主程序安装

Prometheus 主程序,主要是负责存储、抓取、聚合、查询方面

可登录官网进行下载,官网下载地址:https://prometheus.io/download/

根据操作系统类别选择文件进行下载,本次部署在linux上

2.2 启动prometheus主程序

生产环境可参考如下方式启动

/** 生产环境启动*/
nohup ./prometheus --config.file=prometheus.yml --web.enable-lifecycle --storage.tsdb.retention.time=60d   &

/**   
 --web.enable-lifecycle  加上此参数可以远程热加载配置文件,无需重启prometheus,调用指令是curl -X POST http://ip:9090/-/reload
-- storage.tsdb.retention.time 数据默认保存时间为15天,启动时加上此参数可以控制数据保存时间

*/

其他的参数及配置可以在prometheus.yml中调整及配置

3. 在需监控的机器上部署exporter

3.1 监控linux主机

下载监控linux主机的node_exporter,依旧从官网下载

/**  下载  */
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

/**  解压  */
tar  -zxvf node_exporter-0.18.1.linux-amd64.tar.gz

可以按照默认方式启动

3.2 监控MySQL

3.2.1 下载

下载监控MySQL的mysqld_exporter,依旧从官网下载

3.2.2 监控账号及修改文件配置

在MySQL里配置MySQL监控账号

/**  创建账号  */
mysql> CREATE USER 'mysql_monitor'@'localhost' identified by 'mysql_monitor'; 
/** 授权 */
mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysql_monitor'@'localhost'; 
mysql> GRANT SELECT ON performance_schema.* TO 'mysql_monitor'@'localhost';

/** 
注意,不用版本对权限要求不一致,启动时注意查看日志,如权限不足则继续授权或创建对应的账号 
*/

配置文件修改

cd mysqld_exporter-0.12.0.linux-amd64

vim .my.cnf 
/**  添加如下配置 */
[client]
port=3306
user=mysql_monitor
password=mysql_monitor

3.2.3 启动监控脚本

3.3 监控redis

3.3.1 下载redis_exporter

官网上没有redis_exporter, 可以从github上获取,另外redis插件无需放在redis机器上也可以

3.3.2 启动redis_exporter

/**  redis无密码 */
nohup  ./redis_exporter -redis.addr=192.168.56.118:6379 -web.listen-address 0.0.0.0:9121  &

/**  redis有密码  */
nohup  ./redis_exporter -redis.addr=192.168.56.118:6479 -redis.password 123456   -web.listen-address 0.0.0.0:9122 &

/**   
 -web.listen-address  可以自定义监控端口
*/

4. 配置prometheus配置文件

4.1 添加各监控项

配置文件可以有多种配置方式,可以根据不同的分类和习惯配置。可参考如下方式配置

# 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: ['localhost:9090']

  - job_name: 'OS'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['192.168.56.114:9100']
      labels:
          instance: '192.168.56.114'
          
    - targets: ['192.168.56.116:9100']
      labels:
          instance: '192.168.56.116'

    - targets: ['192.168.56.117:9100']
      labels:
          instance: '192.168.56.117'
##  上述job单独做主机监控,每台主机的instance不同

  - job_name: 'mysql'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['192.168.56.116:9104']
      labels:
          instance: '192.168.56.116'
    
    - targets: ['192.168.56.117:9104']
      labels:
          instance: '192.168.56.117'

  ## 以上是监控mysql的,instance和主机的instance的相同

  - job_name: 'redis'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['192.168.56.118:9121','192.168.56.118:9122']
      labels:
          instance: '192.168.56.118'

    - targets: ['192.168.56.118:9100']
      labels:
          instance: '192.168.56.118'
#   可以类似上述这种,redis的主机及各redis监控项组合在一起,instance使用相同的

4.2 启动或热加载prometheus

/**  启动  */
nohup ./prometheus --config.file=prometheus.yml --web.enable-lifecycle --storage.tsdb.retention.time=60d   &

/**
-- storage.tsdb.retention.time 数据默认保存时间为15天,启动时加上此参数可以控制数据保存时间
*/

/**  热加载  */
curl -X POST http://ip:9090/-/reload


/**
热加载的前提是启动时加了--web.enable-lifecycle
*/

5. 配置各监控仪表盘

5.1 下载各监控仪表盘

以上模板grafana官方网站均有,可以根据自己的需要下载对应的模板,对应地址为https://grafana.com/grafana/dashboards

找到对应的仪表盘模板后进入下载

5.2 配置数据源

本次使用的均为prometheus数据源,因此配置一个prometheus的数据源

如果之前在grafana上没有配置过数据源 登录后会提示创建

选择prometheus

配置prometheus地址

最终save & Test即可

5.3 导入仪表盘

将5.1中下载的模板导入

导入

修改名称及数据源

import即可

5.4 配置完成后即可查看各监控情况

现在可以看一下炫酷的结果了。

主机监控如下

MySQL

Redis

其他如果需要其他监控项也可以自定义添加

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库干货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档