iLogtail 入门-采集Telegraf Metrics 数据

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 阿里已经正式开源了可观测数据采集器iLogtail。作为阿里内部可观测数据采集的基础设施,iLogtail承载了阿里巴巴集团、蚂蚁的日志、监控、Trace、事件等多种可观测数据的采集工作。本文将介绍iLogtail如何与Telegraf协同工作,采集指标数据。

采集配置

iLogtail 目前采集配置全面兼容Telegraf 配置文件, iLogtail 在工作时将启动2个插件进行协同工作,分别为service_telegraf 插件与service_http_server 插件,service_telegraf 负责建立iLogtail 与Telegraf 进程之间的关联,将Telegraf Agent的配置管理工作交由iLogtail 控制,而service_http_server则负责iLogtail 插件与Telegraf Agent 之间的具体的数据传输工作。

  1.  service_telegraf 控制插件的具体参数配置:

参数

描述

默认值

Detail

yaml格式的Telegraf采集配置

  1. service_http_server 采集插件的具体参数配置:

参数

描述

默认值

Format

数据格式,对于Telegraf Agent,设置参数为influx。


Address

监听地址


ReadTimeoutSec

读取超时时间

10

ShutdownTimeoutSec

关闭超时时间

5

MaxBodySize

最大传输body 体大小

64 1024 1024

UnlinkUnixSock

启动前如果监听地址为unix socket,是否进行强制释放

true

以下是一个简单的采集配置:

[

   {

       "detail":{

           "Detail":"\n# Read Redis's basic status information\n[[inputs.redis]]\n  interval = \"30s\"\n  ## specify servers via a url matching:\n  ##  [protocol://][:password]@address[:port]\n  ##  e.g.\n  ##    tcp://localhost:6379\n  ##    tcp://:password@192.168.99.100\n  ##\n  ## If no servers are specified, then localhost is used as the host.\n  ## If no port is specified, 6379 is used\n  ## servers = [\"tcp://host:port\"]\n  servers = [\"tcp://127.0.0.1:6379\"]\n  ## specify server password\n  # password = \"s#cr@t%\"\n  # password = \"\"\n\n  ## Optional TLS Config\n  # tls_ca = \"/etc/telegraf/ca.pem\"\n  # tls_cert = \"/etc/telegraf/cert.pem\"\n  # tls_key = \"/etc/telegraf/key.pem\"\n  ## Use TLS but skip chain & host verification\n  # insecure_skip_verify = true\n  [inputs.redis.tags]\n    __metricstore__ = \"ljp-test-bj_telegraf_test\"\n    cluster = \"test\"\n  \n    key = \"value\"\n  \n\n\n[[outputs.influxdb]]\n  ## The full HTTP or UDP URL for your InfluxDB instance.\n  ##\n  ## Multiple URLs can be specified for a single cluster, only ONE of the\n  ## urls will be written to each interval.\n  # urls = [\"unix:///var/run/influxdb.sock\"]\n  # urls = [\"udp://127.0.0.1:8089\"]\n  urls = [\"unix:///var/run/ljp-test-bj_telegraf_test.sock\"]\n  tagexclude = [\"__metricstore__\"]\n  skip_database_creation = true\n  [outputs.influxdb.tagpass]\n    __metricstore__ = [\"ljp-test-bj_telegraf_test\"]\n"

       },

       "type":"service_telegraf"

   },

   {

       "detail":{

           "Address":"unix:///var/run/ljp-test-bj_telegraf_test.sock",

           "Format":"influx"

       },

       "type":"service_http_server"

   }

]

采集数据格式

iLogtail Telegraf 采集的Metrics 数据与日志同样遵循iLogtail 的传输层协议,目前传输数据字段为以下格式,与Prometheus 采集格式相同。

传输字段

含义

__name__

指标名,与Prometheus exporter 指标名相同。

__labels__

指标Label 熟悉,数据格式为{label_a_nane}#$#{label_a_value}|{label_b_nane}#$#{label_b_value},例如instance#$#exporter:18080|job#$#prometheus

__time_nano__

采集时间

__value__

指标值

转换规则

Telegraf Agent 采集的数据规则格式为{type},{tags} {key&value pairs} {time}

