开源可观测性平台Signoz(三)【服务器主机监控篇】
创始人
2025-01-18 07:02:30
0

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


前文链接:
开源可观测性平台Signoz系列(一)【开篇】
开源可观测性平台Signoz(二)【日志采集篇】

在前文中,分享了signoz的安装、基础配置、日志采集,本文则分享signoz中如何添加主机监控。

1. 主机监控接入

对主机的监控,也同docker日志收集一样,signoz所在主机会默认收集自身的主机监控指标,非signoz主机需要接入主机监控指标,就需要通过otel-collector客户端收集和上传指标。

1.1 修改配置文件

1)在开源可观测性平台Signoz(二)【日志采集篇】收集日志的配置文件otel-collector-config.yaml的基础上,再增加主机采集配置即可。
如下注释,增加三段内容:

[root@test102 otel]# cat otel-collector-config.yaml  receivers:   filelog/containers:     include: [  "/var/lib/docker/containers/*/*.log" ]     start_at: end     include_file_path: true     include_file_name: false     operators:     - type: json_parser       id: parser-docker       output: extract_metadata_from_filepath       timestamp:         parse_from: attributes.time         layout: '%Y-%m-%dT%H:%M:%S.%LZ'     - type: regex_parser       id: extract_metadata_from_filepath       regex: '^.*containers/(?P[^_]+)/.*log$'       parse_from: attributes["log.file.path"]       output: parse_body     - type: move       id: parse_body       from: attributes.log       to: body       output: add_source     - type: add       id: add_source       field: resource["source"]       value: "docker"     - type: remove       id: time       field: attributes.time   filelog:     include: [ "/var/log/nginx/*.log" ]  #本机nginx日志路径     start_at: beginning     operators:       - type: json_parser         timestamp:           parse_from: attributes.time           layout: '%Y-%m-%d,%H:%M:%S %z'       - type: move         from: attributes.message         to: body       - type: remove         field: attributes.time #####新增内容-1开始#####    hostmetrics:     collection_interval: 30s     scrapers:       cpu: {}       load: {}       memory: {}       disk: {}       filesystem: {}       network: {} #####新增内容-1结束##### processors:   batch:     send_batch_size: 10000     send_batch_max_size: 11000     timeout: 10s #####新增内容-2开始######   resourcedetection:     # Using OTEL_RESOURCE_ATTRIBUTES envvar, env detector adds custom labels.     detectors: [env, system] # include ec2 for AWS, gce for GCP and azure for Azure.     timeout: 2s #####新增内容-2结束###### exporters:   otlp/log:     endpoint: http://10.0.0.101:4317  #如果部署signoz未修改端口映射,则默认是4317      tls:       insecure: true service:   pipelines:     logs:       receivers: [filelog/containers,filelog]       processors: [batch]       exporters: [ otlp/log ] #####新增加内容-3开始######     metrics:        #加载前面每一个相关模块的配置       receivers: [hostmetrics]       processors: [batch,resourcedetection]       exporters: [otlp/log]   #因为exporters信息简单,所以这里复用了[otlp/log],如有个性化设置,可再增加一个[otlp/xx]模块。名称不可重复 #####新增加内容-3结束###### [root@test102 otel]#  

如果不要日志采集,只需要加个host监控,则可以这样简单配置:

 [root@test102 otel]# cat otel-collector-config.yaml receivers:   hostmetrics:     collection_interval: 30s     scrapers:       cpu: {}       load: {}       memory: {}       disk: {}       filesystem: {}       network: {} processors:   batch:     send_batch_size: 10000     send_batch_max_size: 11000     timeout: 10s   resourcedetection:     # Using OTEL_RESOURCE_ATTRIBUTES envvar, env detector adds custom labels.     detectors: [env, system] # include ec2 for AWS, gce for GCP and azure for Azure.     timeout: 2s exporters:   otlp/host: #如果与日志收集配置文件合并,这里可以共用     endpoint: http://10.0.0.101:4317  #如果部署signoz未修改端口映射,则默认是4317      tls:       insecure: true service:   pipelines:     metrics:        #加载前面每一个相关模块的配置       receivers: [hostmetrics]       processors: [batch,resourcedetection]       exporters: [otlp/host]    [root@test102 otel]# 

2)检查docker-compose.yaml文件,确保有如下内容:

[root@test102 otel]# cat docker-compose.yaml  version: "3" services:   otel-collector:     image: signoz/signoz-otel-collector:0.66.5     command: ["--config=/etc/otel-collector-config.yaml"]     user: root # required for reading docker container logs     container_name: signoz-host-otel-collector     volumes:       - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml       - /var/lib/docker/containers:/var/lib/docker/containers:ro       - /var/log/nginx:/var/log/nginx:ro  ##这块env主要用在主机监控时用     environment:         - OTEL_RESOURCE_ATTRIBUTES=host.name=test102,os.type=linux  #${hostname}改为本机hostname       - DOCKER_MULTI_NODE_CLUSTER=false       - LOW_CARDINAL_EXCEPTION_GROUPING=false     restart: on-failure [root@test102 otel]#  

1.2 修重启目标主机otel-collector

重启:

[root@test102 otel]# docker-compose -f docker-compose.yaml  restart otel-collector Restarting signoz-host-otel-collector ... done [root@test102 otel]#  

1.3 创建或导入dashboard看板

Dashboard—New Dashboard:
image.png
如图,dashboard有三种创建方式:

