推送Prometheus数据到N9E并通过Grafana展示

小编在上篇文章中已经通过安装jenkins并构建自动化测试项目并发送了消息通知,但是这只是群内的通知,如何通过大盘展示呢?经过讨论,暂时选择采用的实现思路:通过jenkins自动化执行结果来推送Prometheus数据到N9E(夜莺)并通过Grafana展示。

话不多说,开干!

一、获取jenkins自动化执行结果

可以通过上篇文章获取:Linux机器通过Docker-Compose安装Jenkins发送Allure报告_docker jenkins 生成allure报告-CSDN博客文章浏览阅读1k次,点赞19次,收藏17次。在CentOS上,首先更新包管理工具并安装所需的包。接下来,添加Docker的官方仓库,然后安装Docker。启动Docker服务,并设置为开机自启。_docker jenkins 生成allure报告https://blog.csdn.net/weixin_57303037/article/details/139738897?spm=1001.2014.3001.5501

二、构造Prometheus数据并发送到N9E

在原来的jenkins自动化项目中的post build task编写脚本内容如下:

复制代码
pytest -v test_check_allure_report.py --clean-alluredir --alluredir "check-allure"

failed_count_output=$(python3 /var/jenkins_home/workspace/${JOB_NAME}/check.py)

failed_count=$(echo $failed_count_output | grep -oP 'failed_count: \K\d+')



if [ "$failed_count" -eq 0 ]; then
    result=0
else
    result=1
fi

echo "terra_patrol_api_total $result" | curl --data-binary @- "你的的n9e地址/job/svc_monitor/ident/{ident}/location/hangzhou/env/prod"

另外还想获取到每个url运行情况,编写脚本内容如下:

bash 复制代码
urls_output=$(python3 /var/jenkins_home/workspace/${JOB_NAME}/get_urls.py)

# 将输出转换为数组,每一行为一个元素
mapfile -t lines < <(echo "$urls_output")

# 遍历每一行
for line in "${lines[@]}"; do
    if [[ $line == ident:* ]]; then
        # 如果当前行是ident,则保存ident
        ident=${line#*ident: }
    elif [[ $line == status:* ]]; then
        # 如果当前行是status,检查status是否为passed
        status=${line#*status: }
        if [[ $status == "passed" ]]; then
            result=0
        else
            result=1
        fi
        # 发送报告
        echo "terra_patrol_network_urls $result" | curl --data-binary @- "你的n9e地址/job/svc_monitor/ident/${ident}/location/hangzhou/env/prod"
    fi
done

其中get_urls.py内容如下:

python 复制代码
import json
from urllib.parse import urlparse

report_path = '/var/jenkins_home/workspace/terra-network-monitor/allure-report/widgets/severity.json'
with open(report_path, 'r') as f:
    data = json.load(f)

for item in data:
    status = item['status']
    print(f"status: {status}")

    name = item['name']

    ident_with_protocol = name.split('[')[1].split(']')[0]
    # 移除"http://"或"https://"前缀
    parsed_url = urlparse(ident_with_protocol)
    ident = parsed_url.netloc
    print(f"ident: {ident}")

点击构建项目会推送数据到n9e,可以在n9e中查询

同样也可以直接在prometheus界面查询:

三、安装Grafana并构建可视化仪表盘

上述已经实现了推送Prometheus数据,但是每次通过在界面查询查看结果不太直观,考虑到采用Grafana来构建可视化仪表盘实现,具体安装步骤这里就不再赘述了~

Grafana的功能非常强大,可以针对不同的需求设置,展示不同的监控图表。

Prometheus是我们需要的数据源,其中Dashboard(面板)和Panel(面板)是最基础的单元。

首页--仪表板--新建仪表板---添加可视化

Panel图表配置

预览区:可以针对【数据设置区】和【图表设置区】的设置结果进行模拟显示,可以实时看到效果。

数据设置区:可分为三个设置区域

查询设置区:设置查询数据的数据源、指标等

转换设置区:可以对查询出来的数据进行过滤

告警设置区:可以对设置的指标设置告警规则

图表设置区:可以用来设置图表名称、Y轴显示样式等,主要包含:setting设置和visualization可视化。

可视化的方式有以下这些:

具体的详细信息都可以在里面设置具体的参数~

最终设置成功后保存你的数据就可以在首页--仪表板--查看到已存在的可视化界面哦~

上述只是最基础的实现Grafana仪表盘可视化展示的情况,还有更多复杂的内容根据实际项目来实现,可关注小编后续继续讲解哦~

相关推荐
欧先生^_^17 小时前
ingress-nginx 开启 Prometheus 监控 + Grafana 查看指标
nginx·grafana·prometheus
Jeremy_Lee12317 小时前
grafana 批量视图备份及恢复(含数据源)
前端·网络·grafana
全栈工程师修炼指南17 小时前
Grafana 地图本土化方案:使用高德地图API平替GeoMap地图指南
grafana
临水逸19 小时前
可视化大屏工具对比:GoView、DataRoom、积木JimuBI、Metabase、DataEase、Apache Superset 与 Grafana
apache·grafana
XMYX-01 天前
Spring Boot + Prometheus 实现应用监控(基于 Actuator 和 Micrometer)
spring boot·后端·prometheus
SailingCoder2 天前
grafana-mcp-analyzer:基于 MCP 的轻量 AI 分析监控图表的运维神器!
运维·人工智能·typescript·node.js·grafana
xbd_zc4 天前
【使用 Loki + Promtail + Grafana 搭建轻量级容器日志分析平台】
grafana·loki·promtail
时间裂缝里的猫-O-4 天前
@Prometheus 监控-MySQL (Mysqld Exporter)
数据库·mysql·prometheus
qq_312920115 天前
K8S上使用helm部署 Prometheus + Grafana
kubernetes·grafana·prometheus
MyikJ6 天前
Java 面试实录:从Spring到微服务的技术探讨
java·spring boot·微服务·kafka·spring security·grafana·prometheus