我有服务器正在执行与网络中其他设备相关的一些处理,然后相应地将每个设备的日志保存在自己的文件中。它检查每个设备的运行状况及其数据,并且都保存在 json 日志文件中。日志文件如下所示:
rp_001_health.json -> health logs for 001 device
rp_001_prod.json -> production logs for 001 device
rp_002_health.json -> health logs for 002 device
rp_002_prod.json -> production logs for 002 device
rp_003_health.json -> health logs for 003 device
rp_003_prod.json -> production logs for 003 device
rp_004_health.json -> production logs for 004 device
rp_004_prod.json -> production logs for 004 device
设备总数为 28,因此创建的日志文件总数为 56。
我正在努力将所有这些日志数据放在集中式日志系统中,从而使用elasticsearch
和kibana
. 我已经安装td-agent
并且正在为上述所有日志编写它的td-agent.conf
文件,如下所示:
<source>
@type tail
path /home/ripe/Documents/ripeproduct/logs/rp_001_health.json
pos_file /home/ripe/Documents/ripeproduct/logs/rp_001_health.json.pos
format json
time_format %Y-%m-%d %H:%M:%S
tag health001
</source>
<source>
@type tail
path /home/ripe/Documents/ripeproduct/logs/rp_002_health.json
pos_file /home/ripe/Documents/ripeproduct/logs/rp_002_health.json.pos
format json
time_format %Y-%m-%d %H:%M:%S
tag health002
</source>
<filter *health*>
@type record_transformer
<record>
hostname ${hostname}
Customer "Nycil"
Version "V2"
</record>
</filter>
<match *health001*>
@type elasticsearch
hosts https://search-rpproduction-0fzlamandaofgvfcukuoyewkrtfkkw2vre.eu-west-2.es.amazonaws.com/
user <user>
password <pwd>
index_name rp_health_001
type_name health
</match>
<match *health002*>
@type elasticsearch
hosts https://search-rpproduction-0fzlamandaofgvfcukuoyewkrtfkkw2vre.eu-west-2.es.amazonaws.com/
user <user>
password <pwd>
index_name rp_health_002
type_name health
</match>
在上面的文件中,我有两个来源,目前我只是上传 2 个文件的日志。然后我有一个过滤部分,我在其中放置一些元数据,然后是两个匹配部分,我在其中定义我将在 elasticsearch 和 kiabana 中使用的索引模式。
现在的问题是,如果我继续为其余的日志文件构建 conf 文件,它将变得非常冗长并且无法理解,因为我总共有 56 个日志文件。有什么方法可以让所有健康日志文件使用一个源,所有产品日志文件使用一个源。
同样,我可以定义,匹配所有健康日志,并匹配所有产品日志文件。但是在这里我不确定如何放入与每个文件相关的不同索引模式。我想使用像这样的索引模式
rp_health_<device_id> -> rp_health_001 or rp_health_002
那么我怎样才能在一个匹配的所有文件中做到这一点。谁能给一些好的建议。请帮忙。谢谢