首页>软件资讯>常见问题

常见问题

Prometheus和Grafana结合使用

发布时间:2026-01-13 09:36:55人气:11

一、应用简介


    Prometheus(普罗米修斯)是一整套的开源免费的分布式监控应用,目前已经成为云原生领域最主流的监控方案。其可以对系统和应用的指标进行采集、存储、查询、告警和展示。


    zabbix主要面向静态服务器和网络设备等,而Prometheus则更适配云原生环境,对比zabbix:


    1、Prometheus可以自动识别新上线服务实例并加入监控,zabbix则更适合长期稳定的固定项想监控,对动态实例的识别监控需要大量手动配置


    2、由于数据模型的差别,Prometheus支持多维度的筛选和聚合,zabbix则难以实现复杂的多维度分析


    3、Prometheus相较于zabbix的查询能力更强大


    4、虽然都时开源项目,但Prometheus的社区活跃度远高于zabbix,更有发展潜力


    5、相较于zabbix,Prometheus架构更轻量化,扩展性更强


    Prometheus常用组件:


    1)Prometheus Server:Prometheus服务端


    2)exporter:监控客户端组件,这是一组组件,包括比如Node_exporter、mysql_exporter等


    3)AlterManager:报警模块


    4)PushGateway:网关


    5)Web UI:可视化UI界面模块


Grafana是一款开源的数据可视化监控分析平台,可以将分散在不同数据源中的数据聚合起来,通过仪表盘进行可视化展示、分析和告警。其可以兼容多达数十种主流数据源,为用户提供高度可定制化的可视化图标,强大的多渠道告警功能和高度的扩展生态。广泛应用于IT运维监控、云原生监控等方面


二、实验环境


    Server1:192.168.3.50


    Server2:192.168.3.51


    系统:CentOS 7.9


    端口规划(默认端口):


    Prometheus:9090


    node_exporter:9100


    mysqld_exporter:9104


    grafana:3000


    本次实验的exporter组件包括node_exporter和mysqld_exporter


    本次实验均使用root用户操作,生产环境中建议针对每个服务创建服务专属的账户,并响应的对该服务的安装目录进行授权


三、部署prometheus和exporter组件


1、上传下载好的Prometheus软件包并解压


mkdir -p /opt/monitortar zxvf prometheus-3.5.0.linux-amd64.tar.gzmv prometheus-3.5.0.linux-amd64 prometheus


2、配置systemd服务,注意大小写,并设置开机自启动


vim /etc/systemd/system/prometheus.service [Unit]Description=PrometheusWants=network-noline.targetAfter=network-online.target [Service]User=rootGroup=rootType=simpleExecStart=/opt/monitor/prometheus/prometheus  --config.file=/opt/monitor/prometheus/prometheus.yml  --storage.tsdb.path=/opt/monitor/prometheus/data  --web.console.templates=/opt/monitor/prometheus/consoles  --web.console.libraries=/opt/monitor/prometheus/console_libraries [Install]WantedBy=multi-user.target  systemctl daemon-reloadsystemctl start prometheussystemctl enable prometheus

    验证Prometheus,在浏览器中访问http://prometheus-serverIP:9090(可以使用隐私模式,以防插件干扰),或者在服务器中执行命令curl Prometheus-serverIP:9090来检查Prometheus的状态


3、配置Prometheus配置文件,根据实际环境修改


vim /opt/monitor/prometheus/prometheus.yml  # 全局配置global:  scrape_interval: 15s  # 指标采集间隔(默认15秒,可根据需求调整)  evaluation_interval: 15s  # 规则评估间隔(如告警规则) # 告警管理器配置(暂不部署,留空)alerting:  alertmanagers:    - static_configs:        - targets: [] # 规则文件(告警规则、记录规则,暂不配置)rule_files: [] # 监控目标配置(核心:定义要采集的 exporter)scrape_configs:  # 1. 监控 Prometheus 自身(必填,用于查看 Prometheus 运行状态)  - job_name: "prometheus"    static_configs:      - targets: ["192.168.3.50:9090"]  # Prometheus 自身地址   # 2. 监控 node_exporter(服务器指标)  - job_name: "node_exporter"    static_configs:      - targets:          - "192.168.3.50:9100"  # 目标服务器1的 node_exporter 地址          - "192.168.3.51:9100"  # 目标服务器2的 node_exporter 地址(多节点可新增)   # 3. 监控 mysqld_exporter(MySQL 指标)  - job_name: "mysqld_exporter"    static_configs:      - targets:          - "192.168.3.50:9104"  # MySQL 服务器的 mysqld_exporter 地址          - "192.168.3.51:9104"

4、在服务器中部署exporter组件,


node_exporter


tar zxvf node_exporter-1.9.1.linux-amd64.tar.gz mv node_exporter-1.9.1.linux-amd64 node_exporter

    配置systemd服务


