在IBM云上使用Sysdig监视Windows服务器

使用IBM Cloud Monitoring with Sysdig,可以监视Windows服务器。

———–2023年8月追記ここから———–
有关从Windows服务器到IBM云监控(Sysdig)的协作方式已更新。请查看以下Docs中的信息。
https://cloud.ibm.com/docs/monitoring?topic=monitoring-windows

暂且保留这篇文章,不删掉它。 2023年8月附注截止。

手順在下面的文档中。
———–2021年3月补充开始———–
截至2021年3月,下面文档中的步骤是基于wmi_exporter-0.12.0-386.exe编写的。在此之后的版本中,名称更改为windows_exporter,并且exporter的规格发生了变化,所以如果按照下面文档中的步骤进行操作将无法正常工作,请使用wmi_exporter-0.12.0-386.exe。
———–2021年3月补充结束———–
https://cloud.ibm.com/docs/Monitoring-with-Sysdig?topic=Sysdig-windows&locale=en

我们将使用在Windows上运行的Prometheus WMI exporter收集的数据来进行Sysdig的收集和监视。

虽然初期设置的步骤大致如上所述,但我们将实际尝试一下。

下载WMI exporter并运行。

在监视的Windows服务器上运行WMI exporter。
截至2020年5月22日,文档中提供了”cpu,cs,logical_disk,net”作为选项,但是使用这些选项会导致在后续运行Prometheus时出现错误。经过与Case确认,最好指定选项”os,cpu,logical_disk,net,system”。(已请求修正文档)
在实际使用时最好在后台运行。

> .\wmi_exporter-0.11.1-amd64.exe --collectors.enabled "os,cpu,logical_disk,net,system"
time="2020-05-18T03:37:27-05:00" level=info msg="Enabled collectors: os, cpu, logical_disk, net, system" source="exporter.go:327"
time="2020-05-18T03:37:27-05:00" level=info msg="Starting WMI exporter (version=0.11.1, branch=master, revision=7890c9ce9193c258c7cfe0df3aa3ecf1830aa0bc)" source="exporter.go:351"
time="2020-05-18T03:37:27-05:00" level=info msg="Build context (go=go1.13.3, user=appvyr-win\\appveyor@APPVYR-WIN, date=20200419-19:54:05)" source="exporter.go:352"
time="2020-05-18T03:37:27-05:00" level=info msg="Starting server on :9182" source="exporter.go:355"

普罗米修斯执行

因为想要在Windows直接与Sysdig进行集成,所以在第三步中,我们将使用Option2。请参考https://cloud.ibm.com/docs/Monitoring-with-Sysdig?topic=Sysdig-windows&locale=en#windows_step3_2

我們按照文檔將Sysdig的Ingest URL和標籤等信息添加到設定文件prometheus.yml中,結果如下。請在指定的bearer_token_file位置放置一個文件,其中包含Sysdig Monitor API Token。您可以在Sysdig管理界面的設置(Settings)中找到Sysdig Monitor API Token。

image.png
image.png
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  - job_name: 'wmi_exporter'

    static_configs:
    - targets: ['localhost:9182']

      labels:
        job: "app"
        region: "jp-tok"
        instance: "tamavsi01win"

remote_write:
    - url: "https://ingest.private.jp-tok.monitoring.cloud.ibm.com/api/prometheus/write"

      bearer_token_file: C:\Users\Administrator\prom\sysdig-api

      write_relabel_configs:
       - source_labels: ["__name__"]
         regex: "^wmi_(.*)"
         action: keep

       - regex: "(__name__)|(job)|(region)|(instance)|(status)|(core)|(name)|(start_mode)|(nic)|(volume)|(state)|(version)|(mode)|(branch)|(timezone)|(goversion)|(collector)|(revision)"
         action: labelkeep

运行Prometheus.exe。在实际使用时,最好在后台运行。

