开源可观测性平台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.0
    container_name: sre-test
    restart: always
    privileged: true
    environment:
      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 -Xms512m
      SPRING_PROFILES_ACTIVE: poc
    volumes:
      - /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-metrics
          scrape_interval: 60s
          static_configs:
            - targets:
                - localhost:8888
              labels:
                job_name: otel-collector-metrics
        # SigNoz span metrics
        - job_name: signozspanmetrics-collector
          scrape_interval: 60s
          static_configs:
            - targets:
              - otel-collector:8889
###############新增配置开始###############
        - job_name: "mongo-test"
          scrape_interval: 60s
          static_configs:
            - targets: ["10.0.0.1:9216","10.0.0.2:9216","10.0.0.3:9216"]
        - job_name: "rabbitmq-test"
          scrape_interval: 60s
          static_configs:
            - targets: ["10.0.0.1:15692","10.0.0.2:15692","10.0.0.3:15692"]
###############新增配置结束###############         
processors:
  batch:
    send_batch_size: 10000
    send_batch_max_size: 11000
    timeout: 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等,可采用相同方案接入。

相关推荐
下雨天u30 分钟前
maven dependencyManagement标签作用
java·数据库·maven
代码配咖啡34 分钟前
国产数据库工具突围:SQLynx如何解决Navicat的三大痛点?深度体验报告
数据库
清酒伴风(面试准备中......)1 小时前
小白学编程之——数据库如何性能优化
数据库·oracle·性能优化
The Future is mine1 小时前
SQL Server中delete table和truncate table删除全表数据哪个快?
数据库
瀚高PG实验室1 小时前
HGDB插入超长字段报错指示列名的问题处理
数据库
好吃的肘子2 小时前
MongoDB 高可用复制集架构
数据库·mongodb·架构
兮兮能吃能睡2 小时前
Python之with语句
数据库·python
不穿铠甲的穿山甲2 小时前
MySQL-数据库分布式XA事务
数据库·分布式·mysql
Hadoop_Liang3 小时前
解决Mawell1.29.2启动SQLException: You have an error in your SQL syntax问题
大数据·数据库·maxwell
码上飞扬3 小时前
MongoDB数据库深度解析:架构、特性与应用场景
数据库·mongodb·架构