Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811

AsterNOS监控方案

1 AsterNOS监控方案

1.1 方案概述

本文档将简要介绍AsterNOS监控方案及其各组件功能,并完成对Asterfusion CX-N系列超低时延云交换机的配置和数据采集。

1.2 整体逻辑方案图

AsterNOS监控方案逻辑图
图1:AsterNOS监控方案逻辑图

1.3 各组件功能

  • Alertmanager:主要用于接收Prometheus发送的告警信息,并及时地将告警信息发送到PrometheusAlert进行转发。
  • PrometheusAlert:运营告警中心消息转发系统,支持主流的监控系统Prometheus以及所有支持WebHook接口的系统发出的预警信息,支持将收到的信息通过WeChat、Mail、飞书、短信等渠道推送。
  • Grafana:是一个开源的监控数据分析和可视化套件,最常用于对基础设施和应用数据分析的时间序列数据进行可视化分析。
  • Prometheus:Prometheus是一个开源的系统监控和报警系统,同时支持多种Exporter采集数据,Prometheus性能足够支撑上万台规模的集群。
  • SNMP Exporter:通过SNMP协议中用不同的OID区分不同的状态数据,OID非常类似于Prometheus中的指标的概念,SNMP Exporter通过从Agent查询指定的OID数据,同时将数据映射到可读的指标上,实现SNMP数据到Prometheus指标的转换,大部分场景下用户无需额外配置即可将OID转换为可读的指标数据。
  • Node Exporter:多用于收集内核公开的硬件或操作系统指标,监控设备的CPU、内存、磁盘、I/O等信息。

2 组网方案

2.1 软硬件信息

名称版本备注
监控节点CPU:48 Cores
内存:128 GB
Prometheus、Alertmanager Grafana
服务器系统CentOS Linux release 7.9.2009 (Core) 
AsterNOSAsterNOS Version 3.1 R0402P02 
Prometheusprom/prometheus:v2.37.0 
Alertmanagerquay.io/prometheus/alertmanager 
Grafanagrafana/grafana-oss:9.0.6 
Node ExporterNode Exporter:v0.3.0SONiC Node Exporter
SNMP ExporterSNMP Exporter:0.24.1 
表1:软硬件版本信息

2.2 监控系统规划

主机名节点IP节点角色
监控节点管理口:10.240.5.223
Promehteus:9090 Alertmanager:9093 Grafana:3000 PrometheusAlert:8080
Prometheus、Alertmanager、Grafana、PrometheusAlert
AsterNOS管理口:10.230.1.10 Node Exporter:9100 SNMP Exporter:9116Node Exporter、SNMP Exporter
表2:监控规划

3 监控组件部署

3.1 Node Exporter

在每台被监控交换机上部署Node Exporter,用于收集内核公开的硬件或操作系统指标,监控交换机的CPU、内存、磁盘、I/O等信息。Node Exporter监听本地9100端口。

root@sonic:~# version=$(curl -s https://api.github.com/repos/kamelnetworks/sonic_exporter/releases | jq '.[0].name' -r)
root@sonic:~# sonic-package-manager install   \
--from-repository "ghcr.io/kamelnetworks/sonic_exporter:${version}" \
--enable
root@sonic:~# config feature state sonic_exporter enabled
root@sonic:~# config sonic-exporter port 9100
root@sonic:~# netstat -nlp |grep 9100
部署Node Exporter
Docker方式安装:
root@sonic:~# docker run -d  --net=host \
-v /run/redis/:/var/run/redis/ \
--name roce_exporter sonic_exporter:0.3.0

3.1.1 Node Exporter Metrics

浏览器访问设备的9100端口,查看采集的数据。

查看采集的数据
图2:Node Exporter采集数据

3.1.2 Node Exporter 自定义监控

通过Node Exporter的Textfile插件完成自定义监控,自定义脚本并把内容以Key:value的方式写入以.prom结尾的文件,定时任务执行自定义脚本,添加启动参数,Node Exporter采集数据。

root@sonic:~# ./node_exporter \
--collector.textfile.directory='/home/admin/Prometheus/’
root@sonic:~# cat /home/admin/Prometheus/asternos.prom
#HELP example_metric read from /path/example.prom  
#TYPE example_metric guage  
example_metric 1

