Skip to main content

手动安装监控Agent

介绍如何在平台虚拟机中手动安装监控Agent,收集监控信息。

前提条件

虚拟机监控Agent采集的监控数据需要上报到平台的监控数据库中。在3.10之前,默认安装的监控数据库是influxdb,在3.10(含)开始,默认安装的监控数据库是victoria-metrics. 但无论influxdb还是victoria-metrics,监控agent都以相同的协议上报监控数据。

因此需要获取监控数据库(influxdb或victoria-metrics)的对外地址,并需要判断虚拟机是否可以直接连接到监控数据库。

  • 若虚拟机可以直接连接监控数据库,则直接安装监控Agent,配置telegraf采集的监控指标即可
  • 若虚拟机无法直接连接到监控数据库,需要配置SSH代理节点,建立虚拟机与监控数据库的连接后,再安装监控Agent,配置telegraf采集的监控指标。

获取监控数据库地址

# 3.10之前获取InfluxDB的对外地址及端口号,3.10(含)之后,获取victoria-metrics的对外地址及端口号
$ climc endpoint-list --service influxdb --interface public
+----------------------------------+-----------+----------------------------------+---------------------------+-----------+---------+
| ID | Region_ID | Service_ID | URL | Interface | Enabled |
+----------------------------------+-----------+----------------------------------+---------------------------+-----------+---------+
| 6b798cb7614149a48bd6d49e23d87b01 | region0 | 294631b8534b48d2896fe83b82081855 | https://192.168.0.2:30086 | public | true |
+----------------------------------+-----------+----------------------------------+---------------------------+-----------+---------+
*** Total: 1 Pages: 1 Limit: 20 Offset: 0 Page: 1 ***
$ climc endpoint-list --service victoria-metrics --interface public
+----------------------------------+-----------+----------------------------------+---------------------------+-----------+---------+
| ID | Region_ID | Service_ID | URL | Interface | Enabled |
+----------------------------------+-----------+----------------------------------+---------------------------+-----------+---------+
| 6b798cb7614149a48bd6d49e23d87b01 | region0 | 294631b8534b48d2896fe83b82081855 | https://192.168.0.2:30428 | public | true |
+----------------------------------+-----------+----------------------------------+---------------------------+-----------+---------+
*** Total: 1 Pages: 1 Limit: 20 Offset: 0 Page: 1 ***

配置SSH代理节点

  1. 查询虚拟机所在VPC或IP子网下是否存在SSH代理节点。
# 查询虚拟机所在VPC下是否存在SSH代理节点
$ climc proxy-endpoint-list --vpc-id <vpc的ID>
# 若VPC下IP子网之间网络隔离,则需要查询虚拟机所在IP子网下是否存在SSH代理节点
$ climc proxy-endpoint-list --network-id <IP子网的ID>
  1. 若虚拟机所在网络下存在SSH代理节点,则忽略新建SSH代理节点的步骤,直接在SSH代理节点下配置到监控数据库的remote规则,使监控数据可以上报到监控数据库。

新建SSH代理节点

若虚拟机所在网络无法直接与平台的监控数据库进行通信,则需要在虚拟机所在VPC或IP子网中选择一台Linux操作系统的虚拟机作为SSH代理节点。虚拟机需要满足以下配置要求

虚拟机配置要求

  • 目前只支持Linux操作系统的虚拟机作为SSH代理节点。
  • 请确保虚拟机处于运行中状态;
  • 请确保虚拟机支持通过平台免密登录;虚拟机能被平台免密登录,则要求虚拟机与平台网络通(即通过EIP、NAT网关或SSH代理等方式使虚拟机与平台网络通)以及虚拟机中存在平台的公钥文件。
  • 请检查虚拟机的sshd配置,GatewayPorts是clientspecified,若该项值为no,则只允许绑定127.0.0.1的地址,使remote forward无法正常使用,造成安装监控Agent的虚拟机无法向平台上报监控数据等。

