Grafana 配置实战

Grafana 配置实战

1.1 数据源配置

登录 Grafana (http://your-grafana:3000)

点击 Configuration → Data Sources → Add data source

选择 Prometheus

配置 URL: http://your-prometheus:9090

点击 Save & Test

1.2 仪表盘创建

选择Add visualization

1.2.1 端口状态概览面板查询语句:

复制代码
# 端口连通状态
probe_success{job="port_monitoring"}

# 响应时间
probe_duration_seconds{job="port_monitoring"}

可视化配置:

类型: Stat

阈值: 绿色(0.9-1), 红色(0-0.89)

值映射: 1=UP, 0=DOWN

4.2.2 响应时间趋势面板

查询语句:

复制代码
# 按实例分组的响应时间
sum by(instance) (rate(probe_duration_seconds{job="port_monitoring"}[5m]))

可视化配置:

类型: Time series

单位: seconds

显示: Lines

4.3 告警规则配置

4.3.1 创建告警规则

1.进入 Alerting → Alert rules → New alert rule

2.规则配置:

  • List item规则名称: Port Monitoring - Service Down
  • 评估组: 选择或创建评估组

查询:

复制代码
sum by(instance) (probe_success{job="port_monitoring"} == 0)

条件: IS ABOVE 0

评估间隔: 1m

持续时间: 1m

4.3.2 无数据处理策略

在 Advanced options 中配置:

No Data Handling: Do not fire

执行错误处理: Alerting

Paused: 保持关闭

4.3.3 通知策略

创建 Contact point:

类型: Email

配置 SMTP 服务器

测试邮件发送

创建通知策略:

匹配标签: severity=critical

联系人: 邮件联系人

分组: 按 cluster, alertname

静默期: 5m

配置 Grafana SMTP

  1. 修改 Grafana 配置文件

    编辑 grafana.ini

    sudo tee -a /etc/grafana/grafana.ini << 'EOF'

    [smtp]
    enabled = true
    host = smtp.163.com:465
    user = xxx@163.com
    password = xxxx
    from_address =xxxx@163.com
    from_name = Grafana Port Monitoring
    ehlo_identity = 163.com
    startTLS_policy = OpportunisticStartTLS
    skip_verify = true
    EOF

需要手动去/etc/grafana/grafana.ini

删除smtp

  1. 重启 Grafana

    sudo systemctl restart grafana-server
    sudo systemctl status grafana-server

  2. 测试 Grafana 邮件发送

    检查配置是否生效

    grep -A5 "smtp" /etc/grafana/grafana.ini

5. 故障排查指南

5.1 常见错误及解决方案

错误 1: "frame cannot uniquely be identified by its labels"

原因: 监控目标标签重复

解决方案:

复制代码
# 错误配置(所有目标相同标签)
- targets: ["server1:80", "server2:80"]
  labels:
    job: "port_monitoring"

# 正确配置(每个目标唯一标签)
- targets: ["server1:80"]
  labels:
    job: "port_monitoring"
    instance: "server1_80"
    
- targets: ["server2:80"]
  labels:
    job: "port_monitoring"
    instance: "server2_80"
错误 2: "Loading OnCall integration failed"
原因: Grafana OnCall 插件配置问题
解决方案:
检查插件配置: Configuration → Plugins → OnCall
验证网络连通性
检查服务状态: curl http://oncall:8080/health

5.2 监控数据验证步骤

复制代码
 1. 验证 blackbox_exporter
curl http://localhost:9115/probe?target=google.com:443&module=http_2xx

# 2. 验证 Prometheus 目标
curl http://localhost:9090/api/v1/targets

# 3. 验证指标
curl "http://localhost:9090/api/v1/query?query=probe_success{job='port_monitoring'}"

6. 最佳实践建议

6.1 标签设计规范

必须包含唯一标识: instance 标签必须唯一

业务维度分组: 使用 service, team, environment 标签

技术维度标注: 使用 protocol, port, region 标签

6.2 告警分级策略

6.3 性能优化

](https://i-blog.csdnimg.cn/direct/4d2d55cfd7ee4accad28f0bd8d526fee.png)

抓取间隔: 根据业务重要性设置 (15s-5m)

数据保留: Prometheus 数据保留 15-30天

告警分组: 避免告警风暴,合理设置分组策略

7. 总结

Grafana 结合 Prometheus 和 Blackbox Exporter 能够构建强大的端口监控体系。关键成功因素包括:

正确的标签设计:避免重复,确保唯一性

合理的告警策略:分级响应,避免误报

完善的故障排查:建立标准化排查流程

持续的优化迭代:根据业务发展调整监控策略

通过本文的实践指南,您可以快速搭建从端口探测到告警通知的完整监控链路,提升系统的可靠性和可观测性。

相关推荐
DylanlZhao10 天前
我想看看本地 LLM 给我省了多少钱,于是我监控了它
llm·grafana
天天喝旺仔12 天前
Prometheus + Grafana 监控告警体系搭建实战:从 Exporter 指标采集、PromQL 查询到 Alertmanager 告警落地
容器·kubernetes·grafana·prometheus·时序数据库
qq_4523962318 天前
第十二篇:《数据采集:Grafana Alloy、Fluent Bit、Vector 的选型与配置》
java·贪心算法·grafana
2601_9620973619 天前
可观测性实战:Prometheus+Grafana+OTel构建监控
grafana·prometheus·微服务架构·可观测性·opentelemetry
Joker-Full-stack19 天前
higress Grafana生产事故复盘:Loki 2.9 WAL 竞态 Bug 导致 5 天审计日志消失
bug·grafana·higress
IT界的老黄牛19 天前
Jenkins 监控一条龙:接入、看板 9964、11 条告警规则直接抄走
jenkins·grafana·prometheus·监控·ci-cd·告警规则
heimeiyingwang20 天前
【Prometheus·可视化篇】Grafana 集成:数据源配置与 Dashboard 设计原则
grafana·prometheus
2601_9620973621 天前
GraphQL,Grafana和Dash
python·grafana·数据可视化·graphql·dash
happymade23 天前
7000 台网络设备批量纳管 & 自动拓扑生成实战——MSRM3 完整操作流程与关键要点复盘
运维·服务器·网络·zabbix·grafana·msrm3
AAA@峥23 天前
从零搭建 Prometheus 完整监控告警体系|Linux 部署 + node_exporter+Grafana 可视化
云原生·grafana·prometheus