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

开源可观测性平台Signoz(四)【链路监控及数据库中间件监控篇】

开源可观测性平台Signoz(三)【服务器主机监控篇】_轻量化监控工具

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


前文链接:

​​开源可观测性平台Signoz系列(一)【开篇】​​

​​开源可观测性平台Signoz(二)【日志采集篇】​​

​​开源可观测性平台Signoz(三)【服务器主机监控篇】​​

在前文中,分享了signoz的安装、基础配置、日志采集、主机监控添加,本文则分享signoz中链路监控、数据库、中间件接入过程。

1. java链路监控

1.1 接入方案

java链路监控接入方式类似skywalking监控接入方式,通过agent,将相关指标接入signoz。

客户端jar包:opentelemetry-javaagent.jar

客户端jar包下载:

wget https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar

java启动参数加入: 

-javaagent:/${path}/opentelemetry-javaagent.jar -Dotel.resource.attributes=service.namespace=test,service.name=zrtc-api,deployment.environment=poc -Dotel.metrics.exporter=none -Dotel.exporter.otlp.endpoint=http://${IP of signoz}:4317

参数详解:

-javaagent:/${path}/opentelemetry-javaagent.jar:配置jar包的路径

-Dotel.resource.attributes:配置应用的基本信息,如namespace、servicename、environment等,根据当前环境适当增减参数,如非k8s的应用,可去掉namespace配置

otel.metrics.exporter:这个是metrics的配置,在此处必须要特地提醒一下,在旧版本中这个值默认为none,即不开启。但是在较新的版本中这个值默认变成了otlp,因此需要提醒下如果不需要metrics的能力,需要在新版本中将这个值手动设置为none

otel.traces.exporter:用来配置数据输出的exporter,默认是otlp,但是jaeger,zipkin等等也在支持的范围之内,可以根据自己的需求进行配置。

otel.exporter.otlp.trace.endpoint:用来配置具体的采集端点地址,注意此配置仅生效于otlp,如果是jaeger等其他,需要自行使用其他配置。一般来说的话:gRPC协议使用4317端口,http协议使用4318端口(建议使用gRPC)

1.2 例子

以某docker-compose方式部署的java应用sre-test为例,记录java应用接入signoz过程。

先将agent包上传到服务器某个目录,这里是将opentelemetry-javaagent.jar所在目录挂载到了容器里测试接入:

图片

修改docker-compose.yaml部署文件,添加signoz agent:

[root@test102 sre-test]# cat sre-test.yaml
version: "3"
services:zrtc-api:image: www.harbor.com/sre/sre-test:1.0.0container_name: sre-testrestart: alwaysprivileged: trueenvironment:TZ: Asia/Shanghai### 修改SERVICE_STARTUP_CONFIG,添加opentelemetry-javaagent.jar启动相关参数SERVICE_STARTUP_CONFIG: -javaagent:/jar/opentelemetry-javaagent.jar -Dotel.resource.attributes=service.namespace=test,service.name=sre-test,deployment.environment=poc -Dotel.metrics.exporter=none -Dotel.exporter.otlp.endpoint=http://10.0.0.101:4317 -Xmx512m -Xms512mSPRING_PROFILES_ACTIVE: pocvolumes:- /home/otel/jar:/jar  ###挂载jar包目录
[root@test102 sre-test]#

启动sre-test应用:

docker-cmpose -f sre-test.yaml start

在应用启动后,signoz界面的链路板块,就能看到相关的监控信息了:

图片

2. 数据库与中间件接入

2.1 接入方案

signoz支持Prometheus指标采集,因此数据库和中间件可通过exporter客户端导出数据到Prometheus,然后在signoz配置Prometheus target,即可完成监控数据接入。

2.2 例子

以MongoDB和RabbitMQ为例,记录数据库和中间件的监控接入。

2.2.1exporter安装

MongoDB安装exporter

mongodb_exporter下载链接:https://github.com/percona/mongodb_exporter

步骤:

1)先在mongodb创建监控专用用户,这里创建的用户为prometheus

2)然后启动mongodb_exporter:

