当前位置: 首页 > news >正文

腾讯mini项目-【指标监控服务重构】2023-07-21

今日已办

image-20230721194827143

当在Docker容器中运行程序时,可能会遇到使用os.Getpid()函数时出现异常的情况。这是因为Docker容器中的进程隔离机制与宿主机器不同,容器内部的进程可能无法访问宿主机器的进程信息。

要解决这个问题,可以尝试:

使用docker run命令启动容器时,添加--pid=host选项,将容器与宿主机器共享进程命名空间。这样,容器内部的进程就可以访问宿主机器的进程信息。

需要注意的是,使用这种方法可能会破坏容器的隔离性,可能导致容器内部的进程与宿主机器的进程产生冲突。此外,该选项需要在启动容器时指定,无法在程序运行时动态设置。

docker run --pid=host <image-name>

image-20230721195234575

image-20230721194741179

// createMemoryPercentObserver
// @Description  createMemoryPercentObserver
// @Author xzx 2023-07-21 16:24:51
// @Param err
// @Param periodicMeter
func createMemoryPercentObserver(err error, periodicMeter metric.Meter) {_, err = periodicMeter.Float64ObservableGauge("profile/memory_percent",metric.WithFloat64Callback(func(ctx context.Context, observer metric.Float64Observer) error {p, err2 := process.NewProcess(int32(os.Getpid()))if err2 != nil {return err2}memoryPercent, err2 := p.MemoryPercent()if err2 != nil {return err2}memoryPercent *= 100.0log.Logger.Info(fmt.Sprintf("profile memory percentage: %f%%", memoryPercent))observer.Observe(float64(memoryPercent))return nil}),metric.WithDescription("the memory percentage of profile server"),)
}// createCpuPercentObserver
// @Description  createCpuPercentObserver
// @Author xzx 2023-07-21 16:19:59
// @Param err
// @Param periodicMeter
// @Return error
func createCpuPercentObserver(err error, periodicMeter metric.Meter) error {_, err = periodicMeter.Float64ObservableGauge("profile/cpu_percent",metric.WithFloat64Callback(func(ctx context.Context, observer metric.Float64Observer) error {p, err2 := process.NewProcess(int32(os.Getpid()))if err2 != nil {return err2}cpuPercent, err2 := p.CPUPercent()if err2 != nil {return err2}cpuPercent *= 100.0log.Logger.Info(fmt.Sprintf("profile cpu percentage: %f%%", cpuPercent))observer.Observe(cpuPercent)return nil}),metric.WithDescription("the cpu percentage of profile server"),)return err
}

image-20230721202423028

image-20230721201958388

明日待办

http://www.lryc.cn/news/167574.html

相关文章:

  • Spring MVC里的DispatchServlet(结合Spring官网翻译)
  • 数据分享|R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型...
  • 解决 Axios 跨域问题,轻松实现接口调用
  • Layui快速入门之第十节 表单
  • Linux之yum/git的使用
  • 使用ExcelJS快速处理Node.js爬虫数据
  • 轻量级的Python IDE —— Thonny
  • java设计模式之观察者模式
  • 掌动智能分享:性能压力测试的重要性与优势
  • C# ppt文件转换为pdf文件
  • 使用Pyarmor保护Python脚本不被反向工程
  • STM32单片机——串口通信(轮询+中断)
  • Python if语句的嵌套应用
  • C++中带默认值的函数参数
  • 记录一次部署Hugo主题lotusdocs到Github Pages实践
  • stm32---基本定时器(TIM6,TIM7)
  • HTML网页设计
  • 阶段性总结:跨时钟域同步处理
  • [交互]接口与路由问题
  • linux 6中4T磁盘识别并分区格式化挂接
  • 【Unity】ShaderGraph应用(浮动气泡)
  • Android EditText setTranslationY导致输入法覆盖问题
  • MySQL 导出和导入数据
  • ubuntu22.04 设置网卡开机自启
  • 持续部署:提高敏捷加速软件交付(内含教程)
  • Spark_Spark内存模型管理
  • C++之operator=与operator==用法区别(二百一十八)
  • 【漏洞复现】WordPress插件wp-file-manager任意文件上传漏洞(CVE-2020-25213)
  • 基于安卓Java试题库在线考试系统uniapp 微信小程序
  • Java入坑之语法糖