Centos7下Prometheus+Grafana部署 redis 以及 mysql 监控

本文详细介绍了如何在Centos7环境中部署Prometheus,配置redis和mysql的exporter,以及在Prometheus中添加相应的监控作业,最终实现对Redis和MySQL的实时监控,并通过Grafana进行可视化展示。

Prometheus 部署 redis 以及 mysql 监控

本篇文章部分内容与我前一篇文章衔接,看不明白的可以参考我前一篇文章

Redis 监控

对于 Redis 的监控,Prometheus 可以收集多种指标,包括但不限于:

  • 命令统计:如每个命令的调用次数、执行时间等。
  • 内存使用情况:包括已使用的内存量、内存碎片等。
  • 客户端连接数:当前连接到 Redis 服务器的客户端数量。
  • 键空间统计:如键的总数、过期键的数量等。

为了实现 Redis 的监控,通常需要使用 Redis 的 INFO 命令来获取这些指标,并通过一个 exporter(如 redis_exporter)将这些指标转换为 Prometheus 可以理解的格式。这个 exporter 会定期运行 INFO 命令并解析输出,然后将结果暴露给 Prometheus 服务器。

MySQL 监控

对于 MySQL 的监控,Prometheus 同样可以收集丰富的指标,包括:

  • 查询性能:如查询的响应时间、慢查询的数量等。
  • 连接统计:当前活动的连接数、尝试失败的连接数等。
  • 存储引擎状态:如 InnoDB 的缓冲区使用情况、锁的状态等。
  • 系统和进程信息:如 MySQL 服务器的 CPU 和内存使用情况。

为了监控 MySQL,通常会使用 mysql_exporter 这样的工具。这个 exporter 会连接到 MySQL 服务器,使用性能模式(Performance Schema)或其他机制来获取指标,并将它们暴露给 Prometheus 服务器。

配置和集成

在配置了 Redis 和 MySQL 的 exporter 之后,你需要在 Prometheus 的配置文件中添加对应的作业(job),以便 Prometheus 能够定期从这些 exporter 拉取指标。一旦配置完成并重启 Prometheus,它就会开始收集并存储这些指标,然后你可以使用 Prometheus 的查询语言(PromQL)来查询和分析这些指标,或者使用 Grafana 这样的工具来进行可视化。

准备

  • 两台虚拟机
192.168.100.125  Prometheus端
192.168.100.126  node端
  • 开放防火墙端口

更改防火墙

在两台机器执行
请运行以下命令以开放端口

firewall-cmd --zone=public --add-port=9104/tcp --permanent
firewall-cmd --zone=public --add-port=9121/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
  1. 打开 SELinux 的配置文件

    sudo vi /etc/selinux/config
    
  2. 在打开的配置文件中,找到SELINUX这一行。这一行可能设置为enforcing(强制模式)或permissive(宽容模式)。如果你想要将 SELinux 设置为宽容模式,确保这一行的值是permissive

    SELINUX=permissive
    
  3. 保存并关闭文件。如果你使用的是 vi 编辑器,按Esc,然后输入:wq并按Enter来保存并退出。

  4. 为了让新的 SELinux 配置生效,你需要重启你的系统:

    sudo reboot
    
  5. 或者,你也可以尝试使用setenforce命令临时将 SELinux 设置为宽容模式,但这只是临时的,重启后 SELinux 会恢复到配置文件中的设置:

    sudo setenforce 0
    

注意:node端(也就是被监控的)安装MySQL和redis

安装 mysql

  1. 下载 MySQL 安装包
yum install wget
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
  1. 安装 rpm 包
    使用 rpm 命令安装下载的 rpm 包
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
  1. 安装 MySQL 社区版
    使用 yum 安装 MySQL 社区版
yum -y install mysql-community-server --nogpgcheck

这里使用--nogpgcheck参数忽略 gpg 检查。 4. 启动 MySQL 服务
使用 service 命令启动 MySQL 服务

service mysqld start
  1. 查看 MySQL 状态
systemctl status mysqld
  1. 登录 MySQL 并修改密码
    查看 MySQL 的临时密码
grep 'temporary password' /var/log/mysqld.log

登录 MySQL

mysql -uroot -p

输入临时密码
修改 MySQL 的 root 用户密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

注意,为了安全起见,新密码应该足够复杂并难以猜测。

  1. (可选)修改 MySQL 密码安全校验强度
    如果设置的密码简单,可能需要将 MySQL 的密码安全校验强度改为低风险
SET GLOBAL validate_password_policy=LOW;
SET GLOBAL validate_password_length=4;

安装 mysqld_exporter

以下在 node 端执行

  1. 下载安装 mysqld_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
tar -zvxf mysqld_exporter-0.14.0.linux-amd64.tar.gz  -C /usr/local/
cd /usr/local/
mv mysqld_exporter-0.14.0.linux-amd64 mysqld_exporter
cd /usr/local/mysqld_exporter

下载慢尝试

wget https://githubfast.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
  1. mysqld_exporter 配置

进入数据库创建账号

