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

相关推荐
奈斯ing8 小时前
【prometheus+Grafana篇】Prometheus与Grafana:深入了解监控架构与数据可视化分析平台
信息可视化·grafana·prometheus
东风微鸣2 天前
关于全球化大规模混合云 Kubernetes Prometheus 监控体系标准化及 GitOps 自动化改进方案
kubernetes·自动化·prometheus
迷茫运维路2 天前
K8S+Prometheus+Consul+alertWebhook实现全链路服务自动发现与监控、告警配置实战
运维·kubernetes·go·prometheus·consul
被一米六支配的恐惧4 天前
k8s部署grafana
容器·kubernetes·grafana
听说唐僧不吃肉4 天前
Prometheus实现负载均衡并将多个实例数据汇总到一个主Prometheus
负载均衡·prometheus
敏君宝爸4 天前
SpringBoot2.x整合Prometheus+Grafana以及自定义采集
spring boot·grafana·prometheus
风中凌乱5 天前
ClickHouse接入prometheus监控
服务器·clickhouse·prometheus
敏君宝爸5 天前
prometheus整合jmx_exporter 使用jmx_exporter监控Kafka
分布式·kafka·prometheus
企鹅侠客6 天前
Prometheus告警从触发到收到通知延迟在哪?
运维·prometheus·监控