nohup  ./mongodb_exporter --mongodb.uri mongodb://prometheus:prometheus@{IP OF MONGODB}:27017/admin  --collector.diagnosticdata  --collector.replicasetstatus --collector.dbstats  --collector.topmetrics  --collector.indexstats  --collector.collstats  --metrics.overridedescendingindex  --collect-all  &

mongodb_exporter启动的端口为9216,这个端口要配置到otel-collector-metrics-config.yaml中。

RabbitMQ开启rabbitmq_prometheus

rabbitmq-plugins enable rabbitmq_prometheus
2.2.2 修改signoz配置文件,接入监控

在Prometheus模块加入以上需要监控的应用target:

..... #前面省略若干行prometheus:config:scrape_configs:# otel-collector-metrics internal metrics- job_name: otel-collector-metricsscrape_interval: 60sstatic_configs:- targets:- localhost:8888labels:job_name: otel-collector-metrics# SigNoz span metrics- job_name: signozspanmetrics-collectorscrape_interval: 60sstatic_configs:- targets:- otel-collector:8889
###############新增配置开始###############- job_name: "mongo-test"scrape_interval: 60sstatic_configs:- targets: ["10.0.0.1:9216","10.0.0.2:9216","10.0.0.3:9216"]- job_name: "rabbitmq-test"scrape_interval: 60sstatic_configs:- targets: ["10.0.0.1:15692","10.0.0.2:15692","10.0.0.3:15692"]
###############新增配置结束###############         
processors:batch:send_batch_size: 10000send_batch_max_size: 11000timeout: 10s
......  #后面省略若干行

重启otel-collector-metrics并确认otel-collector-metrics日志无报错信息

docker-compose -f docker-compose.yaml  restart otel-collector-metrics
2.2.3 创建Dashboard和Alert

告警接入后,就可以创建Dashboard看板和告警信息了,方法同《​​开源可观测性平台Signoz(三)【服务器主机监控篇】​​》。

其余如mysql、PostgreSQL、redis等,可采用相同方案接入。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024年原创深度学习算法项目分享
  • HTML进阶
  • WPF 新手指引弹窗
  • Spring通信传参的方法
  • AI人工智能大模型讲师叶梓《基于人工智能的内容生成(AIGC)理论与实践》培训提纲
  • OpenCV-Python(22):2D直方图
  • TensorFlow Hub模型
  • 拓展操作(三) jenkins迁移到另一个机器
  • 关键字:try-catch关键字
  • Ubuntu安装WordPress并使用Nginx作为Web服务器
  • Openwrt修改Dropbear ssh root密码
  • 数据流的中位数
  • 非常好用的ocr图片文字识别技术,识别图片中的文字
  • 【教学类-43-03】20231229 N宫格数独3.0(n=1、2、3、4、6、8、9) (ChatGPT AI对话大师生成 回溯算法)
  • 前端文件在虚拟机,后端在本机,两个如何通信
  • 【刷算法】求1+2+3+...+n
  • 2018一半小结一波
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CSS实用技巧
  • ECMAScript6(0):ES6简明参考手册
  • flutter的key在widget list的作用以及必要性
  • JSDuck 与 AngularJS 融合技巧
  • js递归,无限分级树形折叠菜单
  • Laravel5.4 Queues队列学习
  • mysql_config not found
  • python大佬养成计划----difflib模块
  • webpack入门学习手记(二)
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 前端面试之闭包
  • 区块链分支循环
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 双管齐下,VMware的容器新战略
  • 我从编程教室毕业
  • 智能合约Solidity教程-事件和日志(一)
  • ​力扣解法汇总946-验证栈序列
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #if等命令的学习
  • (Charles)如何抓取手机http的报文
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (七)理解angular中的module和injector,即依赖注入
  • (三)终结任务
  • (四)图像的%2线性拉伸
  • (转)程序员技术练级攻略
  • (转)四层和七层负载均衡的区别
  • ***检测工具之RKHunter AIDE
  • .NET 中的轻量级线程安全
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .Net的C#语言取月份数值对应的MonthName值
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @31省区市高考时间表来了,祝考试成功