Managing CloudHub agent configuration
๊ฐ์
CloudHub๋ SaltStack์ ํ์ฉํ Collector(Telegraf) installation & configuration provisioning์ ์ง์ํ๋ฉฐ, Salt API๋ฅผ ํตํ์ฌ ๊ฐ Salt Minion์ด ์ค์น๋์ด ์๋ ํธ์คํธ๋ค์ Collector(Telegraf)๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
Minions
Agent Configuration์ Minions์ Salt Minion์ Accept, Reject, Delete ๊ธฐ๋ฅ์ ํตํด Salt Minion์ด ์ค์น๋ ํธ์คํธ๋ฅผ Salt Master์ ์ฐ๊ฒฐ ๋ฐ ์ฐ๊ฒฐ ํด์ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Accept๋ Host์ ๋ํ OS, OS Version, IP ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
Salt Minion ์ค์น : Installing Agent Node
Minions ์ด๊ธฐํ๋ฉด
ย
Accept Minion
1๋จ๊ณ : Minions ๋ฆฌ์คํธ์์ Operation์ ๋ฒํผ ํด๋ฆญ
Accept, Delete๋ฅผ ์ ํํ ์ ์๋๋ก ๋ํ๋ฉ๋๋ค.
ย
2๋จ๊ณ : Accept ํด๋ฆญ
Acceptํ Host์ ๊ฒฐ๊ณผ๊ฐ Console์ ์ถ๋ ฅ๋๊ณ Minions ๋ฆฌ์คํธ๋ ์๋ก ๊ณ ์นจ ๋์ด Status๊ฐ Accepted๋ก ๋ณ๊ฒฝ๋์ด ์ถ๋ ฅ๋ฉ๋๋ค.
ย
Accept๋ Host์ ํํด์ OS, OS Version, IP ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง๋ง, Accept ํ ๋ฐ๋ก ์กฐํ๋์ง ์๊ณ ์ฝ 5์ด ํ ์ฌ ์กฐํ ์ ์ถ๋ ฅ๋ฉ๋๋ค.
ย
Reject Minion
1๋จ๊ณ : Minions ๋ฆฌ์คํธ์์ Status๊ฐ Accepted์ธ Host์ Operation์ ๋ฒํผ ํด๋ฆญ
Reject, Delete๋ฅผ ์ ํํ ์ ์๋๋ก ๋ํ๋ฉ๋๋ค.
2๋จ๊ณ : Reject ํด๋ฆญ
Rejectํ Host์ ๊ฒฐ๊ณผ๊ฐ Console์ ์ถ๋ ฅ๋๊ณ Minions ๋ฆฌ์คํธ๋ ์๋ก๊ณ ์นจ ๋์ด Status๊ฐ Reject๋ก ๋ณ๊ฒฝ๋์ด ์ถ๋ ฅ๋ฉ๋๋ค. ๋ํ Reject๋ Host์ OS, OS Version ์ ์ถ๋ ฅ๋์ง ์์ต๋๋ค.
Delete Minion
1๋จ๊ณ : Minions ๋ฆฌ์คํธ์์ Status๊ฐ Accepted, Reject, UnAccept์ธ Host์ Operation์ ๋ฒํผ ํด๋ฆญ
Delete๋ฅผ ์ ํํ ์ ์๋๋ก ๋ํ๋ฉ๋๋ค.
ย
2๋จ๊ณ : Delete ํด๋ฆญ
Deleteํ Host์ ๊ฒฐ๊ณผ๊ฐ Console์ ์ถ๋ ฅ๋๊ณ Minions ๋ฆฌ์คํธ์์ ์ญ์ ํ Host๋ฅผ ์ ์ธํ Host ๋ฆฌ์คํธ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
ย
Host Delete ์ ํด๋น Host๋ฅผ Minions์์ ์ฌํ์ฉํ๋ ค๋ฉด Host์ Salt Minion์ Service๋ฅผ ์ฌ์์ ํด์ผ ํฉ๋๋ค.
Host ์์คํ ์ ๋ณด ์กฐํ
1๋จ๊ณ : Minions ๋ฆฌ์คํธ์์ Accepted ํด๋ฆญ
์๋์ ๊ฐ์ด ํด๋น Host์ ๊ธฐ๋ณธ ์์คํ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
saltversion: '3001.1'
master: 192.168.34.59
os_family: RedHat
os: CentOS
osrelease: 7.8.2003
kernel: Linux
kernelrelease: 3.10.0-1127.10.1.el7.x86_64
kernelversion: '#1 SMP Wed Jun 3 14:28:03 UTC 2020'
virtual: VirtualBox
cpuarch: x86_64
cpu_model: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
localhost: master-node
ip_interfaces:
lo:
- 127.0.0.1
- '::1'
enp0s3:
- 192.168.34.59
- 'fe80::4950:5197:f54a:a40a'
- 'fe80::33f6:4558:84d0:d45b'
- 'fe80::2de:4527:4cc5:fb1f'
enp0s8:
- 10.0.2.97
- 'fe80::7631:a2d3:1c41:ecf3'
docker0:
- 172.17.0.1
ip6_interfaces:
lo:
- '::1'
enp0s3:
- 'fe80::4950:5197:f54a:a40a'
- 'fe80::33f6:4558:84d0:d45b'
- 'fe80::2de:4527:4cc5:fb1f'
enp0s8:
- 'fe80::7631:a2d3:1c41:ecf3'
docker0: []
ip4_gw: 10.0.2.1
ip6_gw: false
'dns:nameservers':
- 208.67.220.220
- 8.8.8.8
- 168.126.63.1
locale_info:
defaultlanguage: en_US
defaultencoding: UTF-8
detectedencoding: UTF-8
timezone: unknown
biosversion: VirtualBox
mem_total: 990
swap_total: 819
gpus:
- vendor: vmware
model: SVGA II Adapter
selinux:
enabled: true
enforced: Enforcing
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin'
Client SSH
Client SSH๋ฅผ ์์งํ์ธ์. (์ฝ๋ ์๊ฐ: 5๋ถ ๋ฏธ๋ง)
1๋จ๊ณ : Minions ๋ฆฌ์คํธ์์ Operation์ ๋ฒํผ ํด๋ฆญํ๋ฉด ํฐ๋ฏธ๋ ์ ๋ ฅ์ฐฝ์ด ํ์๋ฉ๋๋ค. ์ ๋ ฅ์ฐฝ์ ADDRESS ํ๋๋ ๋ฏธ๋์ธ์ด ๊ฐ์ง๊ณ ์๋ IP์ ๊ธฐ๋ณธ์ผ๋ก ์ ๋ ฅํฉ๋๋ค.
ย
2๋จ๊ณ : ํฐ๋ฏธ๋ ์ ๋ ฅ์ฐฝ์ ์ ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฅผ ์ ๋ ฅํ๊ณ , [Connect] ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
ย
3๋จ๊ณ : ์ ์ ์ ์์ด ๋๋ ๊ฒฝ์ฐ ํ๋จ์ ์ด๋ฏธ์ง์ ๋น์ทํ๊ฒ ํ์๋ฉ๋๋ค.
ย
##
Collector Control
Collector Control์ Accepted ๋ Host์ ๋ํด Collector(Telegraf) ์ค์น ๋ฐ Collector(Telegraf) ์๋น์ค๋ฅผ ์คํ ๋ฐ ์ค์งํ ์ ์์ต๋๋ค.
INSTALL Collector
1๋จ๊ณ : Collector Control ํญ ๋ฉ๋ด ํด๋ฆญ
Minions ํญ ๋ฉ๋ด์์ Accept ๋ Host๊ฐ ๋ฆฌ์คํธ์ ์ถ๋ ฅ๋ฉ๋๋ค.
์ ํ๋ Host๊ฐ ์์ผ๋ฉด RUN, STOP, INSTALL ๋ฒํผ์ ๋นํ์ฑํ๋ฉ๋๋ค.
2๋จ๊ณ : Installํ Host์ ์ฒดํฌ ๋ฐ์ค ์ ํ
Host ์ฒดํฌ ๋ฐ์ค ์ ํ์ ํ๊ฒ ๋๋ฉด RUN, STOP, INSTALL ๋ฒํผ์ ํ์ฑํ๋ฉ๋๋ค.
3๋จ๊ณ : INSTALL ๋ฒํผ ํด๋ฆญ
Collector(Telegraf) Installํ Host์ ๊ฒฐ๊ณผ๊ฐ Console์ ์ถ๋ ฅ๋๊ณ Minions ๋ฆฌ์คํธ์์ Enabled๊ฐ Enable๋ก ๋ณ๊ฒฝ๋์ด ์ถ๋ ฅ๋ฉ๋๋ค.
Installing Server Node | Download telegraf into salt path on salt master์ ๋ค์ด๋ก๋ ๋ฐ์ Telegraf ๋ฒ์ ์ผ๋ก ์ค์น๋๋ฉฐ, ํธํ ๋ฒ์ ์ ์ฐจํ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
RUN Collector
Collector(Telegraf)๊ฐ ์ค์น๋ Host์ ํํด Collector(Telegraf)๋ฅผ ์คํํ ์ ์์ต๋๋ค.
Minions ๋ฆฌ์คํธ์ Action์ โถ ๋ฒํผ์ ํด๋ฆญํ์ฌ Collector(Telegraf)๋ฅผ ์คํํ ์ ์์ต๋๋ค.
Minions ๋ฆฌ์คํธ์์ ์คํํ Host๋ฅผ ์ ํํ๊ณ RUN์ ํด๋ฆญํด๋ Collector(Telegraf)๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์คํ ๊ฒฐ๊ณผ
STOP Collector
Collector(Telegraf)๊ฐ ์ค์น๋ Host์ ํํด Collector(Telegraf)๊ฐ ์คํ ์ค์ธ ๊ฒฝ์ฐ ์๋น์ค๋ฅผ ์ค์งํ ์ ์์ต๋๋ค.
Minions ๋ฆฌ์คํธ์ Action์ โ ๋ฒํผ์ ํด๋ฆญํ์ฌ Collector(Telegraf)๋ฅผ ์๋น์ค๋ฅผ ์ค์งํ ์ ์์ต๋๋ค.
Minions ๋ฆฌ์คํธ์์ Collector(Telegraf) ์๋น์ค๋ฅผ ์ค์งํ Host๋ฅผ ์ ํํ๊ณ STOP์ ํด๋ฆญํด๋ ์ค์งํ ์ ์์ต๋๋ค.
์คํ ๊ฒฐ๊ณผ
Collector Config
Collector Config ํญ ๋ฉ๋ด๋ Host๊ฐ Salt Master์ Accept ๋์ด ์๊ณ Collector(Telegraf)๊ฐ ์ค์น๋ Host์ ๋ํ Measurements ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ Collector(Telegraf) Configuration ์ ๋ณด๋ฅผ Editor๋ฅผ ์ด์ฉํด ์์ ํ ํ ์ ์ฉํ ์ ์์ต๋๋ค.
CloudHub Collector์ ๊ฒฝ์ฐ, ์คํ์์ค Telegraf๋ฅผ ํ์ฉํ๋ฉฐ, Telegraf๊ฐ ์ง์ํ๋ ๋ชจ๋ plugin์ ์๋์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. (๋จ, ์ด ๊ฒฝ์ฐ ๊ธฐ์ ์ง์์ ์ ์ฝ์ด ์์ ์ ์์ต๋๋ค.)
Telegraf์์ ์ง์ํ๋ plugin ๋ชฉ๋ก ๋ฐ ์ค์ ๋ฐฉ๋ฒ์ https://github.com/snetsystems/telegraf#input-plugins ์์ ์์ธํ ๋ณผ ์ ์์ต๋๋ค.
๋ํ, [Online Only] Case Study์์ ์์ ๋ฅผ ์ฐธ๊ณ ํ ์ ์์ต๋๋ค.
Collector.conf ์์ ๋ฐ ์ ์ฉ
1๋จ๊ณ : Collector Config ํญ ๋ฉ๋ด ํด๋ฆญ
Minions ๋ฆฌ์คํธ์ Host๊ฐ Salt Master์ Accept ๋์ด ์๊ณ Collector(Telegraf)๊ฐ ์ค์น๋ Host๊ฐ ๋ฆฌ์คํธ์ ์กฐํ๋ฉ๋๋ค.
2๋จ๊ณ : ์กฐํ๋ Host ํด๋ฆญ
์ ํ๋ Host์ ํด๋นํ๋ Measurements ์ ๋ณด์ collector์ Configuration ์ ๋ณด๊ฐ collector.conf Editor์ ์ถ๋ ฅ๋ฉ๋๋ค.
ย
3๋จ๊ณ : collector.conf Editor์ Configuration ์์
[global_tags]
dc = ""
rack = ""
[agent]
interval = "5s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "5s"
flush_jitter = "0s"
precision = ""
debug = false
quiet = false
logfile = "/var/log/telegraf/telegraf.log"
hostname = "minion01"
omit_hostname = false
[[outputs.influxdb]]
urls = ["http://<influxdb_address:port>"]
database = ""
username = ""
password = ""
retention_policy = ""
write_consistency = "any"
timeout = "5s"
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[[inputs.disk]]
ignore_fs = [
"tmpfs",
"devtmpfs",
"devfs",
"iso9660",
"overlay",
"aufs",
"squashfs"
]
[[inputs.diskio]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.net]]
[[inputs.processes]]
[[inputs.procstat]]
exe = "salt"
[[inputs.swap]]
[[inputs.system]]
[[inputs.netstat]]
[[inputs.influxdb]]
urls = [ "http://<influxdb_address:port>/debug/vars" ]
[[inputs.kapacitor]]
urls = [ "http://<kapacitor_address:port>/kapacitor/v1/debug/vars" ]
timeout = "5s"
ํด๋น Host์ Host Name๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ [agent]์ hostname๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
hostname = "minion01"
(๊ณต๋ฐฑ ๋ฌธ์ ์ฆ, ๋์ด์ฐ๊ธฐ ๋ถ๊ฐ)
4๋จ๊ณ : โAPPLYโ ๋ฒํผ ํด๋ฆญ
Collector(Telegraf) ์ Configuration ์ด ์ ์ฉ๋๊ณ Collector(Telegraf) Service๊ฐ ์ฌ์์๋ฉ๋๋ค.
๋ฐ์ดํฐ ํ์ธ
Visualize ๋ฉ๋ด ํ์ธ
Infrastructure ๋ฉ๋ด ํ์ธ
Collector.conf Test
1๋จ๊ณ : Collector Config ํญ ๋ฉ๋ด ํด๋ฆญ
Minions ๋ฆฌ์คํธ์ Host๊ฐ Salt Master์ Accept ๋์ด ์๊ณ Collector(Telegraf)๊ฐ ์ค์น๋ Host๊ฐ ๋ฆฌ์คํธ์ ์กฐํ๋ฉ๋๋ค.
ย
2๋จ๊ณ : ์กฐํ๋ Host ํด๋ฆญ
์ ํ๋ Host์ ํด๋นํ๋ Measurements ์ ๋ณด์ collector์ Configuration ์ ๋ณด๊ฐ collector.conf Editor์ ์ถ๋ ฅ๋ฉ๋๋ค.
ย
3๋จ๊ณ : collector.conf Editor์ Configuration ์์
ย
4๋จ๊ณ : โTESTโ ๋ฒํผ ํด๋ฆญ
โTESTโ ๋ฒํผ์ ํด๋ฆญํ๊ฒ ๋๋ฉด 'Input Plugin'์ ํ ์คํธ ํ ์ ์๋ ํ์ ์ฐฝ์ด ๋์ต๋๋ค.
ย
5๋จ๊ณ : ํ์ ์ฐฝ์ โTestโ ๋ฒํผ ํด๋ฆญ
ํ
์คํธํ 'Input Plugins'์ ๊ธฐ๋ณธ ๊ฐ 'All'๋ก ์ค์ ๋์ด ์์ต๋๋ค.
'Test' ๋ฒํผ์ ํด๋ฆญํ๋ฉด 'Configuration'์ ์
๋ ฅํ 'Input Plugin' ๋ชจ๋๋ฅผ ํ
์คํธํ ๊ฒฐ๊ณผ ๊ฐ์ด ์ถ๋ ฅ ๋ฉ๋๋ค.
ย
๋๋กญ ๋ค์ด ๋ฉ๋ด๋ฅผ ํด๋ฆญํ๊ฒ ๋๋ฉด 'Configuration'์ ์ ๋ ฅํ 'Input Pluginโ์ด ์กฐํ ๋ฉ๋๋ค.
ย
์ ๋ ฅ ์ฐฝ์ ์ด์ฉํ์ฌ ์ํ๋ 'Input Plugin'์ ๊ฒ์ํ ์ ์์ต๋๋ค.
ย
ํ ์คํธ๋ฅผ ์ํ๋ 'Input Plugin'์ ์ ํํ ํ ํ์ ์ฐฝ์ 'Test' ๋ฒํผ์ ๋๋ฅด๋ฉด ์ ํํ 'Input Plugin'์ ๋ํ ํ ์คํธ ๊ฒฐ๊ณผ ๊ฐ์ด ์ถ๋ ฅ ๋ฉ๋๋ค.
ย
โConfigurationโ์ ์์ ํ ํ โTESTโ ๋ฒํผ์ ํด๋ฆญํ๋๋ผ๋ โConfigurationโ์ ๋ฐ์๋์ง ์์ต๋๋ค.
์์ ํ โConfigurationโ์ ๋ฐ์ํ๋ ค๋ฉด โAPPLYโ ๋ฒํผ์ ํด๋ฆญํด์ผ ํฉ๋๋ค.