前言

上篇我们介绍了Skywalking的基本概念与如何接入.Net Core项目,感兴趣可以去看看:

Skywalking APM监控系列(一丶.NET5.0+接入Skywalking监听)

本篇我们主要讲解一下Skywalking如何接入mysql数据库监听与Linux服务器的监听

其实从Skywalking设计之初 应该只是单独的链路跟踪,发展到现在 已经成为了一个成熟的APM框架了.

既然是APM那我们当然需要监听到数据库情况和服务器的情况.

本篇就讲讲如何监听这些数据

Mysql接入Skywalking

mysql接入Skywalking需要两个工具:

mysqld-exporter

pentelemetry-collector

他们一个负责数据库的数据采集,一个负责将采集到的数据汇总后发送给Skywalking的OAP服务,并最终通过UI展示在界面上.

所以,我们需要先安装这两个工具,当然,他们也是支持容器化的,所以这里采用docker运行,如下:

1.部署mysqld-exporter

docker run -d -p 9104:9104 --name mysqld-exporte  -e DATA_SOURCE_NAME=mysql_exporter:mysql_exporter@(mysql地址:3306)/  -e TZ=Asia/Shanghai prom/mysqld-exporter:v0.14.0

这里,我们通过环境变量DATA_SOURCE_NAME,直接将数据库连接给赋予mysqld-exporter

2.部署pentelemetry-collector

首先我们需要创建pentelemetry-collector的yaml配置文件,创建文件otel-collector-config.yaml,输入内容如下:

receivers:
prometheus:
config:
scrape_configs:
- job_name: 'mysql-monitoring'
scrape_interval: 5s
static_configs:
- targets: ['mysqld-exporter:9104'] #这里是mysqld-exporter的地址
labels:
host_name: showcase
processors:
batch: exporters:
otlp:
endpoint: SkyWalking OAP 地址:11800
tls:
insecure: true
service:
pipelines:
metrics:
receivers:
- prometheus
processors:
- batch
exporters:
- otlp

这里解释一下含义:

1)receivers 用于配置 Collector 的数据来源,这里是从 prometheus 的 mysqld_exporter 抓取数据;

2)exporters 用于配置要将接收到的数据发送到哪里,这里是发送到 SkyWalking OAP ;

3)processors 指定如何处理接收到的数据;

4)service 配置将整个 pipelines 串起来。

然后我们运行pentelemetry-collector容器,命令如下:

docker run -d -p 55678:55678--name otel-collector  -v /home/otel-collector-config.yaml:/etc/otel-collector-config.yaml  -e TZ=Asia/Shanghai otel/opentelemetry-collector:0.86.0 --config=/etc/otel-collector-config.yaml

这里将我们刚写好的otel-collector-config.yaml文件映射至容器内,并通过这个配置运行pentelemetry-collector.

这样就完成了整个部署工作

3.效果预览

Linux服务器接入Skywalking

Linux服务器接入Skywalking也需要两个工具:

node_exporter

pentelemetry-collector

他们一个负责数据库的数据采集,一个负责将采集到的数据汇总后发送给Skywalking的OAP服务,并最终通过UI展示在界面上.

所以,我们需要先安装这两个工具,虽然node_exporter支持容器化运行,但是需要额外配置一些其他的东西,所以我们采取直接运行在linux主机上.(官网的最佳实践也是建议直接跑在服务器中)

1.我们需要先安装node_exporter,下载地址如下:

Release 1.6.1 / 2023-06-17 · prometheus/node_exporter (github.com)

各位根据需要,自行下载,(需小技巧上网)

然后我们将下好的压缩包复制到服务器上

通过命令解压,如下:

tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz

然后,我们需要创建一个系统服务,让node_exporter能够开机自启并通过系统管控,执行命令如下:

vim /etc/systemd/system/node_exporter.service

复制如下内容:

[Unit]
Description=node exporter service
Documentation=https://prometheus.io
After=network.target [Service]
Type=simple
User=root
Group=root
ExecStart=/home/skywalking/node_exporter-1.6.1.linux-amd64/node_exporter #这里是node_exporter的解压地址
Restart=on-failure [Install]
WantedBy=multi-user.target

执行命令刷新系统服务命令:

systemctl daemon-reload

开启node_exporter服务命令:

systemctl start node_exporter

这里服务默认监听9100端口,请勿占用,如需变更,可以自行百度...

这样就完成了node_exporter的安装

2.修改pentelemetry-collector的配置

我们直接修改otel-collector-config.yaml如下:

receivers:
prometheus:
config:
scrape_configs:
- job_name: "vm-monitoring" # make sure to use this in the vm.yaml to filter only VM metrics
scrape_interval: 10s
static_configs:
- targets: ['gateway.docker.internal:9100'] # 这里是主机服务器的采集地址
prometheus/2:
config:
scrape_configs:
- job_name: 'mysql-monitoring'
scrape_interval: 5s
static_configs:
- targets: ['gateway.docker.internal:9104'] # 这里是主机mysql的采集地址
labels:
host_name: showcase processors:
batch:
batch/2: exporters:
otlp:
endpoint: gateway.docker.internal:11800 # 这里是OAP Server address tls:
insecure: true
otlp/2:
endpoint: gateway.docker.internal:11800 # 这里是OAP Server address
tls:
insecure: true
#insecure: true service:
pipelines:
metrics:
receivers: [prometheus]
processors: [batch]
exporters: [otlp]
metrics/2:
receivers: [prometheus/2]
processors: [batch/2]
exporters: [otlp/2]

改好配置后,我们重启上面的pentelemetry-collector服务即可

3.效果预览

前端JS如何接入Skywalking

Skywalking同时是可以支持监听整个前端的错误信息与运行情况的