操作步骤

  1. 在SSH代理节点页面#,单击列表上方 "新建" 按钮,进入新建SSH代理节点页面。
  2. 在选择虚拟机页面设置以下参数:
    • 域:设置SSH代理节点所属域,并通过域过滤可选的虚拟机。
    • 名称:设置SSH代理节点的名称。
    • 区域:通过平台、区域过滤VPC。
    • 网络:通过VPC、网络过滤虚拟机。
    • 虚拟机:通过上面的筛选条件过滤出符合条件的虚拟机,并支持在搜索框中通过名称和IP搜索虚拟机,,如没有合适的虚拟机,可以单击“新建”超链接,跳转到虚拟机列表页面创建符合需求的虚拟机。
  3. 选择好虚拟机后,单击 "下一步" 按钮,开始探测虚拟机的免密登录状态。
    • 如虚拟机可免密登录,可直接单击 "确定" 按钮,开始创建虚拟机。
    • 如虚拟机不可免密登录,请先点击列表操作列 "查看" 按钮,查看探测免密登录失败的具体原因。
      • 如报错原因中提示“none publickey”,可通过设置免密登录功能,将虚拟机设置为免密登录状态。设置免密登录方式配置参数如下:
        • 设置方式:支持密钥、密码、脚本等方式将平台的公钥上传到虚拟机上。
        • 当设置方式为“密钥”时,请使用root用户或具有使用sudo免密权限的用户以其私钥,请确保可以通过用户名和私钥通过ssh连接到对应虚拟机,单击 "确定" 按钮,开始设置并探测虚拟机的免密登录状态是否变为免密登录。
        • 当设置方式为“密码”时,请使用root用户或具有使用sudo免密权限的用户以其密码,请确保可以通过用户名和密码通过ssh连接到对应虚拟机。单击 "确定" 按钮,开始设置并探测虚拟机的免密登录状态是否变为免密登录。
        • 当设置方式为“脚本”时,请请使用root或具有sudo权限的用户在虚拟机中执行以下脚本,执行完成后,单击 "确定" 按钮,开始设置并探测虚拟机的免密登录状态是否变为免密登录。
      • 如报错原因中提示“network error”,则需要返回上一步选择其他虚拟机,或为该虚拟机通过绑定EIP或NAT网关等方式,使其与平台网络可通。
  4. 只有当虚拟机免密登录状态为“可免密登录”时,才支持单击 "确定" 按钮,开始创建SSH代理节点。
  5. 在创建SSH代理节点时将会检查虚拟机的sshd配置是否符合虚拟机配置要求,若不符合将会尝试变更虚拟机的sshd配置,因此可能会造成创建ssh代理节点时间过长,若提示超时,请重新单击 "确定" 按钮,创建SSH代理节点。

配置Remote规则

后续在配置telegraf文件时,需要配置的监控数据库的地址为“ssh代理节点的地址:<映射绑定的端口号>”

# 在ssh代理节点上配置到监控数据库的remote规则,使监控数据可以上报到平台的监控数据库。
$ climc proxy-forward-create --proxy-endpoint-id <ssh代理节点的ID> --type remote --remote-addr <influxdb/victoria-metrics的IP地址> --remote-port <influxdb/victoria-metrics的端口号> --bind-port-req <映射绑定的端口号> <remote规则的名称>
# 下面举例介绍如何创建对应的remote规则,即将10.127.100.2:30086地址映射为10.0.9.254:30086,后续telegraf配置中的监控数据库地址“https://10.0.9.254:30086”
$ climc proxy-forward-create --proxy-endpoint-id dba57f12-4f9f-4d60-8789-7dc0fe4efc6a --type remote --remote-addr 10.127.100.2 --remote-port 30086 --bind-port-req 30086 remote-influxdb
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| bind_addr | 10.0.9.254 |
| bind_port | 30086 |
| bind_port_req | 0 |
| can_delete | true |
| can_update | true |
| created_at | 2021-12-09T06:30:32.000000Z |
| deleted | false |
| domain_id | default |
| freezed | false |
| id | 3268655c-b816-4e4c-8250-88c67773ecff |
| is_emulated | false |
| is_system | false |
| last_seen_timeout | 117 |
| name | remote-influxdb |
| pending_deleted | false |
| project_src | local |
| proxy_agent | proxyagent0 |
| proxy_agent_id | 330e097e-59e4-4c65-8414-05d6d945e1c0 |
| proxy_endpoint | helanzhu |
| proxy_endpoint_id | dba57f12-4f9f-4d60-8789-7dc0fe4efc6a |
| remote_addr | 10.127.100.2 |
| remote_port | 30086 |
| status | init |
| tenant_id | 55bb511b62bf47dc86e82c731005ba10 |
| type | remote |
| update_version | 0 |
| updated_at | 2021-12-09T06:30:32.000000Z |
+-------------------+--------------------------------------+

