尝试使用 Prometheus 对 vCenter 环境进行可视化(vCenter exporter)
Prometheus 是一个开源的基于指标的监控工具。
尤其在 Web 领域,商业用户也在增加,甚至在 RedHat Openshift 中也被使用,感觉很有希望。尽管 Prometheus 可以可视化各种环境,但是由于无法搜索到关于 VMware 环境可视化的日文信息,所以这里提供了一个备忘录来可视化 vCenter 环境。
Prometheus是什么
这个项目最初是由CNCF(云原生计算基金会)托管的,但在2018年8月,它成为了继k8s之后进入Graduation Stage的一个项目。
Graduation通常是指在社区规模、代码贡献活跃度以及项目组织能力等方面达到一定成熟度被认可的阶段。换句话说,CNCF认定该项目已经成长为适合开发云原生应用程序的企业中的最佳开源监控工具之一。
有一本名为《入门Prometheus》的书,这本书非常有参考价值,但是在这本书的编辑监修的須田先生的幻灯片中也介绍了大概的概述。
我个人认为有趣的项目如下列所示,但我感觉它们共同特点是以度量为核心进行监控,以更简单、更可扩展的理念进行构建。正如俗话所说,餅是餅屋。
-
- モニタリングツールには、ログ、トレース、プロファイリング、メトリクスという4つのカテゴリーができるが、システムレベルの状況確認にはメトリクスの確認が必要になるとして、メトリクスにフォーカスしている。メトリクスによりシステムのパフォーマンスがわかる。
プロファイルングとは、たとえばtcpdumpのような限られた時間で一部のコンテキストを残すという考えかた。
トレーシングとは、イベントの一部だけを見るというサンプリングによって影響を確認。
ロギングとは、イベントひとつひとつのコンテキストの一部を記録する。例えばデバッグログがあり、システムとしてはELKスタックなど。
メトリクスとは、コンテキストを無視し、様々なタイプのイベントの集計を時系列で管理する。コンテキストの情報を排除することで、必要なデータ量と処理が合理的になる。
パフォーマンスが高く、容易に実行可能。1秒に何百万ものサンプルを取り込むことができる。
データモデルと高度なクエリ(PromQL)に対応し、ラベルに基づく集計をサポート。
クラウドネイティブ環境のような対象が消えたり増えたりする環境では、静的な設定で対応することはむずかしいが、サービスディスカバリによりモニター対象を柔軟に見つけ、対応することができる。
プルベースのシステムとなり、設定に基づいていつ何を監視するのかをきめる。
データをローカルのカスタムデータベースに格納する。分散システムは信頼性を確保するのがむずかしいため、クラスタリングは行わない。結果、信頼性が上がり、実行が簡単になっている。 また、クラスタリングを使わないことで、コストも安価となる(1/5)
長期記憶ストレージは、リモート書き出し/書き込みのAPIがあるため、他のシステムにその役割を担わせる。
Alertmanagerによりアラートを通知することができる。アラートの嵐にならないように関連するアラートをグルーピングしてまとめたり、チームごとに通知出力を設定したりできる。
各データセンタにひとつのPrometheusを配置することで信頼性の高い単純なシステムをつくることがえきるが、例えばグローバルレイテンシのような場合は、各データセンターのprometheusで集計されたメトリクスをプルするグローバルPrometheusを置くこともできる。
運用のモニタリング用に設計されているため、100%正確というよりも利用できることが重要としている。よって、例えばスクレイプが過負荷で失敗したときに、負荷が下がったとしてデータを再度取り戻すというと再び過負荷になるため、そのようなことは行わない。
ダッシュボードはGrafanaを使うことが推奨。
出口商和VMware出口商是什么?
Prometheus不仅可以获取云原生指标,如k8s和Amazon EKS,还可以获取各种监控数据。
以Prometheus的架构来看,Prometheus服务器采用Pull型架构,即通过访问监视目标并收集数据。作为数据收集的目标,我们将使用一个称为exporter的工具,并为每个监视目标准备一个相应的exporter。
出口商的种类有官方开发参与的Prometheus项目的官方导出器,也有第三方开发的导出器。可以从Prometheus的文档中确认,这些导出器可以收集各种指标,例如硬件,如IPMI导出器,数据库,如Memcached,还可以使用HAProxy导出器和SNMP导出器来收集网络设备(如路由器和交换机)的指标等等。此外,您还可以开发自己的导出器。
然而,目前无法在此列表中确认VMware的ESXi和vCenter相关的出口商。稍作调查后,根据网站上的一些评论,可以发现vCenter的出口商都没有得到维护,有人还推荐使用Telegraf。虽然我不知道VMware的观点是什么,但如果要使用Prometheus进行异构环境的可视化或简单的指标管理,也可能希望将vCenter作为可视化的目标。如果您知道有官方的出口商或VMware公司的观点,请告诉我,将不胜感激。
这次尝试使用了在GitHub上找到的vmware_exporter。
这是一个基于Python的项目,是从https://github.com/rverchere/vmware_exporter进行了修改的版本。原始的vmware_exporter已经不再维护,现在由Pryor先生负责维护。
根据vCenter,它使用pyVmomi来获取vSphere API的信息。
由于上载到GitHub,可能还有其他的导出工具,我还不知道哪个导出工具是最适合的,但是暂时可以使用这个工具,可以从vCenter获得基本的虚拟机、主机、数据存储等的基本度量信息。
Prometheus的安装。
有几种方法可以安装Prometheus本身。
-
- OSのパッケージマネージャ経由でインストール
-
- Docker経由で実行
-
- Prometheusが公式にビルドして配布しているバイナリを利用
- 自分でソースコードからビルド
可以通过搜索自己查找Prometheus的安装方法,请参考相关资料。
例如:
官方指南的第一步
使用Prometheus+Grafana监控Kubernetes集群
Sakura的知识库:”Prometheus”入门教程
然而,由于Prometheus的GUI相对简单,强烈建议使用Grafana作为GUI。
在中国,这里也有很多关于这个问题的信息。
官方指南
使用Prometheus+Grafana监视Kubernetes集群。
概括来说
#wget https://dl.grafana.com/oss/release/grafana-7.2.0-1.x86_64.rpm
#yum install grafana-7.2.0-1.x86_64.rpm
#systemctl start grafana-server
#systemctl status grafana-server -l
通过这个启动,可以访问http://x.x.x.x:3000/login。
默认的用户名/密码是admin/admin。
安装 VMware 导出插件
在Python中,有两种安装方法和使用容器的方法。如果要使用容器,只需传递{VSPHERE_HOST},{VSPHERE_USERNAME}和{VSPHERE_PASSWORD}参数来启动容器。使用以下命令运行容器:docker run -it –rm -p 9272:9272 -e VSPHERE_USER=${VSPHERE_USERNAME} -e VSPHERE_PASSWORD=${VSPHERE_PASSWORD} -e VSPHERE_HOST=${VSPHERE_HOST} -e VSPHERE_IGNORE_SSL=True -e VSPHERE_SPECS_SIZE=2000 –name vmware_exporter pryorda/vmware_exporter
如果选择直接安装,需要确保pip可用,然后执行以下命令进行安装:$ pip install vmware_exporter
你可以在config.yml中设定要获取的目标,但在这里你可以限制每个主机获取的目标。
这次我们简单地没有做任何限制,只是为了从vCenter获取,我们在config.yml中写入了以下内容。
default:
vsphere_host: "x.x.x.x"
vsphere_user: "xxxx"
vsphere_password: "xxxx"
ignore_ssl: True
specs_size: 5000
fetch_custom_attributes: True
fetch_tags: True
fetch_alarms: True
collect_only:
vms: True
vmguests: True
datastores: True
hosts: True
snapshots: True
通过在命令行中输入以下指令,即可启动:
“`
$ vmware_exporter -c config.yml &
“`
在确认作为出口商可以进行可视化后,将其添加为Prometheus的监控目标,通过target参数添加出口商。
/usr/local/prometheus-server
- job_name: 'vcenter'
static_configs:
- targets: ['localhost:9272']
如果在Prometheus的GUI中查看”Status > Targets”,如果vcenter的exporter状态为”UP”,则表示它被监视作为目标。
只需提供一种选项来用中文将以下内容进行改写:
最后,您可以使用Prometheus或Grafana的图形用户界面(GUI)来查看指标。
您可以从http://x.x.x.x:9272/metrics获取到度量指标,并且概要在这里进行了说明。
我发现,使用Prometheus可以非常轻松地获取VMware ESX环境的指标。然后,您还可以利用常规的Prometheus功能来定义警报等。
请提供一个上下文提供参考。
Prometheus公式文件(英文)
书籍:入门Prometheus
使用Prometheus+Grafana监控Kubernetes集群
Github:vmware_exporter