mysql,host=Vm-Req-170328120400894271-tianchi113855.tc,server=rm-bp1eomqfte2vj91tkjo.mysql.rds.aliyuncs.com:3306 bytes_sent=19815071437i,com_assign_to_keycache=0i,com_alter_event=0i,com_alter_function=0i,com_alter_server=0i,com_alter_table=0i,aborted_clients=7738i,binlog_cache_use=136756i,binlog_stmt_cache_use=136759i,com_alter_procedure=0i,binlog_stmt_cache_disk_use=0i,bytes_received=6811387420i,com_alter_db_upgrade=0i,com_alter_instance=0i,aborted_connects=7139i,binlog_cache_disk_use=0i,com_admin_commands=3478164i,com_alter_db=0i,com_alter_tablespace=0i,com_alter_user=0i 1595818360000000000

iLogtail 会将接受到的Telegraf数据进行类Prometheus格式转换,转换规则为:

  • __name__:{type}:{key}
  • __labels__: {tags}
  • __time_nano__:{time}
  • __value__:{value}

本地采集Telegraf 采集Redis 指标数据实战

  1. 准备Linux 环境。
  2. 下载最新的ilogtail版本进行安装。

# 解压tar包

$ tar zxvf logtail-linux64.tar.gz


# 查看目录结构

$ ll logtail-linux64

drwxr-xr-x   3 500 500  4096 bin

drwxr-xr-x 184 500 500 12288 conf

-rw-r--r--   1 500 500   597 README

drwxr-xr-x   2 500 500  4096 resources


# 进入bin目录

$ cd logtail-linux64/bin

$ ll

-rwxr-xr-x 1 500 500 10052072 ilogtail_1.0.28 # ilogtail可执行文件

-rwxr-xr-x 1 500 500     4191 ilogtaild  

-rwxr-xr-x 1 500 500     5976 libPluginAdapter.so

-rw-r--r-- 1 500 500 89560656 libPluginBase.so

-rwxr-xr-x 1 500 500  2333024 LogtailInsight

  1. 创建采集配置目录。

# 1. 创建sys_conf_dir

$ mkdir sys_conf_dir


# 2. 创建ilogtail_config.json并完成配置。

##### logtail_sys_conf_dir取值为:$pwd/sys_conf_dir/

##### config_server_address固定取值,保持不变。

$ pwd

/root/bin/logtail-linux64/bin

$ cat ilogtail_config.json

{

    "logtail_sys_conf_dir": "/root/bin/logtail-linux64/bin/sys_conf_dir/",  


    "config_server_address" : "http://logtail.cn-zhangjiakou.log.aliyuncs.com"

}


# 3. 此时的目录结构

$ ll

-rwxr-xr-x 1  500  500 ilogtail_1.0.28

-rw-r--r-- 1 root root ilogtail_config.json

-rwxr-xr-x 1  500  500 ilogtaild

-rwxr-xr-x 1  500  500 libPluginAdapter.so

-rw-r--r-- 1  500  500 libPluginBase.so

-rwxr-xr-x 1  500  500 LogtailInsight

drwxr-xr-x 2 root root sys_conf_dir

  1. 设置采集配置文件,将下列内如写入sys_conf_dir/user_local_config.json文件,下面核心配置为plugin部分,核心部分为plugin部分,此部分描述的内容主要是下发Telegraf 采集配置,将收集到的Telegraf 数据写于本地telegraf.log

