前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >夜莺监控之Categraf监控VMwareVSphere

夜莺监控之Categraf监控VMwareVSphere

原创
作者头像
Kubernetes技术栈
发布2023-06-13 17:35:18
1.2K0
发布2023-06-13 17:35:18
举报
文章被收录于专栏:Prometheus专栏Prometheus专栏

之前一直在使用开源的虚拟化软件PVE(Proxmox VE),突然有一天网桥莫名其妙的出幺蛾子,周末鼓捣了半天,谷歌百度也找不到对应的解决方案,重新安装烦的不行,后来一怒之下就换了VMwareVSphere7.0,不得不说,VMware的稳定性与实用性是真的赞,奥利给!

但是有了虚拟化,怎么监控性能与告警呢?当前的监控产品样式繁多,到底选择谁好呢?那这里就不得不提当前开源易用性好、扩展能力强、采集插件多、告警通道广的监控系统:Nightingale(后面简称夜莺监控),这里并不是说其他的监控不好用,众家各有所长,这里只对夜莺做监控做讲解,不喜勿喷哈~

Nightingale简介

夜莺监控 夜是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。已有众多企业选择将 Prometheus + AlertManager + Grafana 的组合方案升级为使用夜莺。夜莺于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 100 多个版本。

夜莺最初由滴滴开发和开源,并于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。夜莺的核心研发团队,也是 Open-Falcon 项目原核心研发人员。针对Nightingale的更多详细介绍、安装配置都在这里了,请访问官方文档,在这里就不过多叙述了。

Categraf简介

Categraf 是一个监控采集 Agent,类似 Telegraf、Grafana-Agent、Datadog-Agent,希望对所有常见监控对象提供监控数据采集能力,采用 All-in-one 的设计,不但支持指标采集,也希望支持日志和调用链路的数据采集。来自快猫研发团队,和 Open-Falcon、Nightingale 的研发是一拨人。categraf的代码托管在 github:https://github.com/flashcatcloud/categraf,如果想了解更详细的章节,可以访问Categraf[官方文档](https://flashcat.cloud/docs/content/flashcat-monitor/categraf/1-introduction/)

前面针对夜莺监控与采集器Categraf的介绍都是摘自Flashcat官方文档中的章节,仅以抛砖引玉,让大家可以对夜莺监控Categraf有更多的了解,同时,如果你现在正在稳定性建设、故障发现、故障定位等问题而烦恼,可以联系快猫星云(开源监控引领者,故障定位真帮手)

言归正传:今天讲解一下如何使用Categraf采集监控VSphere的指标数据,上报给夜莺监控V6,并在夜莺监控V6上配置VSphere监控仪表盘以及告警;

今天针对VSphere监控主要涉及到四个环节:

监控对象安装、配置:VSphere的安装与简单配置;

针对VSphere安装包,官方下载太慢了,可以在后台回复【VSphere7.0】获取ESXi和vCenter不百度云下载地址。

监控组件安装、配置:夜莺监控V6的安装与配置

这里仅以V6做讲解,不对V5安装、配置做说明;

采集组件安装、配置:Categraf采集与VSphere大盘配置;

安装Categraf采集器,使用采集插件inputs.vsphere采集vcenter指标数据,上报夜莺监控;

夜莺监控WEB页面配置:在WEB页面配置监控数据源并导入VSphere大盘、配置告警;

在夜莺监控的仪表盘配置数据源、使用导入功能,展示当前采集VSphere监控数,配置告警、触发告警;

VSphere安装、配置

服务器配置:

主板 : 华南X99-CH8

CPU : E5 2680V3

内存 : 镁光32G DDR4x4pc4 * 6

硬盘 : SSD 480G & SSD 1T

网卡 : 博通BCM5720

安装ESXi

安装之前,确认下你的网卡是否支持VMware,如果是螃蟹网卡,需要单独加网卡,否则会卡在网卡no found的界面,我的就是单独买的BCM5720解决的这个问题,如下图:

adapters-no-found
adapters-no-found

在后台获取到下载地址,下载好7.0ESXi安装文件烧录到U盘,烧录过程自行Google吧!

烧录完成后,进入BIOS修改为U盘启动,会得到如下界面:

