Prometheus+Grafana搭建MySQL/StoneDB监控平台
Prometheus介绍
Prometheus 是由前 Google 工程师从 2012 年开始在 Soundcloud 以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了证明这一点,Prometheus 于 2016 年 5 月加入 CNCF 基金会,成为继 Kubernetes 之后的第二个 CNCF 托管项目,详细介绍可以参考:https://prometheus.fuckcloudnative.io/di-yi-zhang-jie-shao/overview
Prometheus 官方下载地址:https://prometheus.io/download/
Grafana 介绍:
Grafana 是一个开源的监控数据分析和可视化套件。最常用于对基 础设施和应用数据分析的时间序列数据进行可视化分析,也可以用于其他需要数据可视化分析的领域。Grafana 可以帮助你查询、可视化、告警、分析你所在意的指标和数据。可以与整个团队共享,有助于培养团队的数据驱动文化。
具体介绍可以查看官网介绍:Grafana 简介
Grafana 官网地址: https://grafana.com/
部署环境
A机器 Docker 部署 Prometheus+Grafana
B机器 mysqld_exporter+node_exporter
为何要挂载数据文件和配置文件?
因为本文采用 docker 部署方式,docker 容器重启后没有挂载出来的配置文件和数据文件有可能会被重置,为了防止监控数据丢失,需要把数据文件挂载出来,另外挂载配置文件可以在物理机上修改,重启 docker 即可应用到 docker 中,不需要进入到容器内部修改。
第一步:部署 Prometheus
在A机器上使用 docker 先拉起一个 Prometheus,或者从 Prometheus 官网下载 tar 包解压,拿到里面的 prometheus.yml 和 data 文件,放置到指定目录。本文把 data 和 yml 文件分别放置到 /home/prometheus 下的data/ 和config/ 文件下。
# 先启动一个没有挂载没有端口映射的 Prometheus
docker run -d \
prom/prometheus
mkdir -p /home/prometheus/data/
mkdir -p /home/prometheus/config/
# 拷贝配置和数据文件
docker ps
docker cp 3fe0e3ea2aa5:/etc/prometheus/prometheus.yml /home/prometheus/config/
docker cp 3fe0e3ea2aa5:/prometheus /home/prometheus/data/
# data 文件夹需要设置下权限,否则挂载进去会出现数据写入权限不足的问题
chmod 777 /home/zsp/prometheus/data/*
cd /home/zsp/prometheus/
tree
.
├── config
│ └── prometheus.yml
└── data
├── chunks_head
│ ├── 000001
│ └── 000002
├── queries.active
└── wal
├── 00000000
└── 00000001
重新启动一个新容器并设置挂载数据目录和配置文件。
docker run -d --restart=always --name=prometheus -p 9090:9090 \
-v /home/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /home/prometheus/data/:/prometheus/ prom/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus \
--web.enable-admin-api \
--web.enable-lifecycle \
--web.external-url='http://A机器IP:9090' \
--storage.tsdb.retention.time=30d
查看A机器 IP:9090 即部署成功,不成功请使用 docker logs 容器 ID 查看错误日志进行排查
第二步:部署 exporter
以 MySQL 和操作系统监控为示例:
建议使用 supervisord 进程来控制监控端的 exporter 服务行为。
supervisord 使用方法参考:https://www.jianshu.com/p/0b9054b33db3
部署 node_exporter
下载解压 node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64 node_exporter
mv node_exporter /usr/local/
cd /usr/local/node_exporter/
# 启动 node_exporter 测试是否正常
./node_exporter
# 启动新终端界面查询
ss -nltp |grep 9100
LISTEN 0 128 :::9100 :::* users:(("node_exporter",pid=17268,fd=3))