开源可观测性平台Signoz(三)【服务器主机监控篇】

news/2024/7/10 21:14:53 标签: 开源, 服务器, 运维

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<container_id>[^_]+)/.*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状态。
至此,主机监控接入和告警配置完成。


http://www.niftyadmin.cn/n/5297115.html

相关文章

linux go环境安装 swag

下载依赖包 go get -u github.com/swaggo/swag编译 移动到下载的go-swagger包目录,一般在$GOPATH/pkg/mod下 查看 GOPATH echo $GOPATHcd /root/GolangProjects/pkg/mod/github.com/swaggo/swagv1.16.2go install ./cmd/swag/不出意外&#xff0c;$GOPATH/bin下 已经有了sw…

Linux 服务器安全策略技巧:使用容器进行应用程序隔离

Linux 服务器安全策略技巧:使用容器进行应用程序隔离 什么是容器? 容器是一种虚拟化技术,用于隔离应用程序和其依赖的运行环境。与传统的虚拟机相比,容器更加轻量级,启动速度更快,并且可以在不同的操作系统上运行。容器使用操作系统级别的虚拟化来实现隔离,每个容器都…

【深度学习:Few-shot learning】理解深入小样本学习中的孪生网络

【深度学习&#xff1a;Few-shot learning】理解深入小样本学习中的孪生网络 深入理解孪生网络&#xff1a;架构、应用与未来展望小样本学习的诞生元学习小样本学习孪生网络的基本概念孪生网络的细节Triplet Loss架构特点关键组件训练过程主要应用领域未来展望示例图片结论 备注…

GO学习记录 —— 创建一个GO项目

文章目录 前言一、项目介绍二、目录介绍三、创建过程1.引入Gin框架、创建main2.加载配置文件3.连接MySQL、redis4.创建结构体5.错误处理、返回响应处理 前言 代码地址 下载地址&#xff1a;https://github.com/Lee-ZiMu/Golang-Init.git 一、项目介绍 1、使用Gin框架来创建项…

每日一题——LeetCode961

方法一 排序法&#xff1a; 2*n长度的数组里面有一个元素重复了n次&#xff0c;那么将数组排序&#xff0c;求出排序后数组的中间值&#xff08;因为长度是偶数&#xff0c;没有刚好的中间值&#xff0c;默认求的中间值是偏左边的那个&#xff09;那么共有三种情况&#xff1a;…

[LitCTF 2023]Vim yyds

[LitCTF 2023]Vim yyds wp 题目页面如下&#xff1a; 搜索一番&#xff0c;没有发现任何信息。题目描述中说到了源码泄露&#xff0c;那么先进行目录扫描。 dirsearch 目录扫描 命令&#xff1a; dirsearch -u "http://node4.anna.nssctf.cn:28588/"返回结果&…

设计模式—单例模式 / DCL失效问题 / 暴力破解单例 (反射/序列化)

单例模式 杂谈 前提饿汉模式&#xff1a;懒汉模式&#xff1a; 线程不安全线程安全 双重锁懒汉模式(Double Check Lock)静态内部类模式枚举单例 杂谈 和同学在聚会的时候聊起设计模式&#xff0c;聊完之后发现我对自己的设计模式的看法貌似存在误解&#xff0c;当我看到设计…

C++设计模式 #8 抽象工厂(Abstract Factory)

抽象工厂这个名字比较难以帮助理解&#xff0c;可以把抽象工厂理解为“品牌工厂”或者“家族工厂”。 动机 在软件系统中&#xff0c;经常面临着“一系列相互依赖的对象”的创建工作&#xff1b;同时&#xff0c;由于需求的变化&#xff0c;往往存在更多系列对象的创建工作。如…