linux脚本实现到数据到es,Shell制造es数据脚本

背景:因为很多项目都需要从es中获取数据,测试不会自己造es数据,所以每次都要问。然而问过之后一段时间就忘了,而且一条一条的造也很累。所以写了一个shell脚本

目的:只需要修改shell脚本里的一些参数,然后执行脚本就能得到造好的数据,再使用批量创建es数据的命令制造数据。简化制造数据的成本。

脚本:

```

#!/bin/bash

#!固定变量无需修改

date="`date "+%Y%m%d"`";

dateTime="`date "+%Y-%m-%dT%H:%M:%S.000+08:00"`";

#!日志公共变量

ip="10.33.81.40";

hostname="DVJTY-SERV001";

appsystem="JTY4";

logType="alarm_metric";

#!输出日志条数

count=2;

#!isAlarm=1制造告警日志 isAlarm=0普通日志

isAlarm=0;

#!告警更改所需变量

status="PROBLEM";

alarmWay="1,2,1"

mergeTag=0

connectId=

#!普通系统日志更改所需变量

latency=0;

appprogramname="金太阳数据库";

servicename="金太阳数据库";

servicecode="DB";

clustername="default";

source="runlog0.log";

logTypeName="kcbp_biz_logstash";

offset=700000

function alarmLog(){

echo -e "{\"index\":{\"_id\":\"$uuid\"}}"

echo -e "{\c"

echo -e "\"severity\":\"3\",\c"

echo -e  "\"indexTime\":\"$dateTime\",\c"

echo -e  "\"sourceTopic\":\"alarm_$date\",\c"

echo -e  "\"sources\":{\c"

echo  -e "\"appsystem\":\"$appsystem\",\c"

echo  -e "\"hostname\":\"$hostname\",\c"

echo  -e "\"sourSystem\":\"1\",\c"

echo -e  "\"ruleId\":\"6789\",\c"

echo  -e "\"ip\":\"$ip\"\c"

echo  -e "},\c"

echo  -e "\"alarmTypeName\":\"$logType\",\c"

echo -e  "\"countFileds\":\"${hostname}${ip}趋势预测用例1单实例当前CPU${cpu_used_pct}\",\c"

echo  -e "\"indexStr\":\"alarm_$date$alarmType\",\c"

echo  -e "\"title\":\"DVJTY-SERV00110.33.81.40趋势预测用例1单实例\",\c"

echo  -e "\"content\":\"${hostname}${ip}趋势预测用例1单实例当前CPU${cpu_used_pct}\",\c"

echo  -e "\"extFields\":{\c"

if [  -n "$mergeTag" ]; then

echo  -e "\"mergeTag\":\"$mergeTag\",\c";

fi

if [ "$mergeTag" == "1" ] ; then

echo  -e "\"uuid\":\"$uuid\",\c";

elif  [ "$mergeTag" == "0" ] ; then

echo  -e "\"uuid\":\"$uuid\",\c";

echo  -e "\"connectId\":\"$connectId\",\c";

fi

echo  -e "\"expressionId\":\"6789\",\c"

echo  -e "\"sourSystem\":\"1\",\c"

echo  -e "\"alarmtime\":\"$dateTime\",\c"

echo  -e "\"actionID\":\"0\",\c"

echo -e  "\"alarmSuppress\":\"alarmSuppress\",\c"

echo  -e "\"calenderId\":\"1\",\c"

echo  -e "\"alarmWay\":\"$alarmWay\",\c"

echo  -e "\"successFlag\":\"1\",\c"

echo  -e "\"revUsers\":\"[]\"\c"

echo  -e "},\c"

echo  -e "\"expressionId\":\"6789\",\c"

echo  -e "\"metricSetName\":\"cpu\",\c"

echo  -e "\"status\":\"$status\",\c"

echo  -e "\"timestamp\":\"$dateTime\"\c"

echo  -e "}"

}

function normalLog(){

echo -e "{\"index\":{\"_id\":\"$uuid\"}}"

echo -e "{\c"

echo -e "\"measures\":{\c"

echo -e "\"latency\":$latency\c"

echo -e "},\c"

echo -e "\"normalFields\":{\c"

echo -e "\"logcheckip\":\"$ip\",\c"

echo -e "\"deserializerTime\":\"$dateTime\",\c"

echo -e "\"indexTime\":\"$dateTime\",\c"

echo -e "\"logchecktime\":\"$dateTime\",\c"

echo -e "\"message\":\"$dateTime 这是一条脚本跑出的测试日志 $ip $hostname\"\c"

echo -e "},\c"

echo -e "\"offset\":$offset,\c"

echo -e "\"logTypeName\":\"$logTypeName\",\c"

echo -e "\"source\":\"$source\",\c"

echo -e "\"timestamp\":\"$dateTime\",\c"

echo -e "\"dimensions\":{\c"

echo -e "\"ip\":\"$ip\",\c"

echo -e "\"hostname\":\"$hostname\",\c"

echo -e "\"appprogramname\":\"$appprogramname\",\c"

echo -e "\"code\":\"0\",\c"

echo -e "\"servicecode\":\"$servicecode\",\c"

echo -e "\"clustername\":\"$clustername\",\c"

echo -e "\"appsystem\":\"$appsystem\",\c"

echo -e "\"servicename\":\"$servicename\",\c"

echo -e "\"funcid\":\"420410\",\c"

echo -e "\"nodeid\":\"107\"\c"

echo -e "}\c"

echo -e "}"

let "offset++";

}

while(( $count>0 ))

do

uuid=$(cat "/proc/sys/kernel/random/uuid")

if [ $isAlarm == 1 ] ; then

alarmLog

else

normalLog

fi

let "count--"

done

```

遇到的问题:

1. 不会shell,现学了shell。

2. shell将数据输入到一个文件使用 ./eslog.sh >testLog.txt    (>是覆盖文件内容,>>接着原本的内容输入)

3.命令批量导入es数据需要合适非常严格,不能有空格,而且单条数据要换行,本条数据内容不能换行

如:

{"index":{"_id":"AWVq9MFRV9j8LejhM58L"}}

{"indexTime":"2018-08-24T16:02:29.829+08:00","measures":{"duration":12575},"normalFields":{"traceId":"2840045838270464","N_pkg":"","code":"0","session":"729eb5111f47adc9c1736096aa42b5a02aa62fd2c8993f52baf46bf4"}}

所以必须去除换行,也不能有空格,所以使用输出为 echo -e "aaa/c" 的命令

4.在widows下编辑好的.sh脚本上传到Linux时会不能执行,所以需要先

vi eslog.sh 后执行 set ff=unix 脚本才能正常执行

5.如果早的es数据有中文但是文件格式不是utf-8也会报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值