esxi-01
esxi-01
esxi-02
esxi-02
esxi-03
esxi-03
esxi-04
esxi-04
esxi-05
esxi-05
esxi-06
esxi-06
esxi-07
esxi-07
esxi-08
esxi-08
esxi-09
esxi-09
esxi-10
esxi-10
esxi-11
esxi-11
esxi-12
esxi-12
esxi-13
esxi-13

至此ESXi安装完成,关于如何设置使用域名与替换SSL证书以及如何安装操作系统,这里就不叙述了,自行Google吧!

安装vCenter

vCenter安装就比较简单了,因为支持使用安装包导入镜像,很方便,可以提前把安装VCSA的ISO上传到ESXi上;

在ESXi安装一个WIN10,把VCSA安装包上传到数据存储的目录里,如下图:

vcenter-01
vcenter-01

然后再WIN10里面安装vCenter,如下图;

vcenter-02
vcenter-02
vcenter-03
vcenter-03
vcenter-04
vcenter-04
vcenter-05
vcenter-05
vcenter-06
vcenter-06
vcenter-07
vcenter-07
vcenter-08
vcenter-08
vcenter-09
vcenter-09
vcenter-10
vcenter-10
vcenter-11
vcenter-11
vcenter-12
vcenter-12

至此,vCenter安装完成里,使用administrator@vcenter.unixsre.com用户密码跟密码登录,导入ESXi的主机很简单,这里就不叙述了。

vcenter-13
vcenter-13
vcenter-14
vcenter-14
vcenter-15
vcenter-15

夜莺监控安装、配置Prometheus、VictoriaMetrics数据源、ES数据源

操作系统使用的是Ubuntu18.04,CentOS7.9也一样,因为只是为了测试,所以使用docker-compose启动的,使用nginx反向代理,如果是生产环境还是建议使用二进制部署,如果你对docker-compose够熟悉,可以忽略。

下载源码,可能会出现访问不了GitHub或者Dockerhub的情况,可以提前下载好,上传到服务器上。

代码语言:shell
复制
# 安装一些工具与docker

apt install  -y vim net-tools vim wget telnet docker-ce docker-compose nginx

cd /opt

wget https://download.flashcat.cloud/n9e-v6.0.0-ga.9.2-linux-amd64.tar.gz

mkdir /opt/nightingale

tar xf n9e-v6.0.0-ga.9.2-linux-amd64.tar.gz -C /opt/nightingale

cd /opt/nightingale/docker

docker-compose up -d 

/opt/nightingale/docker# docker-compose up -d

[+] Building 0.0s (0/0)                                                                                                                          

[+] Running 6/6

 ? Container prometheus  Started                           0.9s 

 ? Container mysql       Started                           0.9s 

 ? Container redis       Started                           0.9s 

 ? Container ibex        Started                           1.1s 

 ? Container n9e         Started                           1.2s 

 ? Container categraf    Started                           1.2s 

# 启动完成可以查看一下启动的容器信息

/opt/nightingale/docker# docker-compose  ps

NAME                IMAGE                              COMMAND                  SERVICE             CREATED              STATUS              PORTS

categraf            flashcatcloud/categraf:latest      "/entrypoint.sh"         categraf            About a minute ago   Up About a minute   

ibex                ulric2019/ibex:0.3                 "sh -c '/wait && /ap…"   ibex                About a minute ago   Up About a minute   

mysql               mysql:5.7                          "docker-entrypoint.s…"   mysql               About a minute ago   Up About a minute   

n9e                 flashcatcloud/nightingale:latest   "sh -c '/wait && /ap…"   n9e                 About a minute ago   Up About a minute   

prometheus          prom/prometheus                    "/bin/prometheus --c…"   prometheus          About a minute ago   Up About a minute   

redis               redis:6.2                          "docker-entrypoint.s…"   redis               3 days ago           Up About a minute



# categraf 采集器,默认不开启端口

# ibex 自愈服务端组件

# n9e 夜莺监控组件(v6已经把webapi与server整合到一起了,更为便捷与方便维护了)

# prometheus Prometheus时序数据库,存储指标;

# redis 存储JWT等信息

下面进行使用NGINX反向代理夜莺监控,SSL证书可以去申请一年的免费证书即可,然后上传到/etc/nginx/ssl_certs下面;

代码语言:shell
复制
ll /etc/nginx/ssl\_certs

-rw-r--r-- 1 root root 1675 Jun  11 17:16 n9e.unixsre.com.key

-rw-r--r-- 1 root root 3801 Jun  11 17:17 n9e.unixsre.com.pem

