Prometheus 监控 Redis 集群,Mysql 并显示到 Granfana 仪表盘

一,监控Redis

1.1 在redis机器上安装redis_exporter

  • 下载,安装redis_exporter
https://prometheus.io/docs/instrumenting/exporters/#databases
tar -xf redis_exporter-v1.50.0.linux-amd64.tar.gz
  • 启动redis_exporter
#直接启动,无密码
./redis_exporter redis//172.16.0.9:6379 &
./redis_exporter -redis.addr 172.18.11.138:6379 -redis.password xxxxx &
#有密码
redis_exporter -redis.addr 172.16.0.9:6379 -redis.password 123456

#systemctl启动
vim /usr/lib/systemd/system/redis_exporter.service

[Unit]
Description=redis_exporter
Documentation=https://github.com/oliver006/redis_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/monitor/redis_exporter/redis_exporter -redis.addr 172.18.2.35:6488
Restart=on-failure
[Install]
WantedBy=multi-user.target

systemctl start redis_exporter

#添加一个redis地址和端口即可所有所有节点数据

1.2 配置prometheus配置文件

vim prometheus.yaml

  - job_name: 'redis_exporter_targets'
    static_configs:
      - targets:
        - redis://192.18.3.34:7000
        - redis://192.18.3.34:7001
        - redis://192.18.3.35:7002
        - redis://192.18.3.35:7003
        - redis://192.18.3.36:7004
        - redis://192.18.3.36:7005
    params:
      check-keys: ["metrics:*"]
    metrics_path: /scrape
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 172.18.2.35:9121
  - job_name: 'redis_exporter'
#    scrape_interval: 10s
    static_configs:
      - targets:
        - 172.18.2.35:9121

systemctl start prometheus

#replacement:redis_exporter所在机器的ip

1.3 设置redis maxmemory

vim redis.conf

maxmemory 128M

./bin/redis-cli -h 172.18.2.36 -p 7005 -a 123
CONFIG set  maxmemory 128M

#默认maxmemory为0,意思为不限制内存使用。

maxmemory的默认值是0,也就是不限制内存的使用。
32bit系统如果使用默认配置或配置为maxmemory 0则最大使用3G内存(详见下方源码)。
maxmemory的值没有最小限制(但是如果低于1MB,会打一条WARNING日志)。
如果设置了maxmemory选项(值 >= 1),redis在接收命令时总是会判断当前是否已经超出最大内存限制,如果超过限制会根据驱逐策略去释放内存(如果是同步释放且释放内存很大,则会阻塞其他命令的执行)。
单位问题:
maxmemory 100 裸数字情况:单位是字节。
maxmemory 1K K:代表1000字节。
maxmemory 1KB KB:代表1024字节。
maxmemory 1M M:代表1000000字节。
maxmemory 1MB MB: 代表1048576字节。
maxmemory 1G G:代表1000000000字节。
maxmemory 1GB GB: 代表1073741824字节。

1.4 导入redis监控模板736

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
查看granfana监控面板
在这里插入图片描述

Uptime:Redis从启动到当前运行的时间
Clients: 当前连接到Redis服务器的客户端数,用于掌握连接情况,判断是否需要调整集群数量或者连接数。
Memory Usage:Redis节点的内存使用率,用于资源消耗评估。
Commands Executed/sec:每秒成功执行的命令数。
Hits/Misses Per Sec:每秒服务器中键命中/非命中的比率,这个值可以用来评估设计是否合理。
Network I/O:网络I/O流量情况,可以用于评估带宽压力。
Expiring vs Not-Expiring Keys:过期的Keys的数量和未过期的Keys数量

完成prometheus监控redis

二,监控Mysql

2.1 登录mysql授权

mysql -uroot -pPotevioYw123
GRANT REPLICATION CLIENT,PROCESS,SELECT ON *.* TO 'mysqld_exporter'@'%' identified by 'Potevio123';
flush privileges;