CREATE USER 'exporter'@'%' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON _._ TO 'exporter'@'%';

使用环境变量方式配置一下数据库连接认证信息并启动 Exporter

export DATA_SOURCE_NAME='exporter:password@(localhost:3306)/'
cd /usr/local/mysqld_exporter
nohup ./mysqld_exporter &

使用配置文件,在当前机器~/.my.cnf 配置文件中增加配置信息,注意修改自己实际情况参数。注意这个.my.cnf 在 exporter 所在机器创建就行,和 mysql 实际自己的配置文件 my.cnf 没有一点关系

vi ~/.my.cnf
[client]
   host=127.0.0.1
   port=3306
   user=exporter
   password=password
  1. 使用 systemctl 管理 mysqld_exporter
vi /usr/lib/systemd/system/mysqld_exporter.service

写入

[Unit]
Description=mysqld_exporter for Prometheus monitoring
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/mysqld_exporter/
ExecStart=/usr/local/mysqld_exporter/./mysqld_exporter
Restart=always

[Install]
WantedBy=multi-user.target

mysqld_exporter 启动成功后,默认端口是 9104, 访问 ip:9104/metrics 即可查看 mysql 相关指标

以下在 Prometheus 端执行

  1. 修改 Prometheus 的配置文件 prometheus.yml 增加 mysql 相关 exporter job
vi  /usr/local/prometheus/prometheus.yml

在最后添加

  - job_name: 'mysql'
    static_configs:
     - targets: ['192.168.100.126:9104']
       labels:
          instance: mysql
  1. 重启 Prometheus 和 grafana
systemctl restart prometheus
systemctl restart grafana-server

进入 prometheus 的 web 界面,再次选择 targets, 可以看到新加的 mysql 端点
mysql 端点

然后导入 mysql 的监控大盘
导入 mysql 的监控大盘
导入 mysql 的监控大盘

导入 mysql 的监控大盘

导入 mysql 的监控大盘

安装 redis

以下在 node 端执行
  1. 由于 Redis 是用 C 语言编写,所以编译时需要 gcc
yum install gcc-c++
wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar -zxvf redis-5.0.0.tar.gz -C ~
cd ~/redis-5.0.0/
make install PREFIX=/usr/local/redis
  1. 进入安装目录 bin 下,修改配置文件
cd /usr/local/redis/bin
cp /root/redis-5.0.0/redis.conf /usr/local/redis/bin
vi /usr/local/redis/bin/redis.conf
在大约69行修改daemonize no为daemonize yes
在大约136行修改bind 127.0.0.1为bind 0.0.0.0

执行如下命令启动 redis:

cd /usr/local/redis/bin
./redis-server ./redis.conf
  1. 查看是否启动成功
ps aux|grep redis
  1. 在系统服务目录里创建 redis.service 文件
vi /etc/systemd/system/redis.service

写入以下内容:

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重载系统服务:

systemctl daemon-reload
systemctl start redis.service

redis_exporter

wget https://github.com/oliver006/redis_exporter/releases/download/v1.36.0/redis_exporter-v1.36.0.linux-amd64.tar.gz
tar -zxvf redis_exporter-v1.36.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv redis_exporter-v1.36.0.linux-amd64 redis_exporter
cd /usr/local/redis_exporter
nohup ./redis_exporter --redis.password=123456 &

下载慢尝试

wget https://githubfast.com/oliver006/redis_exporter/releases/download/v1.36.0/redis_exporter-v1.36.0.linux-amd64.tar.gz
  1. 使用 systemctl 管理 redis_exporter
vi /usr/lib/systemd/system/redis_exporter.service

写入

[Unit]
Description=Redis Exporter for Prometheus
After=network.target

[Service]
ExecStart=/usr/local/redis_exporter/redis_exporter
Restart=always
User=root
Group=root
StandardOutput=append:/usr/local/redis_exporter/redis_exporter.log
StandardError=inherit
LogLevel=info

[Install]
WantedBy=multi-user.target

访问 http://ip:9121/metrics

以下在 Prometheus 端操作

在 prometheus.yml 中添加 redis_exporter 的配置, 要注意 yml 文件的语法规范

vi /usr/local/prometheus/prometheus.yml

在最后写入

  - job_name: "redis"
    static_configs:
    - targets: ['192.168.100.126:9121']
  1. 重启 Prometheus 和 grafana
systemctl restart prometheus
systemctl restart grafana-server

进入 prometheus 的 web 界面,再次选择 targets, 可以看到新加的 redis 端点

redis 端点

在 grafana 中导入监控大盘

redis 端点监控大盘

redis 端点监控大盘
redis 端点监控大盘

redis 端点监控大盘
参考文档:
https://blog.youkuaiyun.com/yichen0429/article/details/123819489
https://www.cnblogs.com/hxun/p/11075755.html

