推送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运行情况,编写脚本内容如下:

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内容如下:

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仪表盘可视化展示的情况,还有更多复杂的内容根据实际项目来实现,可关注小编后续继续讲解哦~ 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 04:42:05       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 04:42:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 04:42:05       45 阅读
  4. Python语言-面向对象

    2024-07-22 04:42:05       55 阅读

热门阅读

  1. centos/rocky容器中安装xfce、xrdp记录

    2024-07-22 04:42:05       16 阅读
  2. 【Python】 深入理解 Python 的 repr 方法

    2024-07-22 04:42:05       16 阅读
  3. 【2024德国签证】留学面签问题汇总

    2024-07-22 04:42:05       25 阅读
  4. 为了zoom

    2024-07-22 04:42:05       23 阅读
  5. vue中hash和history的区别 ?

    2024-07-22 04:42:05       15 阅读
  6. 使用 KerasNLP 从头开始生成 GPT 文本

    2024-07-22 04:42:05       15 阅读
  7. 2024-7-20 IT领域最新资讯概览

    2024-07-22 04:42:05       14 阅读
  8. 墨烯的C语言技术栈-C语言基础-017

    2024-07-22 04:42:05       17 阅读
  9. 对Spring、SpringMVC、MyBatis框架的介绍与解释

    2024-07-22 04:42:05       9 阅读
  10. Linux下编译boost1.85

    2024-07-22 04:42:05       9 阅读
  11. Nginx 学习笔记

    2024-07-22 04:42:05       13 阅读