[Unit]Description=Node Exporter for PrometheusAfter=network.target [Service]User=node_exporterGroup=node_exporterExecStart=/opt/monitor/node_exporter/node_exporter           --web.listen-address=:9100  # 默认监听 9100 端口Restart=on-failure [Install]WantedBy=multi-user.target  systemctl daemon-reloadsystemctl start node_exportersystemctl enable node_exporter

    浏览器访问http://IP:9100/metrics,看到大量以node开通的指标,则表示部署成功


mysqld_exporter


    1)创建配置文件,配置mysql的账号密码


vim /opt/monitor/mysqld_exporter/.my.cnf [client]user=prometheus     #mysql的账户密码,拥有监控权限,需要提前创建password=123456host=127.0.0.1  # 若 MySQL 在远程,替换为远程 IPport=3306

    2)配置systemd服务


vim /etc/systemd/system/mysqld_exporter.service [Unit]Description=MySQL Exporter for PrometheusAfter=network.target mysql.service  # 确保 MySQL 启动后再启动 exporter [Service]User=rootGroup=rootExecStart=/opt/monitor/mysqld_exporter/mysqld_exporter           --config.my-cnf=/opt/monitor/mysqld_exporter/.my.cnf   # 指定 MySQL 配置文件          --web.listen-address=:9104  # 默认监听 9104 端口Restart=on-failure [Install]WantedBy=multi-user.target

    浏览器访问http://IP:9104/metrics,看到大量以mysql开通的指标,则表示部署成功


四、部署Grafana


1、安装依赖


    需要安装libfontconfig,否则会导致图标渲染异常


yum install -y fontconfig

2、解压压缩包并移动到安装位置


tar zxvf grafana-enterprise-10.0.0.linux-amd64.tar.gz mv grafana-10.0.0/ /usr/local/grafana

3、创建grafana的systemd服务,需要手动创建数据目录和日志目录和pid文件目录


mkdir -p /usr/local/grafana/datamkdir -p /usr/local/grafana/logsmkdir -p /var/run/grafanavim /etc/systemd/system/grafana-server.service [Unit]Description=Grafana Visualization Platform (tar package)Documentation=https://grafana.com/docs/After=network.target prometheus.service  # 确保网络和Prometheus启动后再启动Wants=network.target [Service]# 运行用户(可创建使用grafana专用用户,授予最低权限,这里使用root)User=rootGroup=root# 禁止root权限切换# NoNewPrivileges=true  #当使用专用用户时,禁止root权限切换# Grafana启动命令(指定配置文件、数据目录、日志目录)ExecStart=/usr/local/grafana/bin/grafana-server           --config=/usr/local/grafana/conf/defaults.ini   # 默认配置文件路径          --homepath=/usr/local/grafana                   # Grafana主目录          --pidfile=/var/run/grafana/grafana-server.pid     # PID文件路径(需手动创建目录)# 启动超时时间TimeoutStartSec=60s# 重启策略(异常退出时自动重启)Restart=on-failureRestartSec=10s# 限制资源(可选,根据服务器配置调整)# LimitNOFILE=65535# LimitNPROC=4096 [Install]WantedBy=multi-user.target  systemctl daemon-reloadsystemctl start grafanasystemctl enable grafana

6、自定义修改配置


    官方不建议手动修改配置文件defaults.ini,如有自定义端口等需求,可以创建自定义配置文件,举例如下


vim /usr/local/grafana/conf/custom.ini # 1. 修改默认端口(避免端口冲突)[server]http_port = 3001  # 默认端口为3000,可自定义修改为未被占用的端口 # 2. 配置访问域名(若有域名解析)domain = grafana.your-domain.com # 3. 开启GZip压缩(优化页面加载速度)[rendering]enable_gzip = true # 4. 调整日志级别(调试时用debug,正常运行用info)[log]level = info # 5. 自定义grafana的数据存储路径和日志存储路径[paths]data = /usr/local/grafana/datalogs = /usr/local/grafana/logs  systemctl restart grafana  #自定义配置完成后,重启服务以使配置生效

7、登录grafana,浏览器访问http://serverIP:3000,初始密码为admin/admin,第一次访问会强制修改密码(如grafana@123)。


    可在界面中设置中文显示,或在主配置文件defaults.ini中[users]配置段中进行配置


[users]default_language = zh-Hans

8、对接prometheus数据源


    1)点击页面左侧home,选择connections

第一步.png


    2)选择Data sources-->Add new data source

第二步.png

    3)选择prometheus

第三.png

    4)配置prometheus数据源,然后点击保存,显示Successfully queried the Prometheus API.表示连接成功

第四.png

    5)根据需要使用默认模版或者自己做的模版,在Grafana上进行配置即可


    6)Grafana仪表盘市场:https://grafana.com/grafana/dashboards,可以在这里下载适合自己需求的仪表盘json文件


上一条:Grafana运维利器

下一条:Grafana仪表盘