package common
import (
"bufio"
"encoding/json"
"log"
"os"
"github.com/tealeg/xlsx/v3"
)
// 处理hostinfo表格
func ParseHostInfo(sheet *xlsx.Sheet, fileName string) error {
hostDist := make(map[string][]string)
// 从第二行开始遍历(假设第一行是标题行)
for rowNumber := 1; rowNumber < sheet.MaxRow; rowNumber++ {
row, _ := sheet.Row(rowNumber)
ip := row.GetCell(0).String()
env := row.GetCell(1).String()
hostType := row.GetCell(2).String()
productInfo := row.GetCell(3).String()
hostDist[ip] = []string{env, hostType, productInfo}
}
// 将hostDist序列化为JSON并写入文件
if err := writeJSONToFile(hostDist, fileName); err != nil {
log.Fatalf("ParseHostInfo Failed to write JSON to file: %v", err)
}
log.Printf("ParseHostInfo Success to write JSON to file: %v", hostDist)
return nil
}
// 处理serviceinfo表格
func ParseServiceInfo(sheet *xlsx.Sheet, fileName string) error {
serviceDist := make(map[string]map[string][]string)
// 从第二行开始遍历(假设第一行是标题行)
for rowNumber := 1; rowNumber < sheet.MaxRow; rowNumber++ {
row, _ := sheet.Row(rowNumber)
ip := row.GetCell(0).String()
serviceName := row.GetCell(1).String()
serviceType := row.GetCell(2).String()
port := row.GetCell(3).String()
env := row.GetCell(4).String()
productInfo := row.GetCell(5).String()
if _, exists := serviceDist[ip]; !exists {
serviceDist[ip] = make(map[string][]string)
}
// 使用应用名称作为键
serviceDist[ip][serviceName] = []string{serviceType, port, env, productInfo}
}
// 将serviceDist序列化为JSON并写入文件
if err := writeJSONToFile(serviceDist, fileName); err != nil {
log.Fatalf("ParseServiceInfo Failed to write JSON to file: %v", err)
}
log.Printf("ParseServiceInfo Success to write JSON to file: %v", serviceDist)
return nil
}
func ParseServiceUrlInfo(sheet *xlsx.Sheet, fileName string) error {
var serviceUrls []map[string]string
// 从第二行开始遍历(假设第一行是标题行)
for rowNumber := 1; rowNumber < sheet.MaxRow; rowNumber++ {
row, _ := sheet.Row(rowNumber)
serviceUrl := make(map[string]string)
serviceUrl["nameInterface"] = row.GetCell(0).String()
serviceUrl["urlInterface"] = row.GetCell(1).String()
serviceUrl["requestMethod"] = row.GetCell(2).String()
serviceUrl["serviceType"] = row.GetCell(3).String()
serviceUrl["contentType"] = row.GetCell(4).String()
serviceUrl["requestClientId"] = row.GetCell(5).String()
serviceUrl["requestToken"] = row.GetCell(6).String()
serviceUrl["requestBody"] = row.GetCell(7).String()
serviceUrl["responseValue"] = row.GetCell(8).String()
serviceUrl["env"] = row.GetCell(9).String()
serviceUrl["businessCode"] = row.GetCell(10).String()
serviceUrls = append(serviceUrls, serviceUrl)
}
// 将serviceUrls序列化为JSON并写入文件
if err := writeJSONToFile(serviceUrls, fileName); err != nil {
log.Fatalf("ParseServiceUrlInfo Failed to write JSON to file: %v", err)
}
log.Printf("ParseServiceUrlInfo Success to write JSON to file: %v", serviceUrls)
return nil
}
// 将数据序列化为JSON并写入文件
func writeJSONToFile(data interface{}, fileName string) error {
jsonData, err := json.MarshalIndent(data, "", " ")
if err != nil {
return err // 直接返回错误,不再结束程序
}
file, err := os.OpenFile(fileName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
return err // 直接返回错误
}
defer file.Close()
writer := bufio.NewWriter(file)
if _, err := writer.Write(jsonData); err != nil {
return err // 直接返回错误
}
if err := writer.Flush(); err != nil {
return err // 返回 Flush 的错误
}
return nil // 成功完成,返回 nil
}
没有合适的资源?快使用搜索试试~ 我知道了~
利用golang-Consul代码实现微服务的Prometheus监控目标的注册以及动态发现与配置最新版包含consul注销服务
共97个文件
go:26个
sample:13个
json:2个
需积分: 5 0 下载量 126 浏览量
2024-08-09
16:37:40
上传
评论
收藏 4.83MB ZIP 举报
温馨提示
在实际产生环境中主要以prometheus监控为主,在使用该监控时,有个很大的问题时,需要手动修改Prometheus.yml文件,将监控指标手动添加进去,当监控指标少的时候,维护和添加都很方便,但是当一套环境中监控指标多大几百个,添加工作繁琐,这时你会想到写个shell脚本,对多个监控指标进行添加,但是你有没有考虑过此时的prometheus.yaml文件的可维护性以及当添加的监控指标越来越多时,prometheus主机的cpu、内存也随之增长,这时你该怎么处理呢? 写这个代码的原因有两个,其一就是我刚开始所说的维护prometheus.yml文件的成本越来越高,且服务器资源日益不足;其二刚才最近在学习golang,也借此机会提高一下golang的基础语法知识以及标准库的使用方法。因此才有此代码的诞生.主要给大家一个思路,像代码中的consul标签处理部分也仅适用于我司,如果要想看源码.见本博客下载即可。同时该资源支持从conusl中注销已注册的服务
资源推荐
资源详情
资源评论
收起资源包目录
prometheus_import_consul_V4.zip (97个子文件)
prometheus_import_consul
tools
consul_add_icmp.go 2KB
consul_add_interface.go 2KB
read_jsonfile.go 514B
deregistry_service.go 2KB
parse_xlsx.go 3KB
consul_add_telegraf.go 1KB
check_dir.go 385B
consul_add_service.go 1KB
consul_add_host.go 883B
go.mod 2KB
jsonfile
host.json 506B
service.json 4KB
README 1KB
test.go 2KB
global
global.go 226B
flag
flag.go 2KB
go.sum 48KB
Makefile 1KB
host_monitor_datasource.xlsx 15KB
prometheus_consul 8.31MB
.git
index 3KB
HEAD 23B
refs
heads
tags
fsmonitor--daemon
cookies
COMMIT_EDITMSG 1KB
objects
b9
83f9e45692fa0fcf7b3b66dcc4e5d8e90447e0 238B
57
2d4b082954fe7e0e960eb866392dc5dbb756ea 13KB
40
36dd0cc6990ebc708288483d4001e3ba4dc040 154B
7b
91c7746c4696c6cb02e6fef701b992b0f2b637 500B
79
de71468e97c6a718b8ac75925761889093ce76 80B
94
0bbd65f22b510b0a916761372cbf132d7ad046 149B
0b
11a6596ab6661ff6acf2ebae03bdd2480dfda0 515B
bd
34424f2eaea5f105bd37bfe2923b5ea076a23a 1KB
60
8c1261e30126656a765c40e2da393d99131347 492B
15
11349b4d6b88b41d7b673a94e7517dd88b83bd 51B
37
9223c474f3ec64ced08ff921924fc82df52763 295B
2c
ddc1214e53c8ab3af33d773ac44f3a414fa5b2 147B
32
c3555e30a0f892500158b8a8ba15edd6ba7dde 311B
97
f0ac9d565388c12c41de54604f7237b1572e9e 52B
cb56645d82e6b9f7f5ceea8f4df0593f247fa7 183B
a9
4305276bbf47b5443596d856a4732db0d63732 690B
33
3a0bf011033f04b1df983f96817b20f23f8f8c 185B
49
e76f5326dbceb210aa90b4e1dcef25ef124578 426B
30
fda0a6b43e890c8994b6fa1d975b539818ca93 1KB
4b
7bb92c32c3158586220965d81f882aecad53e7 645B
pack
f4
8a90992b3050b7f47d413bf8b5a0b428599a17 1KB
54
63357920cdd9afdea0688bdc03103cb174350c 944B
ab
1cf9f1874695e3ecb36b0e850d22a4110aca14 370B
b1
7f7c4c8a3a718cbf5f377a83e0666764037059 1KB
83
33642296f89d5c182d94f42c4da80dddd25f9b 325B
39
04123e54a8680386e1cb90dd7b6262676556bb 458B
161270ba56ece05e018df92515a5c27c39bfb9 712B
info
51
2cb91602fca742bc69f25d93367ac81f05b0dc 527B
12
cd5baab9968fcdff021495c19a5c8977a40020 226B
d3
2f54d1925da2ca29b2fe9f22fefbf6542a5b28 125B
55e722bce7e923f098d2b9768d0a8df2f3139d 20KB
73
3a3b471953c0c09ffe5d9a812767c5f33970a5 671B
c5
b780e16ff5e4ca2388c575f27785bef5e3023c 53B
d6
855b2f262569ba53f228c23b737c52a337f26c 765B
7c
c869a1e6eec0ccd5d079e697ea01a93334145a 65B
14
84a705ac1ed91bb9cff54547a37e8cfdea664d 247B
06
7a1040c29446dbd6dbeb911e1bb0b15d039877 451B
24
39c32d664818dd0566300c8561d932325c0cdb 548B
fa
17b4909844cbbb079e097492089cbd9e4f9f0b 761B
d2
d595adffcb29b2de145c562e58d893c1668b0c 54B
description 73B
info
exclude 240B
hooks
post-update.sample 189B
prepare-commit-msg.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
update.sample 4KB
pre-commit.sample 2KB
pre-rebase.sample 5KB
applypatch-msg.sample 478B
fsmonitor-watchman.sample 5KB
push-to-checkout.sample 3KB
pre-applypatch.sample 424B
pre-push.sample 1KB
pre-merge-commit.sample 416B
config 130B
cmd
main.go 2KB
core
consul.go 364B
conf.go 599B
service
import_service.go 942B
deregistry_service.go 207B
import_service_url.go 2KB
import_host.go 730B
import_icmp.go 710B
import_telegraf.go 748B
common
parse_xlsx_common.go 4KB
settings.yaml 591B
config
consul.go 288B
xlsx.go 163B
enter.go 188B
jsonfile.go 210B
scripts
.binary_name 18B
nohup.out 8KB
launch.sh 3KB
共 97 条
- 1
资源评论
迷茫运维路
- 粉丝: 504
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于知识图谱的电影问答系统(Python&Neo4j实战)-毕业设计.zip
- 附件2学号-姓名-2023-2024学年度高等学校国家奖学金初审名单表.xlsx
- 网约车出行预约系统数据库设计与数据操作
- 西电微机原理课设项目-键盘电子乐器演奏程序设计(电子琴)基于c++的MFC框架+源代码+文档说明+实验报告
- 国科大数据挖掘课程作业天体光谱分类-基于ResNet18的天体光谱分类方法源代码+文档说明
- 国科大数据挖掘课程作业天体光谱分类-基于ResNet18的天体光谱分类方法源代码+文档说明
- TxBENCH,电脑及硬盘检测工具
- (亲测)开发API接口调用管理系统网站源码2024全新接口平台多用户管理系统 api接口调用教程
- IntraWeb文件的上传的四种方式
- 基于python贫困生资助管理系统带vue前后端分离设计源代码+文档说明+数据库(高分毕设)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功