安装监控Agent

监控Agent安装包:下载路径

不同操作系统的安装包名称不同,请根据具体系统下载对应的Agent安装包。

OSArchPackage Name
RedHatx86_64telegraf-1.19.2-yn~fe11a96b-0.x86_64.rpm
RedHatarm64telegraf-1.19.2-yn~fe11a96b-0.aarch64.rpm
Debianx86_64telegraf_1.19.2-yn~fe11a96b-0_amd64.deb
Debianarm64telegraf_1.19.2-yn~fe11a96b-0_arm64.deb
Windowsx86_64telegraf-1.19.2-yn~3bc1d95c_windows_amd64.zip
WindowsX86telegraf-1.19.2-yn~3bc1d95c_windows_i386.zip

下载监控Agent安装包

下面用 $Package 代表具体安装包名称,请在使用时进行替换。

Linux

# 将安装包下载到/tmp目录
$ wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/$Package -P /tmp

Windows

手动下载/$Package并解压到指定目录,比如C:\\telegraf

准备配置文件

准备监控Agent的配置文件

Linux

# 在tmp目录下新建telegraf配置文件
$ touch /tmp/telegraf.conf

Windows

C:\\telegraf目录下新建telegraf.conf文件。

telegraf配置文件主要包括以下内容:

global_tags

global_tags里包含虚拟机的ID、名称、宿主机、域、项目、区域、可用区、平台等信息,请根据虚拟机的具体信息,修改global_tags里的内容,后续返回的监控信息中也将会带上这些标签,因此在监控查询中可以通过一些条件查询虚拟机的监控信息。

[global_tags]
zone_ext_id = ""
os_type = "Linux"
scaling_group_id = ""
host_id = "3bce9607-2597-469f-8d9b-977345456739"
vm_id = "5b966ffa-1b4a-4648-8c6a-7617bb7bb76e"
zone_id = "3032cb4d-558a-4833-88e6-7b5bcabb47d1"
cloudregion = "Beijing"
domain_id = "default"
zone = "YunionHQ"
region_ext_id = ""
tenant = "system"
tenant_id = ""
brand = "OneCloud"
host = "office-03-host01"
vm_name = "test-agent"
status = "running"
cloudregion_id = "default"
project_domain = "Default"
agent配置信息

包括采集监控、虚拟机名称等相关配置,除虚拟机名称外,其他参数建议保持默认。

# Configuration for telegraf agent
[agent]
interval = "10s"
debug = false
hostname = "test-agent.test.io"
round_interval = true
flush_interval = "10s"
flush_jitter = "0s"
collection_jitter = "0s"
metric_batch_size = 1000
metric_buffer_limit = 10000
quiet = false
logfile = ""
omit_hostname = true
OUTPUTS

用于设置将监控数据传输到数据库地址,平台数据库的地址默认为“https://控制节点IP地址:30428”,具体平台监控数据库地址请参考上文。

  • 如果虚拟机可以直接连接到平台,urls地址可以直接设置为数据的访问地址;
  • 如果虚拟机不可以直接连接到平台,则需要通过代理的方式,该urls地址为代理地址,即为: "http://<ssh代理节点的地址>:<remote规则的映射端口号>"。
#################################################################
# OUTPUTS #
##################################################################

[[outputs.influxdb]]
urls = ["https://192.168.12.251:30428"]
database = "telegraf"
insecure_skip_verify = true
INPUTS

主要用于设置采集的监控指标,建议保持默认。

  ##################################################################
# INPUTS #
##################################################################