{

   "metrics":{

       "test-telegraf":{

           "aliuid":"",

           "category":"",

           "create_time":1640692891,

           "defaultEndpoint":"",

           "delay_alarm_bytes":0,

           "enable":true,

           "enable_tag":false,

           "filter_keys":[


           ],

           "filter_regs":[


           ],

           "group_topic":"",

           "local_storage":true,

           "log_type":"plugin",

           "log_tz":"",

           "max_send_rate":-1,

           "merge_type":"topic",

           "plugin":{

               "inputs":[

                   {

                       "detail":{

                           "Detail":"\n# Read Redis's basic status information\n[[inputs.redis]]\n  interval = \"30s\"\n  ## specify servers via a url matching:\n  ##  [protocol://][:password]@address[:port]\n  ##  e.g.\n  ##    tcp://localhost:6379\n  ##    tcp://:password@192.168.99.100\n  ##\n  ## If no servers are specified, then localhost is used as the host.\n  ## If no port is specified, 6379 is used\n  ## servers = [\"tcp://host:port\"]\n  servers = [\"tcp://127.0.0.1:6379\"]\n  ## specify server password\n  # password = \"s#cr@t%\"\n  # password = \"\"\n\n  ## Optional TLS Config\n  # tls_ca = \"/etc/telegraf/ca.pem\"\n  # tls_cert = \"/etc/telegraf/cert.pem\"\n  # tls_key = \"/etc/telegraf/key.pem\"\n  ## Use TLS but skip chain & host verification\n  # insecure_skip_verify = true\n  [inputs.redis.tags]\n    __metricstore__ = \"ljp-test-bj_telegraf_test\"\n    cluster = \"test\"\n  \n    key = \"value\"\n  \n\n\n[[outputs.influxdb]]\n  ## The full HTTP or UDP URL for your InfluxDB instance.\n  ##\n  ## Multiple URLs can be specified for a single cluster, only ONE of the\n  ## urls will be written to each interval.\n  # urls = [\"unix:///var/run/influxdb.sock\"]\n  # urls = [\"udp://127.0.0.1:8089\"]\n  urls = [\"unix:///var/run/ljp-test-bj_telegraf_test.sock\"]\n  tagexclude = [\"__metricstore__\"]\n  skip_database_creation = true\n  [outputs.influxdb.tagpass]\n    __metricstore__ = [\"ljp-test-bj_telegraf_test\"]\n"

                       },

                       "type":"service_telegraf"

                   },

                   {

                       "detail":{

                           "Address":"unix:///var/run/ljp-test-bj_telegraf_test.sock",

                           "Format":"influx"

                       },

                       "type":"service_http_server"

                   }

               ],

               "flushers":[

                   {

                       "detail":{

                           "FileName":"./telegraf.log"

                       },

                       "type":"flusher_stdout"

                   }

               ]

           },

           "priority":0,

           "project_name":"",

           "raw_log":false,

           "region":"",

           "send_rate_expire":0,

           "sensitive_keys":[


           ],

           "shard_hash_key":[


           ],

           "tz_adjust":false,

           "version":1

       }

   }

}

  1. 设置Telegraf

cd sys_conf_dir

# 下载Telegraf

wget https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/telegraf/1.0.29/telegraf.tar.gz


$tar -xvf telegraf.tar.gz

telegraf/

telegraf/version

telegraf/javaagent/

telegraf/javaagent/jolokia-jvm.jar

telegraf/telegrafd

telegraf/arch_type

telegraf/conf.d/

telegraf/telegraf


chmod 755 telegraf/telegrafd

  1. 启动redis 容器,并暴露6379端口。

docker pull redis

docker run -p 6379:6379 -d redis:latest redis-server

  1. 启动logtail ,可以看到Telegraf 数据以及保存于telegraf.log 文件。

sudo ./ilogtail_1.0.29 --ilogtail_daemon_flag=false


2022-02-21 23:46:35 {"__name__":"redis:instantaneous_output_kbps","__labels__":"cluster#$#test|host#$#sls-backend-server-test011122076082.na131|key#$#value|port#$#6379|replication_role#$#master|server#$#127.0.0.1","__time_nano__":"1645458390000000000","__value__":"0","__time__":"1645458390"}

2022-02-21 23:46:35 {"__name__":"redis:sync_full","__labels__":"cluster#$#test|host#$#sls-backend-server-test011122076082.na131|key#$#value|port#$#6379|replication_role#$#master|server#$#127.0.0.1","__time_nano__":"1645458390000000000","__value__":"0","__time__":"1645458390"}

2022-02-21 23:46:35 {"__name__":"redis:mem_clients_slaves","__labels__":"cluster#$#test|host#$#sls-backend-server-test011122076082.na131|key#$#value|port#$#6379|replication_role#$#master|server#$#127.0.0.1","__time_nano__":"1645458390000000000","__value__":"0","__time__":"1645458390"}

