之前使用collectd+influxdb+grafana监控虚拟的状态。设置influxdb直接监听collectd的端口收集collectd数据。
该方法需要设置collectd的types.db文件格式供influxdb使用。且需要将types.db文件传入influxdb容器内,influxdb的docker容器才能成功运行。
https://blog.csdn.net/dandanfengyun/article/details/113510416
https://blog.csdn.net/dandanfengyun/article/details/114540296
如果使用collected+telegraf+influxdb。telegraf容器内自带typed.db格式文件。可监听collectd的数据送达端口,将collectd的数据作为其中一个input 输入、由telegraf将数据写入到influxdb数据库,其中从collectd接收到的数据 表(measurement)前缀设置collectd_ 。
Telegraf是一个用Golang写的开源数据收集Agent,基于插件驱动。本身提供的输入和输出插件非常丰富,当然有需求也可以自行编写(需要重新编译)。Telegraf是influxdata公司的时间序列平台TICK技术栈中的“T”,主要用于收集时间序列型数据,比如服务器CPU指标、内存指标、各种IoT设备产生的数据等等。
数据指标(Metrics)
- 指标名(Measurement name):指标描述和命名。
- 标签集合(Tags):Key/Value键值对,可以类比为关系型数据库的键值,常用于快速索引和唯一标识。标签在设计的时候,尽量避免各种数值型,尽量使用有限集合。
- 字段集合(Fields):Key/Value键值对,包含指标描述的数据类型和值。
时间戳(Timestamp):此条指标数据的时间戳。
Telegraf有四种类型的插件
- 输入插件(Inputs):收集各种时间序列性指标,包含各种系统信息和应用信息的插件。
- 处理插件(Process):当收集到的指标数据流要进行一些简单处理时,比如给所有指标添加、删除、修改一个Tag。只是针对当前的指标数据进行。
- 聚合插件(Aggregate):聚合插件有别于处理插件,就在于它要处理的对象是某段时间流经该插件的所有数据(所以,每个聚合插件都有一个period设置,只会处理now()-period时间段内的数据),比如取最大值、最小值、平均值等操作。
- 输出插件(Outputs):收集到的数据,经过处理和聚合后,输出到数据存储系统,可以是各种地方,如:文件、InfluxDB、各种消息队列服务等等。
单个节点ALLinOne部署时基本设置
vim /etc/kolla/globals.yml
enable_collectd: "yes"
enable_grafana: "yes"
enable_influxdb: "yes"
enable_telegraf: "yes"
kolla-ansible deploy -i /etc/kolla/all-in-one
安装完成,查看是否运行
docker ps -a | grep -e collectd -e influxdb -e grafana -e telegraf
修改配置文件
创建自定义配置文件目录。
路径在globals.yml中由node_custom_config定义
mkdir /etc/kolla/config
一、collectd配置文件修改,使其监控libvirt收集虚拟机数据,并将数据发送到本机的25826端口。
舍弃了collectd对宿主机本身的监控(如CPU Memory Load Interface Disk等)。因为telegraf会有Inputs插件监控宿主机的状态,两个监控组件都监听宿主机感觉多余了。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/
vim /etc/kolla/config/collectd.conf
collectd配置文件取消了对宿主机的监控,只设置了监控libvirtd的虚拟机信息,然后使用network插件将收集到的信息发往本机的25826端口。
FQDNLookup false
LoadPlugin syslog
LoadPlugin logfile
LoadPlugin virt
LoadPlugin network
<Plugin logfile>
LogLevel info
File "/var/log/kolla/collectd/collectd.log"
Timestamp true
PrintSeverity false
</Plugin>
<Plugin virt>
Connection "qemu+tcp://192.168.199.90/system"
HostnameFormat hostname
PluginInstanceFormat uuid
BlockDeviceFormat target
InterfaceFormat name
ExtraStats "cpu_util"
</Plugin>
<Plugin network>
Server "192.168.199.90" "25826"
</Plugin>
1.取消了默认collectd的对宿主机监控插件(cpu,interface,load,memory)。
# LoadPlugin cpu
# LoadPlugin interface
# LoadPlugin load
# LoadPlugin memory
2.新增了virt插件监控libvirtd虚拟机状态信息。logfile 日志文件。
<Plugin virt>
Connection "qemu+tcp://192.168.199.90/system" # 本机的libvirt端口。
HostnameFormat hostname # 宿主机名
PluginInstanceFormat uuid # 虚拟机uuid
BlockDeviceFormat target # 监控磁盘的format设置为target
InterfaceFormat name # 虚拟网卡format,可选name 或 address
ExtraStats "cpu_util" # 额外监听,CPU利用率
</Plugin>
3.network 数据传输插件不做修改,将收集数据发送到本机的25826端口。
二、telegraf配置文件修改。设置多个inputs插件使telegraf收集宿主机状态的各个指标,以及监听collectd送达的虚拟机数据。使用outputs.influxdb插件将metric写入到influxdb数据库
注,telegraf的自定义配置文件路径与collectd稍有不同。前面需要加上telegraf目录才能生效。不像collectd那样直接在/etc/kolla/config/目录创建collectd.conf即可。
关于kolla不同组件的自定义配置文件路径。可在以下文件查看。
kolla-ansible/ansible/\<service name>/tasks/config.yml
如telegraf
cat /usr/share/kolla-ansible/ansible/roles/telegraf/tasks/config.yml
- "{
{ node_custom_config }}/telegraf/{
{ inventory_hostname }}/telegraf.conf"
- "{
{ node_custom_config }}/telegraf/telegraf.conf"
mkdir /etc/kolla/config/telegraf
cp /etc/kolla/telegraf/telegraf.conf /etc/kolla/config/telegraf/
vim /etc/kolla/config/telegraf/telegraf.conf
修改为
[global_tags]
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 2000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "10s"
flush_jitter = "0s"
debug = false
quiet = false
hostname = ""
omit_hostname = false
logfile = "/var/log/k