3.2 SNMP Exporter数据转换

在每台被监控交换机上部署SNMP Exporter,SNMP Exporter通过Agent查询指定的OID数据,同时将数据映射到可读的指标上,实现SNMP数据到Prometheus指标的转换,完成监控私有数据开发。SNMP Exporter监听本地9116端口。SNMP Exporter文件下载地址:https://github.com/prometheus/snmp_exporter/releases/download/v0.24.1/snmp_exporter-0.24.1.freebsd-amd64.tar.gz

SNMP完整配置文件:

snmp.yml
root@sonic:~# tar -xvf snmp_exporter-0.24.1.linux-amd64.tar.gz
root@sonic:~# cd snmp_exporter-0.24.1.linux-amd64
root@sonic:~/snmp_exporter-0.24.1.linux-amd64# cat snmp.yml
auths:
  public_v2:
    community: public
    security_level: noAuthNoPriv
    auth_protocol: MD5
    priv_protocol: DES
    version: 2
modules:
  AsterNOS:
    walk:
    - 1.3.6.1.2.1.2
    - 1.3.6.1.2.1.31.1.1
    get:
    - 1.3.6.1.2.1.1.1.0
    metrics:
    - name: asterSysRunTime
      oid: 1.3.6.1.4.1.56928.25.1.1
      type: gauge
      help: AsterNOS CX-N switch Device operating time
    - name: asterPortHighSpeed
      oid: 1.3.6.1.2.1.31.1.1.1.15
      type: gauge
      help: AsterNOS CX-N Port negotiation Speed
      indexes:
      - labelname: asterPortIndex
        type: gauge
      lookups:
      - labels:
        - asterPortIndex
        labelname: asterPortAlias
        oid: 1.3.6.1.2.1.31.1.1.1.18
        type: DisplayString
      - labels:
        - asterPortIndex
        labelname: asterPortDescr
        oid: 1.3.6.1.2.1.2.2.1.2
        type: DisplayString

root@sonic:~/snmp_exporter-0.24.1.linux-amd64# ./snmp_exporter &

3.2.1 SNMP Exporter Metrics

浏览器访问设备的9116端口,查看采集的数据。Moudle:AsterNOS。

图3:SNMP Exporter采集数据

3.2.2 SNMP Exporter Metrics(Docker)

Docker方式安装SNMP Exporter

snmp.tar
root@sonic:~# docker load < snmp.tar
root@sonic:~# docker run -d \
-v /home/admin/snmp.yml:/etc/snmp_exporter/snmp.yml \ 
--net=host --name snmp_exporter prom/snmp-exporter:v0.24.1

3.3 监控报警推送

3.3.1 Alertmanager

在监控节点部署Alertmanager,主要用于接收Prometheus发送的告警信息,并及时地将告警转发到ProtmetheusAlert。

[root@computer1 prometheus] docker run --name alertmanager \
-v ~/prometheus/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
-d -p 0.0.0.0:9093:9093 quay.io/prometheus/alertmanager
[root@computer1 prometheus] cat alertmanager.yml
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
  - name: 'web.hook'
    webhook_configs:
      - url: 'http://127.0.0.1:5001/'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
equal: ['alertname', 'dev', 'instance']

3.3.2 PrometheusAlert

在监控节点部署PrometheusAlert,主要用于接收Alertmanager转发的告警信息,并及时地通过WeChat、Email、飞书和短信等渠道发送告警通知。

[root@computer1 prometheus] docker run -d -p 8080:8080 -v \ ~/prometheus/app.conf:/app/conf/app.conf \
--name prometheusalert feiyu563/prometheus-alert:latest
[root@computer1 prometheus] cat app.conf
appname = PrometheusAlert
#登录用户名
login_user=root
#登录密码
login_password=tera123
#监听地址
httpaddr = "0.0.0.0"
#监听端口
httpport = 8080
runmode = dev
#开启JSON请求
copyrequestbody = true
#告警消息标题
title=PrometheusAlert
#日志文件路径
logpath=logs/prometheusalertcenter.log

3.3.3 对接Email报警