2.2 下载安装、配置、启动mysqld_exporter

下载安装:
https://github.com/prometheus/mysqld_exporter

mysqld_exporter-0.14.0.linux-amd64.tar.gz
tar -xf  mysqld_exporter-0.14.0.linux-amd64.tar.gz

配置mysqld_exporter连接mysql的配置文件.my.cnf

vim .my.cnf
[client]
user=mysqld_exporter
password=Potevio123
#port=3306

启动

vim /usr/lib/systemd/system/mysqld_exporter.service

[Unit]
Description=mysqld_exporter
After=network.target
[Service]
ExecStart=/opt/monitor/mysqld_exporter/mysqld_exporter --config.my-cnf=/opt/monitor/mysqld_exporter/.my.cnf
ExecReload=/bin/kill -HUP \$MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

2.3 查看指标是否正常

curl http://172.18.2.35:9104/metrics|grep mysql_up

在这里插入图片描述

2.4 在prometheus端添加监控任务

  - job_name: 'mariadb'
    static_configs:
    - targets: ['172.18.2.35:9104']
#      labels:
#        group: middleware

2.5 登录验证http://172.18.2.34:9090/targets

2.6 导入仪表盘,仪表盘ID:7362

在这里插入图片描述

在这里插入图片描述
完成对mariadb的监控