cat /etc/nginx/sites-available/n9e.unixsre.com

upstream N9E\_Node {

    # n9e app upstream

    server 127.0.0.1:17000;

    keepalive 64;

}

server {

    listen 80;

    server\_name n9e.unixsre.com;

    rewrite ^(.\*)$ https://${server\_name}$1 permanent; 

}



server {

        listen 443;

        server\_name n9e.unixsre.com;

        ssl on;

        ssl\_certificate   /etc/nginx/ssl\_certs/n9e.unixsre.com.pem;

        ssl\_certificate\_key  /etc/nginx/ssl\_certs/n9e.unixsre.com.key;

        ssl\_session\_timeout 5m;

        ssl\_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

        ssl\_protocols TLSv1 TLSv1.1 TLSv1.2;

        ssl\_prefer\_server\_ciphers on;



        location / {

                # First attempt to serve request as file, then

                # as directory, then fall back to displaying a 404.

                # try\_files $uri $uri/ =404;

                proxy\_pass http://N9E\_Node/;

        }

}

至此,夜莺监控安装完成了,这里仅做测试,如果你是生产的话,根据自己的实际情况进行架构设计,比如采用流行的时序库VictoriaMetrics,进行集群部署,下面是逻辑架构图:

架构图
架构图

现在登录夜莺WEB页面:https://n9e.unixsre.com进行配置数据源,账号密码:root/root.2020,密码自行修改,切记!!!

n9e-001
n9e-001

数据源页面

n9e-002
n9e-002

Prometheus数据源配置

n9e-003
n9e-003

VictoriaMetrics数据源配置

n9e-004
n9e-004

ES数据源配置

n9e-005
n9e-005
n9e-006
n9e-006

至此,夜莺监控的V6到此就安装完成了,这里面有很多新功能,请浏览官方V6文档:https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v6/arch/了解详情;

Categraf采集器安装、配置采集VSphere指标

Categraf的配置相对简单,没那么复杂,就config.toml跟inputs.vsphere插件的配置,主配置文件参数:https://flashcat.cloud/docs/content/flashcat-monitor/categraf/3-configuration/

代码语言:shell
复制
cd /opt

wget https://download.flashcat.cloud/categraf-v0.3.12-linux-amd64.tar.gz

tar xf categraf-v0.3.12-linux-amd64.tar.gz

mv categraf-v0.3.12-linux-amd64 categraf

cd categraf/

cat conf/config.toml

# 因为测试环境,这里主要调整的就3个参数,

1. 上报的指标label为主机名

2. 写入地址为n9e地址,默认端口为17000;

3. 心跳配置默认也是开启的,这会控制基础设施中的上报实例的心跳时间、资源监控

[global]

hostname = "$hostname"

[[writers]]

url = "http://127.0.0.1:17000/prometheus/v1/write"

[heartbeat]

enable = true

url = "http://127.0.0.1:17000/v1/n9e/heartbeat"

下面的配置插件vsphere的配置,categraf已经集成好了,直接可以监控当前的ESXi主机已经vm资源的CPU、内存、负载、磁盘,只需要改如下5个参数就完成监控配置了:

  1. vcenter = https://vcenter.unixsre.com/sdk
  2. username = administrator
  3. password = 1234456780@.123#
  4. use_tls = true
  5. insecure_skip_verify = true
  6. 添加实例标签、集群标签上报给夜莺,仪表会使用到集群的这个label;

其他的可以保持默认就可以。

代码语言:shell
复制
cat /opt/categraf/conf/input.vsphere/vsphere.toml

[[instances]]

  labels = { instance="192.168.11.111", clustername="Datacenter" }

  ##  vCenter URLs to be monitored. These three lines must be uncommented

  ## and edited for the plugin to work.

  vcenter = "https://vcenter.unixsre.com/sdk"

  username = "administrator@vcenter.unixsre.com"

  password = "1234456780@.123#"

...

  use\_tls = true

  # tls\_ca = "/path/to/cafile"

  # tls\_cert = "/path/to/certfile"

  # tls\_key = "/path/to/keyfile"

  ## Use SSL but skip chain & host verification

  insecure\_skip\_verify = true

...

# 启动categraf

cp /opt/categraf/conf/categraf.service /lib/systemd/system/categraf.service

systemctl enable categraf.service

systemctl start categraf.service