2022-02-21 23:46:35 {"__name__":"redis:client_recent_max_output_buffer","__labels__":"cluster#$#test|host#$#sls-backend-server-test011122076082.na131|key#$#value|port#$#6379|replication_role#$#master|server#$#127.0.0.1","__time_nano__":"1645458390000000000","__value__":"0","__time__":"1645458390"}

日志服务采集Redis 指标数据实战

  1. 参考主机环境日志采集到SLS 建立主机iLogtail与阿里云日志服务的链接。
  2. 创建MetricStore

  1. 创建机器组页签中,创建机器组,然后在机器组配置页签中,应用机器组。选择一个机器组,将该机器组从源机器组移动到应用机器组
  2. 创建redis 采集配置,选择Redis监控。

  1. 配置Redis监控采集配置。


  1. 当采集配置成功后,此时可以打开可视化看板,查看展示redis 数据展示。

总结

iLogtail 提供了完整的Telegraf 数据收集能力,无需改造迁移,即可将Telegraf采集转换为iLogtail 采集。而通过日志服务的MetricStore能力,构建了标准的PromQL Metrics 查询解决方案,让用户无需在多种Metrics 指标查询中选择。

参考文档

Telegraf 配置文档

接入Redis数据

iLogtail 的传输层协议

主机环境日志采集到SLS

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
监控 Java 时序数据库
性能监控之Telegraf+InfluxDB+Grafana实现JMX实时监控
【6月更文挑战15天】性能监控之Telegraf+InfluxDB+Grafana实现JMX实时监控
120 6
性能监控之Telegraf+InfluxDB+Grafana实现JMX实时监控
|
Prometheus Cloud Native API
|
17天前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
36 0
|
1月前
|
数据采集 监控 Unix
性能监控之Telegraf+InfluxDB+Grafana实现结构化日志实时监控
【8月更文挑战第1天】性能监控之Telegraf+InfluxDB+Grafana实现结构化日志实时监控
166 0
|
4月前
|
数据采集 存储 监控
InfluxDB与Telegraf:数据采集与监控实战
【4月更文挑战第30天】本文介绍了InfluxDB和Telegraf在数据采集与监控中的应用。InfluxDB是高性能的时序数据库,适合高吞吐量和实时查询,而Telegraf是数据采集代理,能收集多种系统指标并发送至InfluxDB。实战部分涉及安装配置两者,通过Telegraf收集数据,然后使用InfluxDB查询分析,配合Grafana实现可视化展示,从而实现有效的监控解决方案。
|
存储 监控 数据可视化
nmon2influxdb+grafana:服务监控可视化部署
启动grafana,配置对应的Dashboard、Data Sources,然后选择配置好的仪表盘,查看可视化的监控数据(如何配置grafana,请看这里:可视化工具Grafana:简介及安装)。
nmon2influxdb+grafana:服务监控可视化部署
|
Kubernetes 容器 Perl
使用Logstash收集Kubernetes的应用日志
前言 本文同步更新到Github仓库kubernetes-handbook中。 很多企业内部都有自己的ElasticSearch集群,我们没有必要在kubernetes集群内部再部署一个,而且这样还难于管理,因此我们考虑在容器里部署logstash收集日志到已有的ElasticSearch集群中。
2969 0
|
弹性计算 运维 监控
【Logtail最佳实践】使用Logtail采集和解析Syslog数据
Syslog是一种行业标准的协议,可用来记录设备的日志。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。 本文档介绍如何使用Logtail采集和解析Syslog数据。
2203 0
|
数据采集 JSON Prometheus
iLogtail使用入门-iLogtail 采集Prometheus 数据
前言阿里已经正式开源了可观测数据采集器iLogtail。作为阿里内部可观测数据采集的基础设施,iLogtail承载了阿里巴巴集团、蚂蚁的日志、监控、Trace、事件等多种可观测数据的采集工作。本文将介绍iLogtail 如何采集Prometheus exporter 数据。采集配置iLogtail 的采集配置全面兼容Prometheus 配置文件(以下介绍为1.0.30版本+)。参数描述默认值Ya
879 0
iLogtail使用入门-iLogtail 采集Prometheus 数据