相对来说也比较简单引入skywalking-client-js 这个包就可以了.

不过也要提一下,比如我们的前端可能托管在MVC.是通过视图来实现的前端,而不是各种前端脚手架.

那就需要单独引入一下.

我们通过npm引入skywalking-client-js 这个包

然后添加前端JS引用代码如下

    <script src="~/scripts/skywalking-client-js/lib/index.js"></script>

直接在_Layout母版页编写JS代码如下:

 ClientMonitor.register({
// 基础配置
collector: GetService("skyaop"), //这里填写skywalkingapo的地址
service: 'SPD_Web',
serviceVersion: '@JSConfig.Version',
pagePath: window.location.href,
useFmp: true
})

这样,我们所有引用了母版页的前端界面 就都纳入到监听下了.

Skywalking APM监控系列(二、Mysql、Linux服务器与前端JS接入Skywalking监听)的更多相关文章

  1. centos性能监控系列二:Collectl初解

    对于一个 Linux 系统管理员来说确保自己管理的系统处于一个良好的状态是其首要责任. Linux 系统管理员可以找到有很多工具来帮助自己监控和显示系统中的进程,例如 top 和 htop 今天介绍一 ...

  2. redis系列二: linux下安装redis

    下面介绍在Linux环境下,Redis的安装与配置 一. 安装 1.首先上官网下载Redis 压缩包,地址:http://redis.io/download 下载稳定版3.0即可. 2.通过远程管理工 ...

  3. shell脚本编程学习笔记(二)linux服务器启动流程

    一.linux服务器启动流程 1.bios找到磁盘上的mbr主引导扇区 2.进入grub洁面选择相应的启动内核 3.读取kernel内核文件-/boot/vmlinuz-* 4.读取init的镜像文件 ...

  4. linux设置预留端口号,防止监听端口被占用 ip_local_reserved_ports

    1. 背景 linux服务器启动时,会对指定的端口进行监听bind,如果同一个机器上这个端口已经被使用,则监听失败,程序无法启动. linux客户端连接服务器accept时,系统会分配本地临时端口用于 ...

  5. 以太坊系列之十七: 使用web3进行合约部署调用以及监听

    以太坊系列之十七: 使用web3进行智能合约的部署调用以及监听事件(Event) 上一篇介绍了使用golang进行智能合约的部署以及调用,但是使用go语言最大的一个问题是没法持续监听事件的发生. 比如 ...

  6. 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的

    我们在<服务器在管道中的"龙头"地位>中对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了介绍,为了让读者朋友们对管道中的服务器具有更 ...

  7. Linux下的启动oracle服务 启动监听 开放端口操作

    尝试登录oracle 使用root用户将没有sqlplus命令 [root@localhost ~]# sqlplus /nolog bash: sqlplus: 未找到命令...     [root ...

  8. 软件性能测试技术树(二)----Linux服务器性能

    全图: 测试目的: 测试范围&性能指标: 测试与生产环境服务器配置不同的处理方法: 实时CPU监控: 实时内存监控: 实时网络监控: 实时磁盘监控: 万能命令:  Linux下的进程追踪命令: ...

  9. Mysql系列二:Mysql 开发标准规范

    原文链接:http://www.cnblogs.com/liulei-LL/p/7729983.html 一.表设计 1. 库名.表名.字段名使用小写字母,“_”分割. 2. 库名.表名.字段名不超过 ...

  10. Mysql(Linux服务器)root用户密码忘记重置方法

    MySQL是非常常见的开源数据库,使用者众多,若是不小心忘记了安装在服务器的mysql密码,无法登陆,应该如何重置呢?方法很简单,现在和大家分享下.(系统环境:CentOs 6.5  软件:Mysql ...

随机推荐

  1. GPT3的性能评估:比较不同语言、文本和任务的差异

    目录 GPT-3 性能评估:比较不同语言.文本和任务的差异 近年来,自然语言处理 (NLP) 和人工智能领域取得了巨大的进展,其中 GPT-3 是目前最为先进的语言模型之一.GPT-3 拥有超过 17 ...

  2. Python运维开发之路《WEB框架:Django》

    一.Web框架的本质 所有的web框架.web请求:本质上都是:socket 浏览器:socket客户端 服务器:socket服务端 1. socket服务端 import socket def ha ...

  3. Redis核心技术与实践 03 | 高性能IO模型:为什么单线程Redis能那么快?

    原文地址:https://time.geekbang.org/column/article/268262 个人博客地址:http://njpkhuan.cn/archives/redis-he-xin ...

  4. Bash 内建命令

    官方文档 Bash内建命令 查看命令是否为Bash内建命令

  5. 西门子HMI切换页面时的指示功能

    怎么样才能做到像这样按下切换界面的按钮,切换过去之后对应的切换按钮还进行高亮指示呢? 首先我们要先新建模板,把我们的画面拖拽到模板里就会形成按钮 在画面的"属性"中 在属性中选上我 ...

  6. HTML的总结与回顾(思维导图

  7. Django: Token分发

    Django后台token分发 在settings.py中引入 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'd ...

  8. AttributeError: 'EmailUse' object has no attribute 'SendMail'

    错误原因:函数名与模块名重复 解决方案:不要将函数名与模块名重复

  9. MISC杂项解题思路

    首先拿到一个杂项的附件 第一步要判断 是什么类型的杂项题目 附件是什么内容 是图片? 是压缩包? 是磁盘文件? 还是其他未知的东西 第一步的判断能够直接将解题思路精准定位到正确的区域下 加快解题速度 ...

  10. vlan与单臂路由

    vlan 1,什么是vlan vlan叫做虚拟局域网 (VLAN, Virtual LAN) 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能.部门及应 ...