0%

consul kv watch 설정

목표

consul 의 watch 를 활용해 kv 의 값이 변경되었을경우
이를 감지하여 커스텀 핸들러를 실행시킵니다.

handler 작성

my_handler.sh

1
echo "hello world";

consul kv watch 설정

watch.json

1
2
3
4
5
6
7
8
9
{
"watches": [
{
"type": "key",
"key": "foo/bar",
"args": ["sh", "-c", "F:\/tool\/consul\/my_handler.sh"]
}
]
}

consul agent 실행

1
2
3
4
consul agent -dev -enable-script-checks -config-dir=./

# -config-dir
# 설정 디렉토리를 옵션으로 넣어줌으로써 해당 경로 하위에 있는 모든 json 설정을 읽습니다.

log 를 통해 sh 이 실행된 결과를 확인할 수 있습니다.
에이전트를 새로 실행하여도 트리거가 발생되며, 따로 옵션이 있을거라 예상됩니다.

1
2
2019/10/21 22:52:36 [DEBUG] http: Request GET /v1/kv/foo/bar (207.6168ms) from=127.0.0.1:50751
2019/10/21 22:52:36 [DEBUG] agent: watch handler '[sh -c F:/tool/consul/append.sh]' output: hello world

consul kv 데이터 갱신

1
2
$ consul kv put foo/bar 100
Success! Data written to: foo/bar

log 를 통해 sh 이 실행된 결과를 확인할 수 있습니다.

1
2
3
2019/10/21 22:54:52 [DEBUG] http: Request PUT /v1/kv/foo/bar (997.7µs) from=127.0.0.1:50783
2019/10/21 22:54:52 [DEBUG] http: Request GET /v1/kv/foo/bar?index=1 (2m16.8935827s) from=127.0.0.1:50751
2019/10/21 22:54:53 [DEBUG] agent: watch handler '[sh -c F:/tool/consul/append.sh]' output: hello world