>.\prometheus.exe
level=info ts=2020-05-19T07:11:41.844Z caller=main.go:302 msg="No time or size retention was set so using the default time retention" duration=15d
level=info ts=2020-05-19T07:11:41.845Z caller=main.go:337 msg="Starting Prometheus" version="(version=2.18.1, branch=HEAD, revision=ecee9c8abfd118f139014cb1b174b08db3f342cf)"
level=info ts=2020-05-19T07:11:41.847Z caller=main.go:338 build_context="(go=go1.14.2, user=root@2117a9e64a7e, date=20200507-17:09:24)"
level=info ts=2020-05-19T07:11:41.847Z caller=main.go:339 host_details=(windows)
level=info ts=2020-05-19T07:11:41.848Z caller=main.go:340 fd_limits=N/A
level=info ts=2020-05-19T07:11:41.848Z caller=main.go:341 vm_limits=N/A
level=info ts=2020-05-19T07:11:41.869Z caller=main.go:678 msg="Starting TSDB ..."
level=info ts=2020-05-19T07:11:41.869Z caller=web.go:523 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2020-05-19T07:11:41.871Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589331413098 maxt=1589342400000 ulid=01E87FN8TK80KC178GZYEM40R0
level=info ts=2020-05-19T07:11:41.872Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589371200000 maxt=1589414400000 ulid=01E88RVK7B946WH8EX639P1BWV
level=info ts=2020-05-19T07:11:41.873Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589414400000 maxt=1589479200000 ulid=01E8AFSD9QBDQYAJ3CFR22KE3W
level=info ts=2020-05-19T07:11:41.873Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589479200000 maxt=1589544000000 ulid=01E8CDJY13S2FY3SFHY8GK300X
level=info ts=2020-05-19T07:11:41.874Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589544000000 maxt=1589608800000 ulid=01E8EBCEP65GAH80TRPV1R1S97
level=info ts=2020-05-19T07:11:41.875Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589608800000 maxt=1589673600000 ulid=01E8G95ZED8G50TBEEM3G1VP65
level=info ts=2020-05-19T07:11:41.875Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589673600000 maxt=1589738400000 ulid=01E8J6ZG4FZHSZ7YFTFW6TMXDG
level=info ts=2020-05-19T07:11:41.876Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589738400000 maxt=1589803200000 ulid=01E8M4S3P8RVGVQ9YF9ZCSHES0
level=info ts=2020-05-19T07:11:41.877Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589803200000 maxt=1589824800000 ulid=01E8MSC9ADVW35ATKSFPFRAVH9
level=info ts=2020-05-19T07:11:41.877Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589846400000 maxt=1589853600000 ulid=01E8NDZEFMFWH3HM2ZM9FZ18Q2
level=info ts=2020-05-19T07:11:41.878Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589824800000 maxt=1589846400000 ulid=01E8NDZJ07QBEVG28NJQCP0BCG
level=info ts=2020-05-19T07:11:41.879Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589853600000 maxt=1589860800000 ulid=01E8NMV5K6BV3Y62VP33KFNGWD
level=info ts=2020-05-19T07:11:41.879Z caller=repair.go:59 component=tsdb msg="Found healthy block" mint=1589860800000 maxt=1589868000000 ulid=01E8NVPWVCPEXVF6XCFT9DX055
level=info ts=2020-05-19T07:11:42.408Z caller=head.go:575 component=tsdb msg="Replaying WAL, this may take awhile"
level=info ts=2020-05-19T07:11:42.411Z caller=head.go:600 component=tsdb msg="WAL checkpoint loaded"
level=info ts=2020-05-19T07:11:42.416Z caller=head.go:624 component=tsdb msg="WAL segment loaded" segment=186 maxSegment=189
level=info ts=2020-05-19T07:11:42.427Z caller=head.go:624 component=tsdb msg="WAL segment loaded" segment=187 maxSegment=189
level=info ts=2020-05-19T07:11:42.431Z caller=head.go:624 component=tsdb msg="WAL segment loaded" segment=188 maxSegment=189
level=info ts=2020-05-19T07:11:42.433Z caller=head.go:624 component=tsdb msg="WAL segment loaded" segment=189 maxSegment=189
level=info ts=2020-05-19T07:11:42.433Z caller=head.go:627 component=tsdb msg="WAL replay completed" duration=23.0552ms
level=info ts=2020-05-19T07:11:42.435Z caller=main.go:694 fs_type=unknown
level=info ts=2020-05-19T07:11:42.435Z caller=main.go:695 msg="TSDB started"
level=info ts=2020-05-19T07:11:42.435Z caller=main.go:799 msg="Loading configuration file" filename=prometheus.yml
ts=2020-05-19T07:11:42.439Z caller=dedupe.go:112 component=remote level=info remote_name=667ec6 url=https://ingest.private.jp-tok.monitoring.cloud.ibm.com/api/prometheus/write msg="Starting WAL watcher" queue=667ec6
ts=2020-05-19T07:11:42.441Z caller=dedupe.go:112 component=remote level=info remote_name=667ec6 url=https://ingest.private.jp-tok.monitoring.cloud.ibm.com/api/prometheus/write msg="Replaying WAL" queue=667ec6
level=info ts=2020-05-19T07:11:43.317Z caller=main.go:827 msg="Completed loading of configuration file" filename=prometheus.yml
level=info ts=2020-05-19T07:11:43.317Z caller=main.go:646 msg="Server is ready to receive web requests."
ts=2020-05-19T07:11:50.177Z caller=dedupe.go:112 component=remote level=info remote_name=667ec6 url=https://ingest.private.jp-tok.monitoring.cloud.ibm.com/api/prometheus/write msg="Done replaying WAL" duration=7.7359573s
ts=2020-05-19T07:11:50.264Z caller=dedupe.go:112 component=remote level=error remote_name=667ec6 url=https://ingest.private.jp-tok.monitoring.cloud.ibm.com/api/prometheus/write msg="non-recoverable error" count=100 err="server returned HTTP status 400 Bad Request: {\"validationMessages\":[\"Ignoring 1 data point: time series has invalid metric name wmi_exporter_build_info (1 time)\",\"Ignoring 1 data point: time series has invalid metric name wmi_exporter_collector_duration_seconds (5 times)\",\"Ignoring 1 data point: time"
ts=2020-05-19T07:11:52.444Z caller=dedupe.go:112 component=remote level=info remote_name=667ec6 url=https://ingest.private.jp-tok.monitoring.cloud.ibm.com/api/prometheus/write msg="Remote storage resharding" from=1 to=1000
ts=2020-05-19T07:12:02.444Z caller=dedupe.go:112 component=remote level=info remote_name=667ec6 url=https://ingest.private.jp-tok.monitoring.cloud.ibm.com/api/prometheus/write msg="Remote storage resharding" from=1000 to=1
image.png
image.png