[root@computer1 prometheus]# cat alertmanager.yml 
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'AlertManager_Email'
receivers:
- name: 'AlertManager_Email'
  webhook_configs:
  - url: 'http://10.240.5.223:8080/prometheusalert?type=email&tpl=prometheus-email&email='
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
equal: ['alertname', 'dev', 'instance']

[root@computer1 prometheus]# cat app.conf
#---------------------↓邮件配置-----------------------
#是否开启邮件
open-email=1
#邮件发件服务器地址
Email_host=smtp.qq.com
#邮件发件服务器端口
Email_port=465
#邮件帐号
Email_user=
#邮件密码
Email_password=
#邮件标题
Email_title=AsterNOS告警
#默认发送邮箱
Default_emails=
 

报警信息:

AsterNos告警

3.3.4 对接飞书报警

[root@computer1 prometheus]# cat alertmanager.yml 
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'AlertManager_Feishu'
receivers:
- name: 'AlertManager_Feishu'
  webhook_configs:
  - url: 'http://10.240.5.223:8080/prometheusalert?type=fs&tpl=prometheus-fs&fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/41078fb9-c716-434f-9ca4-d8ba64caa7ea'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

[root@computer1 prometheus]# cat app.conf
#---------------------↓全局配置-----------------------
appname = PrometheusAlert
#登录用户名
login_user=root
#登录密码
login_password=tera123
#监听地址
httpaddr = "0.0.0.0"
#监听端口
httpport = 8080
runmode = dev
#设置代理 proxy = http://123.123.123.123:8080
proxy =
#开启JSON请求
copyrequestbody = true
#告警消息标题
title=PrometheusAlert
#日志文件路径
logpath=logs/prometheusalertcenter.log
#是否开启飞书告警通道,可同时开始多个通道0为关闭,1为开启
open-feishu=1
#默认飞书机器人地址
fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/41078fb9-c716-434f-9ca4-d8ba64caa7ea

报警信息:

Prometheus告警信息

3.4 Prometheus

在监控节点部署Prometheus,用于存储Exporter采集的数据,同时提供数据检索和报警推送等功能。

[root@computer1 prometheus] docker run -d -p 9090:9090 -v \ ~/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus  prom/prometheus:v2.37.0
[root@computer1 prometheus] cat prometheus.yml
scrape_configs:
  - job_name: "node-exporter"
    static_configs:
      - targets: ["10.230.1.10:9100"]
  - job_name: "snmp-exporter"
    static_configs:
      - targets:
        - 10.230.1.10
    metrics_path: /snmp
    params:
      auth: [public_v2]
      module: [AsterNOS]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.230.1.10:9116
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 10.240.5.223:9093
rule_files:
  - "AsterNOS_rules.yml"

[root@computer1 prometheus] cat AsterNOS_rules.yml
groups:
- name: "CXN_node"
  rules:
  - alert: "CPU高负载警告"
    expr: ((1-(node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100)>90
    for: 3m
    labels:
      severity: critical
    annotations:
      summary: "实例 {{ $labels.instance }} 的CPU使用率过高"
      description: "此设备的CPU使用率已超过阈值,当前值: {{ $value }}%。此问题会导致系统中各个服务假死、断连,甚至是服务器宕机,请管理员务必及时处理!"

3.4.1 Prometheus Metrics Explorer

浏览器访问监控节点的9090端口,查看Prometheus采集到的数据。

查看Prometheus采集到的数据
图5:Prometheus数据展示

3.5 Grafana

在监控节点部署Grafana,用于对基础设施和应用数据分析的时间序列数据进行可视化分析。

[root@computer1 prometheus] docker run -d -p 3000:3000 \
--name grafana  grafana/grafana-oss:9.0.6

3.5.1 Grafana Login

浏览器访问监控节点的3000端口访问Grafana登录页面,默认用户名密码admin/admin。

Grafana登录页面
图6:Grafana登陆页面

3.5.2 配置数据源

在Grafana管理面板上添加Prometheus数据源。

Grafana管理面板
图7:Grafana添加数据源

3.5.3 监控大屏

在Grafana管理面板上导入AsterNOS监控配置文件。AsterNOS监控大屏文件:

AsterNos.json
Grafana添加Dashboard
图8:Grafana添加Dashboard
Grafana监控大屏展示
图9:Grafana监控大屏展示

A-lab-AI&HPC

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2