<think>好的,我需要回答用户关于Prometheus可以监控哪些系统资源和指标的问题。首先,我要回顾一下之前的对话,确保信息连贯。用户之前已经得到关于Prometheus核心功能和场景的详细解答,现在需要更具体地了解监控的资源类型。 首先,我应该从系统资源开始,比如CPU、内存、磁盘和网络。这些都是基础,需要详细说明每个部分的具体指标,比如CPU使用率、内存占用、磁盘IO等。然后,考虑容器和Kubernetes的监控,因为Prometheus在这方面应用广泛,需要提到相关的Exporter,比如node_exporter和kube-state-metrics。 接下来是应用层监控,比如Web服务器、数据库和自定义应用。这里要强调Prometheus的多语言客户端支持,以及如何通过HTTP暴露指标。微服务架构的监控也很重要,需要提到服务发现和黄金指标(请求量、错误率、延迟)。 然后,用户可能还关心业务指标和物联网设备,这部分需要举例说明,比如订单量或传感器数据。此外,CI/CD流水线的监控也是一个应用场景,可以提到构建时间和部署频率。 还需要对比Prometheus与其他工具的适用性,比如长期存储的不足,以及安全增强配置。最后,确保引用之前的资料,比如引用[1]到[4]中提到的配置文件和Grafana集成,以增强回答的可信度。 整个过程中,要保持结构清晰,分点列出,使用LaTeX公式和代码块示例,符合用户给定的格式要求。同时,生成相关问题,帮助用户深入理解。</think>### Prometheus监控资源类型全解析 Prometheus 通过灵活的指标采集机制可监控 **6 大类系统资源**,结合具体指标示例与采集方法进行详细说明: --- #### 一、基础系统资源监控 **1. 主机硬件指标** - **CPU 使用**: ```promql # 总使用率计算 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) ``` 细分指标: - `node_cpu_seconds_total{mode="user"}`:用户态 CPU 时间 - `node_cpu_seconds_total{mode="system"}`:内核态 CPU 时间[^3] - **内存监控**: $$ \text{内存使用率} = \frac{node\_memory\_MemTotal\_bytes - node\_memory\_MemAvailable\_bytes}{node\_memory\_MemTotal\_bytes} \times 100\% $$ - **磁盘指标**: ```promql # 磁盘空间使用预测(基于 24 小时增长率) predict_linear(node_filesystem_free_bytes{mountpoint="/"}[24h], 3600*24) ``` 关键指标: - `node_disk_io_time_seconds_total`:磁盘 I/O 耗时 - `node_filesystem_avail_bytes`:可用存储空间[^3] - **网络流量**: ```promql # 计算 5 分钟内平均入站流量(单位:MB/s) rate(node_network_receive_bytes_total{device="eth0"}[5m]) / 1024 / 1024 ``` **2. 操作系统指标** - 进程状态:`node_processes_total`(总进程数) - 文件句柄:`node_filefd_allocated`(已分配文件描述符) - 系统负载:`node_load1`, `node_load5`, `node_load15`(1/5/15 分钟平均负载) --- #### 二、容器化环境监控 **1. Docker 容器指标** - 核心指标采集架构: ```mermaid graph LR A[cAdvisor] -->|暴露容器指标| B(Prometheus) B --> C[Grafana] ``` 关键指标示例: - `container_cpu_usage_seconds_total`:容器 CPU 累计使用时间 - `container_memory_working_set_bytes`:容器内存占用量[^4] **2. Kubernetes 集群监控** - **节点状态**: ```promql # 检查节点 Ready 状态 kube_node_status_condition{condition="Ready", status="true"} ``` - **Pod 资源使用**: ```promql # 显示 CPU 使用率前 5 的 Pod topk(5, sum(rate(container_cpu_usage_seconds_total{image!=""}[5m])) by (pod)) ``` - **API Server 性能**: - `apiserver_request_total`:API 请求总量 - `apiserver_request_duration_seconds`:请求延迟分布[^2] --- #### 三、应用服务监控 **1. Web 服务器** | 服务类型 | 关键指标 | 采集方式 | |----------|---------------------------------|--------------------| | Nginx | `nginx_http_requests_total` | nginx-exporter | | Apache | `apache_accesses_total` | apache-exporter | | Tomcat | `tomcat_sessions_active_current`| jmx_exporter | **2. 数据库系统** - **MySQL 监控项**: ```promql # 查询缓存命中率 mysql_global_status_qcache_hits / (mysql_global_status_qcache_hits + mysql_global_status_qcache_inserts) * 100 ``` - **Redis 关键指标**: - `redis_connected_clients`:当前连接数 - `redis_memory_used_bytes`:内存使用量 **3. 消息队列** - Kafka 监控示例: ```promql # 计算消息生产速率 rate(kafka_topic_partition_current_offset{topic="orders"}[5m]) ``` - RabbitMQ 关键指标: - `rabbitmq_queue_messages_ready`:待消费消息数 - `rabbitmq_connections_total`:活跃连接数 --- #### 四、自定义业务指标 **1. HTTP 服务监控** - 黄金指标组合: ```promql # 错误率计算(5xx 状态码占比) sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) ``` **2. 交易系统监控** - 订单处理指标: ```promql # 统计每分钟订单量 sum(increase(order_created_total[1m])) by (product_type) ``` - 支付延迟分析: ```promql # 支付延迟 P99 histogram_quantile(0.99, sum(rate(payment_duration_seconds_bucket[5m])) by (le)) ``` --- #### 五、特殊场景监控 **1. 物联网设备** - 使用 Pushgateway 的场景: ```bash # 上报温度传感器数据 echo "sensor_reading{device_id='T-001',type='temperature'} 28.5" | curl -X POST --data-binary @- http://pushgateway:9091/metrics/job/iot_sensors ``` **2. CI/CD 流水线** - 构建状态监控: ```promql # 统计各环境部署成功率 sum(ci_deployment_success_total) by (environment) / sum(ci_deployment_total) by (environment) ``` --- ### 六、监控指标分类总结 | 指标类型 | 示例指标 | 数据来源 | |--------------|----------------------------------|-----------------------| | 计数器(Counter) | `http_requests_total` | 累计递增型事件计数 | | 仪表盘(Gauge) | `node_memory_free_bytes` | 瞬时可增减的数值型指标 | | 直方图(Histogram)| `http_request_duration_seconds` | 带分布统计的时序数据 | | 摘要(Summary) | `go_gc_duration_seconds` | 客户端计算的百分位数指标 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值