自动发现、自动注册到consul
部署consul单机版
[root@bj consul]# mkdir -p /apps/consul/
[root@bj consul]# cd /apps/consul/
[root@bj consul]# cat docker-compose.yml
version: "3.8"
services:
consul1:
image: consul:latest
container_name: consul1
restart: always
command: agent -server -client=0.0.0.0 -bootstrap-expect=1 -node=consul1 -ui
volumes:
- /data/consul/consul1/data:/consul/data
- /data/consul/consul1/config:/consul/config
ports:
- 81:8500
测试访问consul web ui
http://10.20.1xx.8x:8xx1/ui/dc1/services
consul api
接口文档地址:https://developer.hashicorp.com/consul/api-docs/agent/service#register-service
注册服务(PUT接口)
curl --request PUT --data @payload.json http://10.20.13.88:81/v1/agent/service/register?replace-existing-checks=true
json数据模版 payload.json
{
"ID": "#server_ip#",
"Name": "#server_ip#:9100",
"Tags": ["#service_name#", "v1"],
"Address": "#server_ip#",
"Port": 9100,
"Meta": {
"cloud": "箭头云",
"asset": "dc2",
"job": "#service_name#",
"os": "linux",
"project": "#service_name#",
"region": "default",
"instance": "#server_ip#:9100"
},
"EnableTagOverride": false,
"Check": {
"HTTP": "http://#server_ip#:9100/metrics",
"Interval": "10s"
},
"Weights": {
"Passing": 10,
"Warning": 1
}
}
销毁注册
curl --request PUT http://10.20.13.88:81/v1/agent/service/deregister/10.188.1.251
prometheus 配置更改
配置自动发现
global:
scrape_interval: 60s
evaluation_interval: 5s
scrape_timeout: 60s
scrape_configs:
- job_name: 'omo-big-jty-linux(consul-api)'
consul_sd_configs:
- server: '10.20.13.88:81'
services: []
relabel_configs:
- source_labels: [__meta_consul_tags]
regex: .*omo-big.* ## 发现匹配__meta_consul_tags包含omo-big的数据
action: keep
- regex: __meta_consul_service_metadata_(.+)
action: labelmap
自动注册脚本
#!/bin/bash
#######################################
# register consul #
#######################################
###
# @Time: 2022/10/21 15:31
# @Author: xhs
###
echo "参数个数:$#"
[[ $# -eq '2' ]] || echo -e '\033[32;31mError:\033[0m\n 输入参数的个数不正确\n usage: curl -sSL http://10.20.2.132/soft/consul_api_register.sh|bash -s 10.20.13.88:81 omo-big\n 10.20.13.88:81为consul的api接口地址\n omo-big为业务线名称\n 请根据需要适当修改'
[[ $# -eq '2' ]] || exit 1
consul_ip_port=$1
service_name=$2
consul_api_register(){
tmp_path='/tmp'
server_ip=`ifconfig eth0| sed -rn '2s/^[^0-9]+([0-9.]+) .*$/\1/p'`
file_tmp="$tmp_path/consul-register-template.json"
new_file_json="$tmp_path/consul-register-$server_ip.json"
sudo curl -s -o $file_tmp http://10.20.0.186/software/node_export/consul/consul-register-template.json
sudo cat $file_tmp |sed "s/#server_ip#/$server_ip/g"|sed "s/#service_name#/$service_name/g" > $new_file_json
echo "$server_ip:9100开始注册到consul($consul_ip:$consul_port)"
sudo curl --request PUT --data @${new_file_json} http://$consul_ip_port/v1/agent/service/register?replace-existing-checks=true
}
consul_api_register
执行方法
注意:在各个被监控端执行脚本ansible批量执行)
sh ./consul_api_register.sh 10.20.13.88:81 omo-big
查看注册是否成功