Create Dashboard:手动创建一个新的dashboard,添加自己关心的指标;

Import JSON:导入编辑好的、适应signoz的jsonz的dashboard看板json文件;

Import Grafana JSON:导入Grafana的模板文件,导入后,某些数据会自动进行一些改动,以适应signoz的dashboard。但这种方式目前尚处于实验阶段,从0.16.2版本试用来看,支持还不够友好,需要手动进行较大的调整修改。

目前signoz官网有几个可用的看板可以直接导入使用:https://github.com/SigNoz/dashboards
image.png
导入带变量的模板hostmetrics-with-variable.json后,效果如下:
image.png
image.png
以主机名为变量,查看多个主机的监控看板信息。

1.4 给主机创建独立dashboard看板

如果要给某个特别的主机创建它单独使用的dashboard,即不带hostname变量那种,则步骤如下:

1)在https://github.com/SigNoz/dashboards下载dashboards-main到目标服务器上;

2)修改脚本dashboards-main/hostmetrics/hostmetrics-import.sh,将SIGNOZ_ENDPOINT="http://localhost:3301"中localhost 改为signoz的真实IP或域名;

3)执行脚本sh hostmetrics-import.sh,生成本机的Host Metrics dashboard:
image.png
将新生成的文件signoz-hostmetrics-test102.json导入dashboard即可:
image.png

1.5 监看监控指标

登录clickhouse可以查看支持的监控指标,语法和mysql类似。登录和查询全步骤如下:

[root@test101 clickhouse-setup]# docker exec -it clickhouse /bin/bash  #进入clickhouse容器 bash-5.1#  bash-5.1# clickhouse-client   #登录clickhouse ClickHouse client version 22.8.8.3 (official build). Connecting to localhost:9000 as user default. Connected to ClickHouse server version 22.8.8 revision 54460.  Warnings:  * Linux transparent hugepages are set to "always". Check /sys/kernel/mm/transparent_hugepage/enabled  * Linux threads max count is too low. Check /proc/sys/kernel/threads-max  * Available memory at server startup is too low (2GiB). clickhouse :)  clickhouse :)  clickhouse :) select DISTINCT(JSONExtractString(time_series_v2.labels,'__name__')) as metrics from time_series_v2  #查看指标 ##也可以将指标导出到某个文件 clickhouse :) select DISTINCT(labels) from signoz_metrics.time_series_v2 INTO OUTFILE '/tmp/output.csv'  #导出指标到文件  

2. 告警设置

2.1 配置告警渠道

Setting—Alert Channels—New Alert Channel,添加告警渠道:
image.png
目前支持的告警渠道只有三种:slack、webhook、Pagerduty。

此处用webhook作个实验。

访问https://webhook.site,拿到一个url:https://webhook.site/da782b0b-0f81-43cd-bda0-1dd1625c9220

image.png
将此URL配置到告警渠道,填写好信息后,可以点“test”按钮测试连通性:
image.png
test测试成功后,https://webhook.site/界面能收到信息:
image.png

2.2 创建一个测试告警

告警可以基于指标、日志、链路、异常数据等方式创建告警,此处创建一个简单的基于metric的告警做测试:
image.png
内容如下:
image.png
创建完成:
image.png
过了会儿,达到告警阈值时,开始告警了:
image.png
image.png
同时,https://webhook.site/上也收到了告警信息:
image.png
当阈值恢复时,signoz界面的告警又从Firing状态变回OK状态。
至此,主机监控接入和告警配置完成。

相关内容

热门资讯

5分钟新版!德扑ai代打安装,... 5分钟新版!德扑ai代打安装,wepoke软件透明挂弄新版(2025已更新)-哔哩哔哩;超受欢迎的w...
发现一款!德州软件辅助,琼瑶互... 发现一款!德州软件辅助,琼瑶互娱骨牌外挂,有挂助手(2023已更新)(哔哩哔哩)发现一款!德州软件辅...
避坑细节!wepoke软件透明... 避坑细节!wepoke软件透明挂,兴动互娱有挂的,有挂教程(2020已更新)(哔哩哔哩)避坑细节!w...
4个计算器!wpk透视辅助测试... 4个计算器!wpk透视辅助测试助手,微扑克ai辅助神器计算器(2022已更新)-哔哩哔哩是一款可以让...
实测揭晓!红龙扑克有作假,心悦... 实测揭晓!红龙扑克有作假,心悦海南靠谱的,有挂揭秘(2022已更新)(哔哩哔哩);心悦海南靠谱的软件...
玩家攻略推荐!微扑克辅助是,微... 玩家攻略推荐!微扑克辅助是,微信上的广东雀神麻将有挂的,有挂教会(2022已更新)(哔哩哔哩)是一款...
八个教程!微扑克智能辅助器插件... 八个教程!微扑克智能辅助器插件,wpk微扑克真的有挂教程(2024已更新)-哔哩哔哩;是一款可以让一...
每日必看教程!aa扑克网上的挂... 【福星临门,好运相随】;每日必看教程!aa扑克网上的挂真的假的,开心十三张是否外挂,有挂技巧(202...
2020新技术!微扑克ai辅助... 2020新技术!微扑克ai辅助助手,德扑之星如何分别是否作弊技术(2020已更新)-哔哩哔哩是一款可...
必看攻略!微扑克真的有外挂嘛,... 您好,三哥玩有外挂这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩家在这款...