复制默认仪表板

默认仪表盘是一种模板,不能直接进行定制或设置警报。因此,您需要在右上角的三点图标中选择“复制仪表盘”,然后复制默认仪表盘以创建您自己的仪表盘。

image.png

输入任意名称,然后点击复制并打开。

image.png

在外观上与默认仪表盘几乎相同,但右上方的菜单增加了一些选项,使得可以自行完成更多事务。

image.png
image.png

通知设置

第一次使用Sysdig时,您需要设置触发报警的监控阈值。

从左下角开始,选择”设置”。

image.png

在设置菜单中的通知频道中,您可以设置通知方式和通知接收方。我们选择了邮件通知。

image.png
image.png
image.png

监控存储使用率

存储使用率的监控可以在“可用磁盘”面板上进行设置。
首先,由于柱状图不易理解时间序列,我们将其切换为折线图显示。
点击图标上的笔,显示切换选项的弹出窗口。

image.png

选择折线图。

image.png
image.png

請點擊右下方的保存並確認。
現在可以跟蹤可用磁碟空間的時序。

image.png

从”创建警报”开始,进行监视设置。

image.png

如果闲置容量持续5分钟达到10GB以下的状态,将发出报警。配置如下:

image.png

请向下滚动,在”通知”(Notify)项目中,将先前定义的通知启用。

image.png

我在操作系统上实际减少了磁盘的可用空间,并等待一段时间后,该变化反映在图表上,并触发了10GB阈值以下的警报(也发送了电子邮件)。

image.png

在图表上方的有色点是触发报警的警报,当将光标悬停在上面时可以查看其内容。

image.png

在左侧的菜单栏中的“事件”选项中,您可以查看警报的时间顺序。您也可以在这里进行事件的确认。

image.png

增加可用空间并等待一段时间后,告警状态已解决。

image.png

监视可用内存

image.png

设定了一个条件:当物理内存的可用空间少于500MiB并持续了5分钟后,进行报告。

image.png

在操作系统中增加内存使用量,并等待一段时间后,图表中也反映出来并被通报。

image.png