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

相关推荐
Mr.王8354 小时前
架构学习第七周--Prometheus
prometheus
微风◝18 小时前
4. grafana(7.5.17)功能菜单简介
grafana
炸鸡物料库1 天前
Kubernetes 使用 Kube-Prometheus 构建指标监控 +飞书告警
运维·云原生·kubernetes·飞书·prometheus·devops
da pai ge2 天前
个人Dockerfile分享
开发语言·javascript·人工智能·prometheus
陈译3 天前
Grafana——如何迁移Grafana到一台新服务器
运维·服务器·grafana
心灵宝贝3 天前
prometheus、grafana、windows、node exporter 安装包
grafana·prometheus
微风◝8 天前
3. 导入官方dashboard
grafana
陈译8 天前
Grafana-使用Button修改MySQL数据库
运维·数据库·mysql·grafana
葬爱家族小阿杰8 天前
Jmeter+Influxdb+Grafana平台监控性能测试过程
jmeter·grafana
葬爱家族小阿杰9 天前
Prometheus+Grafana+Jmeter监控服务器资源及中间件
jmeter·grafana·prometheus