[[inputs.cpu]]
name_prefix = "agent_"
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = true
[[inputs.disk]]
name_prefix = "agent_"
ignore_fs = ["tmpfs", "devtmpfs", "overlay", "squashfs", "iso9660"]
[[inputs.diskio]]
name_prefix = "agent_"
skip_serial_number = false
[[inputs.kernel]]
name_prefix = "agent_"
[[inputs.kernel_vmstat]]
name_prefix = "agent_"
[[inputs.mem]]
name_prefix = "agent_"
[[inputs.processes]]
name_prefix = "agent_"
[[inputs.swap]]
name_prefix = "agent_"
[[inputs.system]]
name_prefix = "agent_"
[[inputs.net]]
name_prefix = "agent_"
[[inputs.netstat]]
name_prefix = "agent_"
[[inputs.nstat]]
name_prefix = "agent_"
[[inputs.ntpq]]
name_prefix = "agent_"
dns_lookup = false
[[inputs.internal]]
name_prefix = "agent_"
collect_memstats = false
telegraf配置文件举例

以下为完整的telegraf举例文件,用户可参考进行配置

### MANAGED BY ansible-telegraf ANSIBLE ROLE ###

[global_tags]
zone_ext_id = ""
os_type = "windows"
scaling_group_id = ""
host_id = "3bce9607-2597-469f-8d9b-977345456739"
vm_id = "5b966ffa-1b4a-4648-8c6a-7617bb7bb76e"
zone_id = "3032cb4d-558a-4833-88e6-7b5bcabb47d1"
cloudregion = "Beijing"
domain_id = "default"
zone = "YunionHQ"
region_ext_id = ""
tenant = "system"
tenant_id = ""
brand = "OneCloud"
host = "office-03-host01"
vm_name = "test-agent"
status = "running"
cloudregion_id = "default"
project_domain = "Default"


# Configuration for telegraf agent
[agent]
interval = "10s"
debug = false
hostname = "test-agent.test.io"
round_interval = true
flush_interval = "10s"
flush_jitter = "0s"
collection_jitter = "0s"
metric_batch_size = 1000
metric_buffer_limit = 10000
quiet = false
logfile = ""
omit_hostname = true

##################################################################
# OUTPUTS #
##################################################################
# 本例中是通过SSH代理的方式将监控数据转发到监控数据库。
[[outputs.influxdb]]
urls = ["https://192.168.12.251:50041"]
database = "telegraf"
insecure_skip_verify = true

##################################################################
# INPUTS #
##################################################################

[[inputs.cpu]]
name_prefix = "agent_"
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = true
[[inputs.disk]]
name_prefix = "agent_"
ignore_fs = ["tmpfs", "devtmpfs", "overlay", "squashfs", "iso9660"]
[[inputs.diskio]]
name_prefix = "agent_"
skip_serial_number = false
[[inputs.kernel]]
name_prefix = "agent_"
[[inputs.kernel_vmstat]]
name_prefix = "agent_"
[[inputs.mem]]
name_prefix = "agent_"
[[inputs.processes]]
name_prefix = "agent_"
[[inputs.swap]]
name_prefix = "agent_"
[[inputs.system]]
name_prefix = "agent_"
[[inputs.net]]
name_prefix = "agent_"
[[inputs.netstat]]
name_prefix = "agent_"
[[inputs.nstat]]
name_prefix = "agent_"
[[inputs.ntpq]]
name_prefix = "agent_"
dns_lookup = false
[[inputs.internal]]
name_prefix = "agent_"
collect_memstats = false


##################################################################
# PROCESSORS #
##################################################################

手动安装监控Agent

RedHat/CentOS

# 安装
rpm -ivh /tmp/$Package
# 更换配置文件
mv /tmp/telegraf.conf /etc/telegraf/telegraf.conf

Debian/Ubuntu

# 安装
dpkg -i /tmp/$Package
# 更换配置文件
mv /tmp/telegraf.conf /etc/telegraf/telegraf.conf

Windows

安装Windows版本监控Agent时需要指定上面步骤的telegraf配置文件,例如C:\\telegraf\telegraf.conf

C:\\telegraf\telegraf.exe --config "C:\\telegraf\telegraf.conf" --service install

启动telegraf服务

Linux

# 启动服务
systemctl start telegraf
# 查看服务
systemctl status telegraf

Windows

# 启动服务
sc start telegraf
# 查看服务
sc query telegraf