6:10:55 vm-177 categraf[28170]: 2023/06/12 16:10:55 metrics\_agent.go:273: I! input: local.self\_metrics started

Jun 12 16:10:55 vm-177 categraf[28170]: 2023/06/12 16:10:55 metrics\_agent.go:273: I! input: local.sockstat started

Jun 12 16:10:55 vm-177 categraf[28170]: 2023/06/12 16:10:55 metrics\_agent.go:273: I! input: local.system started

Jun 12 16:10:55 vm-177 categraf[28170]: 2023/06/12 16:10:55 client.go:268: W! Option query for maxQueryMetrics failed. Using default

Jun 12 16:10:55 vm-177 categraf[28170]: 2023/06/12 16:10:55 client.go:278: I! vCenter version is:  7.0.3

Jun 12 16:10:55 vm-177 categraf[28170]: 2023/06/12 16:10:55 endpoint.go:321: D! Running initial discovery

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 finder.go:78: I! Find(Datacenter, /\*) returned 1 objects

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 finder.go:78: I! Find(ClusterComputeResource, /\*/host/\*\*) returned 0 objects

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 finder.go:78: I! Find(ResourcePool, /\*/host/\*\*) returned 1 objects

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 finder.go:78: I! Find(HostSystem, /\*/host/\*\*) returned 1 objects

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 finder.go:78: I! Find(VirtualMachine, /\*/vm/\*\*) returned 6 objects

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 finder.go:78: I! Find(ResourcePool, /\*/host/\*\*) returned 1 objects

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 finder.go:78: I! Find(Datastore, /\*/datastore/\*\*) returned 2 objects

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 metrics\_agent.go:273: I! input: local.vsphere started

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 agent.go:47: I! [\*agent.MetricsAgent] started

Jun 12 16:10:56 vm-177 categraf[28170]: 2023/06/12 16:10:56 agent.go:50: I! agent started

# 如果启动有报错问题可以使用如下命令进行排查,查看上报指标是否正常。

/opt/categraf/categraf --test --debug --inputs vsphere

登录夜莺监控查看上报指标:

vsphere-1
vsphere-1
vsphere-2
vsphere-2

查看基础设施中的心跳上报与性能监控:

到这里就安装完成了,vpshere参数可以参考categraf仓库:vsphere.toml

夜莺监控配置数据源与导入大盘

大盘地址:vsphere.json

在页面创建业务组跟用户组,复制JSON内容导入大盘:

import-dashboard-1
import-dashboard-1
import-dashboard-2
import-dashboard-2
import-dashboard-3
import-dashboard-3
import-dashboard-4
import-dashboard-4
import-dashboard-5
import-dashboard-5
import-dashboard-6
import-dashboard-6

告警配置可以在大盘里根据自己的需求,选取指标进行配置,我这里盘使用率来做例子,其他也一样的配置;

alert-1
alert-1

复制出来以后,删除变量,在时序指标里面查询一下,确保可以查询到数据;

代码语言:sql
复制
sum(vsphere\_datastore\_disk\_used\_latest{vcenter=~".+"}/vsphere\_datastore\_disk\_capacity\_latest{vcenter=~".+"}) by(source)\*100 > 40
alert-2
alert-2

在告警规则里面添加一个磁盘使用率大于70%的告警;

alert-3
alert-3

可以先用磁盘使用率大于40%测试一下,在活跃告警里查看到告警信息。

alert-4
alert-4
alert-5
alert-5

对于VMware VSphere更多告警规则,请查看夜莺监控的Github

结束语

到此,夜莺监控基于categraf采集VSphere监控到此就完结了,这个文章仅给小白指路,大佬可以忽略,后续针对夜莺监控v6的告警自愈这块出一个抛砖引玉的文章~

更多的夜莺监控动态信息,请关注官方网站

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nightingale简介
  • Categraf简介
  • 言归正传:今天讲解一下如何使用Categraf采集监控VSphere的指标数据,上报给夜莺监控V6,并在夜莺监控V6上配置VSphere监控仪表盘以及告警;
  • VSphere安装、配置
    • 服务器配置:
      • 安装ESXi
        • 安装vCenter
        • 夜莺监控安装、配置Prometheus、VictoriaMetrics数据源、ES数据源
        • Categraf采集器安装、配置采集VSphere指标
        • 夜莺监控配置数据源与导入大盘
        • 结束语
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com