开源可观测性平台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状态。
至此,主机监控接入和告警配置完成。

相关内容

热门资讯

1.9分钟了解!多乐小程序游戏... 1.9分钟了解!多乐小程序游戏破解器!竟然确实有辅助工具(有挂技巧)1、玩家可以在多乐小程序游戏破解...
长期以来!创思维正版辅助器下载... 长期以来!创思维正版辅助器下载!一直确实有辅助器(有挂解密)1、该软件可以轻松地帮助玩家将创思维正版...
玩家爆料!长乐互娱软件助手!一... 玩家爆料!长乐互娱软件助手!一贯真的有辅助挂(讲解有挂)1、游戏颠覆性的策略玩法,独创攻略技巧玩法,...
科普!顺欣茶楼开挂!其实是真的... 科普!顺欣茶楼开挂!其实是真的有辅助神器(有挂教学)1、不需要AI权限,帮助你快速的进行顺欣茶楼开挂...
网友热议!内蒙麻将外卦神器下载... 网友热议!内蒙麻将外卦神器下载!果然存在有辅助挂(的确有挂)1、上手简单,内置详细流程视频教学,新手...
近日!闲来辅助神器下载2022... 近日!闲来辅助神器下载2022!确实真的有辅助方法(新版有挂)闲来辅助神器下载2022辅助器是一种具...
玩家必看!麻雀智能辅助软件!果... 玩家必看!麻雀智能辅助软件!果然存在有辅助挂(有挂功能)1、全新机制【麻雀智能辅助软件ai辅助工具激...
大神推荐!财神十三张福袋多少钱... 大神推荐!财神十三张福袋多少钱!总是是有辅助插件(的确有挂)1、很好的工具软件,可以解锁游戏的财神十...
记者发布!微乐山西威信小程序!... 记者发布!微乐山西威信小程序!一贯存在有辅助教程(果真有挂)记者发布!微乐山西威信小程序!一贯存在有...
1.9分钟了解!同乡游有辅助软... 1.9分钟了解!同乡游有辅助软件吗!一直真的是有辅助app(有挂详情)1、超多福利:超高返利,海量正...