开源可观测性平台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等,可采用相同方案接入。

相关推荐
Mr.1317 分钟前
数据库的三范式是什么?
数据库
Cachel wood24 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Python之栈31 分钟前
【无标题】
数据库·python·mysql
m0_7482417032 分钟前
DuetWebControl 开源项目常见问题解决方案
开源
风_流沙43 分钟前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
亽仒凣凣1 小时前
Windows安装Redis图文教程
数据库·windows·redis
亦世凡华、1 小时前
MySQL--》如何在MySQL中打造高效优化索引
数据库·经验分享·mysql·索引·性能分析
YashanDB1 小时前
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
数据库·yashandb·崖山数据库
ProtonBase1 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
云和数据.ChenGuang6 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite