一、注册exporter
consul注册支持两种方式,第一种是“curl -X PUT -d”加所有的json格式文本,第二种是“curl --request PUT --data”加需要注册的json文件,用到的API都是一样的:“http://consulIP:8500/v1/agent/service/register”,下面主要使用json文件注册方式
1.1、创建服务列表
因为是注册exporter,这里不需要检查exporter的URL状态,所以在服务列表中删除了“check”字段,格式如下:
vim serviceList
这几个是必须的,我还有其他标签,需要写在meta中,完整表头如下:
1.2、编写shell脚本
vim register.sh
#!/bin/bash
cat -n serviceList|while read num id name address port tags BUSINESSID EXPORTERNAME hostname node RESOURCEPOOL
do
if [ $num -eq 1 ];then
continue
fi
echo "{\"ID\": \"$id\",\"Name\": \"$name\",\"Address\": \"$address\",\"Port\": 9100,\"Tags\": [\"$tags\"],\"Meta\": {\"EXPORTERNAME\": \"$EXPORTERNAME\",\"node\": \"$node\",\"hostname\": \"$hostname\",\"BUSINESSID\": \"$BUSINESSID\",\"RESOURCEPOOL\": \"$RESOURCEPOOL\"}}" > json
curl --request PUT --data @json http://consulIP:8500/v1/agent/service/register
done
二、注销exporter
注销服务也是在cousul API中做,仅需要在API后加上id即可完成注销服务,API:http://consulIP:8500/v1/agent/service/deregister/${id}
2.1、serviceList
2.2、编写shell脚本
vim .deregister.sh
#!/bin/bash
cat -n serviceList|while read num id
do
if [ $num -eq 1 ];then
continue
fi
curl -X PUT http://consulIP:8500/v1/agent/service/deregister/$line
done
三、小技巧
如果你需要注册的是blackbox节点,你的端口是需要变的,所以<\"Port\": 9100>你可以改成<\"Port\": $(($port))>,这个“$(())”是为了把str类型变量格式化成int类型,非常好用!
四、在shell中格式化json文本
在consul注册完成时需要查看注册的内容,如果只能在本地执行curl查询,这时就需要将json格式文本进行格式化,例:
$ curl http://IP:8500/v1/agent/services| python -mjson.tool
系统python就是默认存在"-mjson.tool"的,非常好用。