<think>嗯,用户想在CentOS 7部署PrometheusGrafana来实现智能运维,需要详细的步骤。首先,我得回忆一下之前处理过的类似教程。根据用户提供的引用内容,好像有提到容器化部署Prometheus的优势,还有Jenkins和Maven的安装,不过用户的需求主要集中在PrometheusGrafana上,可能还需要Docker的支持。 首先,系统环境是CentOS 7,需要确认Docker的安装步骤。用户可能对Linux命令不太熟悉,所以每一步都要详细。比如安装Docker,需要先卸载旧版本,设置仓库,再安装。记得要启动Docker服务,并设置开机启动,这部分在引用1里有提到过类似的环境准备。 接下来是部署Prometheus。用户可能需要使用Docker来运行,这样方便管理。创建配置文件目录,编写prometheus.yml,然后运行容器,映射端口9090。这部分在引用1中提到了容器化部署Prometheus,所以应该参考那个步骤。 然后是Grafana部署,同样用Docker运行,映射端口3000。安装完成后,需要配置数据源,导入仪表盘。用户可能需要知道如何查找合适的仪表盘,比如去Grafana官网找ID,或者自己配置。引用1里提到了如何查找仪表盘,可能需要指导用户去官网搜索。 接下来是监控其他主机,比如Node Exporter的部署。用户可能需要监控多台服务器,所以需要在每台主机上安装Node Exporter,并在Prometheus中添加配置。这部分需要编辑prometheus.yml,添加新的job,然后重启容器。用户可能需要详细说明如何修改配置文件,以及如何正确使用targets的IP和端口。 另外,用户可能需要优化和持久化数据,比如使用Docker卷来保存数据,这样重启容器不会丢失配置。这部分需要提醒用户创建卷,或者在运行容器时指定挂载点。 最后,安全方面可能需要提醒用户配置防火墙,或者使用Nginx反向代理,HTTPS等。但用户可能需要基础教程,这些高级内容可以作为扩展建议。 现在需要检查步骤是否完整,是否覆盖了所有用户的需求。用户要求的是保姆级教程,所以每个命令都要准确,比如具体的mkdir路径,docker run的参数是否正确。同时,要确保用户能够顺利访问PrometheusGrafana的Web界面,可能需要验证端口是否开放,防火墙设置是否正确,比如firewalld的配置,或者iptables规则。 可能还需要在最后给出验证步骤,比如curl localhost:9090或者访问IP:3000,确保服务正常运行。另外,Grafana的默认账号密码是admin/admin,初次登录需要修改密码,这也需要提醒用户。 问题部分,用户可能对监控其他服务感兴趣,比如MySQLRedis,或者如何配置告警,比如Alertmanager。但根据当前的问题,用户可能只需要基础部署,所以相关问题可以围绕扩展监控、优化配置、安全加固等方面。</think>以下是在CentOS 7环境下部署Prometheus+Grafana智能运维系统的详细教程: ### 一、基础环境准备 1. 更新系统 ```bash sudo yum update -y && sudo reboot ``` 2. 安装必要工具 ```bash sudo yum install -y vim net-tools wget curl ``` 3. 关闭防火墙(测试环境建议) ```bash sudo systemctl stop firewalld && sudo systemctl disable firewalld ``` ### 二、Docker环境部署 1. 卸载旧版本 ```bash sudo yum remove docker* -y ``` 2. 安装Docker CE ```bash sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io -y ``` 3. 启动Docker服务 ```bash sudo systemctl start docker && sudo systemctl enable docker ``` ### 三、Prometheus部署 1. 创建配置目录 ```bash mkdir -p /data/prometheus && cd /data/prometheus ``` 2. 编写配置文件`prometheus.yml` ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] ``` 3. 启动容器 ```bash docker run -d \ --name=prometheus \ -p 9090:9090 \ -v /data/prometheus:/etc/prometheus \ prom/prometheus ``` ### 四、Grafana部署 1. 启动Grafana容器 ```bash docker run -d \ --name=grafana \ -p 3000:3000 \ grafana/grafana-enterprise ``` 2. 访问验证 ``` http://服务器IP:3000 (默认账号admin/admin) ``` ### 五、监控主机配置 1. 部署Node Exporter(在所有被监控主机执行) ```bash docker run -d \ --name=node_exporter \ -p 9100:9100 \ -v "/proc:/host/proc" \ -v "/sys:/host/sys" \ -v "/:/rootfs" \ prom/node-exporter ``` 2. 修改Prometheus配置`prometheus.yml`,增加监控目标 ```yaml - job_name: 'node' static_configs: - targets: ['被监控主机IP:9100'] ``` 3. 重启Prometheus ```bash docker restart prometheus ``` ### 六、Grafana仪表盘配置 1. 添加数据源 - 类型选择Prometheus - URL填写`http://prometheusIP:9090` 2. 导入仪表盘 - 官方仪表盘ID:8919(主机监控) - 官方仪表盘ID:1860(Node Exporter) ### 七、优化配置(可选) 1. 数据持久化 ```bash docker volume create grafana-storage docker run -d ... -v grafana-storage:/var/lib/grafana ... ``` 2. 时区配置 ```bash docker run -d ... -e TZ=Asia/Shanghai ... ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值