VMware 인프라를 모니터링 하기 위해 Influxdb, telegraf, loki, blockbox, grafana 모니터링 오픈소스로 구축하였다. grafana 모니터링 틀은 "https://grafana.com/grafana/dashboards/" 사이트에서 Vmware 모니터링 Json 파일을 추가하여 구축하였으며, 그 외에도 loki를 이용해 각 서버 이벤트 로그 모니터링과 blackbox로 SSL 인증서 모니터링도 같이 추가를 하였다.
- 오픈 소스 시계열 데이터베이스
- 시계열 데이터는 시간 순서대로 정렬된 데이터로, 주로 센서 데이터, 서버 및 네트워크 로그, 응용 프로그램 지표 등
참고문서) https://docs.influxdata.com/influxdb/v1
설치파일) https://www.influxdata.com/downloads
rpm -Uvh influxdb-1.7.10.x86_64.rpm
vi /etc/influxdb/influxdb.conf[meta] dir = "/home/influxdb/meta" retention-autocreate = true [data] dir = "/home/influxdb/data" wal-dir = "/home/influxdb/wal" series-id-set-cache-size = 100 [retention] enabled = true check-interval = "30m"chown influxdb. influxdb -R
systemctl start influxdb
- Telegraf는 오픈 소스 시계열 데이터 수집기
- InfluxData에서 개발한 Telegraf는 다양한 소스에서 데이터를 수집하고 이를 InfluxDB와 같은 시계열 데이터베이스에 전송
참고문서) https://docs.influxdata.com/telegraf/v1
설치파일) https://www.influxdata.com/downloads
rpm -Uvh telegraf-1.25.0-1.x86_64.rpm
mv telegraf.conf telegraf.conf_20231201
mv tel.conf telegraf.conf
vi telegraf.conf[[inputs.vsphere]] vcenters = [ "https://test.co.kr" ] username = "test@vsphere.local" password = "ABC" vm_metric_include = [ "cpu.demand.average", "cpu.idle.summation", "cpu.latency.average", "cpu.readiness.average", "cpu.ready.summation", "cpu.run.summation", "cpu.usagemhz.average", "cpu.used.summation", "cpu.wait.summation", "mem.active.average", "mem.granted.average", "mem.latency.average", "mem.swapin.average", "mem.swapinRate.average", "mem.swapout.average", "mem.swapoutRate.average", "mem.usage.average", "mem.vmmemctl.average", "net.bytesRx.average", "net.bytesTx.average", "net.droppedRx.summation", "net.droppedTx.summation", "net.usage.average", "power.power.average", "virtualDisk.numberReadAveraged.average", "virtualDisk.numberWriteAveraged.average", "virtualDisk.read.average", "virtualDisk.readOIO.latest", "virtualDisk.throughput.usage.average", "virtualDisk.totalReadLatency.average", "virtualDisk.totalWriteLatency.average", "virtualDisk.write.average", "virtualDisk.writeOIO.latest", "sys.uptime.latest", ] host_metric_include = [ "cpu.coreUtilization.average", "cpu.costop.summation", "cpu.demand.average", "cpu.idle.summation", "cpu.latency.average", "cpu.readiness.average", "cpu.ready.summation", "cpu.swapwait.summation", "cpu.usage.average", "cpu.usagemhz.average", "cpu.used.summation", "cpu.utilization.average", "cpu.wait.summation", "disk.deviceReadLatency.average", "disk.deviceWriteLatency.average", "disk.kernelReadLatency.average", "disk.kernelWriteLatency.average", "disk.numberReadAveraged.average", "disk.numberWriteAveraged.average", "disk.read.average", "disk.totalReadLatency.average", "disk.totalWriteLatency.average", "disk.write.average", "mem.active.average", "mem.latency.average", "mem.state.latest", "mem.swapin.average", "mem.swapinRate.average", "mem.swapout.average", "mem.swapoutRate.average", "mem.totalCapacity.average", "mem.usage.average", "mem.vmmemctl.average", "net.bytesRx.average", "net.bytesTx.average", "net.droppedRx.summation", "net.droppedTx.summation", "net.errorsRx.summation", "net.errorsTx.summation", "net.usage.average", "power.power.average", "storageAdapter.numberReadAveraged.average", "storageAdapter.numberWriteAveraged.average", "storageAdapter.read.average", "storageAdapter.write.average", "sys.uptime.latest", ] object_discovery_interval = "300s" insecure_skip_verify = truesystemctl start telegraf
- 오픈 소스 로그 집중형 스토리지 및 검색 도구
- Loki는 시계열 형식의 로그 데이터를 저장하고 쿼리하기 위한 솔루션
참고자료) https://grafana.com/docs/loki/latest
설치파일) https://github.com/grafana/loki/releases
나는 리눅스 전체 서버를 한 서버에 rsyslog *514 포트로 전송을 하고 해당 서버에서 loki를 설치하였다.
mv /home/master/loki-linux-amd64.zip .
unzip loki-linux-amd64.zip
./loki-linux-amd64 --version
systemctl status loki
mv /home/loki/loki-linux-amd64 .
vi /home/loki/config.yamlauth_enabled: false server: http_listen_port: 3100 grpc_listen_port: 9096 common: path_prefix: /tmp/loki storage: filesystem: chunks_directory: /tmp/loki/chunks rules_directory: /tmp/loki/rules replication_factor: 1 ring: instance_addr: 127.0.0.1 kvstore: store: inmemory schema_config: configs: - from: 2020-10-24 store: boltdb-shipper object_store: filesystem schema: v11 index: prefix: index_ period: 24h ruler: alertmanager_url: http://localhost:9093서비스 등록
[Unit]
Description=Like Prometheus, but for logs.
Documentation=https://github.com/grafana/loki[Service]
ExecStart=/usr/local/bin/loki-linux-amd64 -config.file /home/loki/config.yaml[Install]
WantedBy=multi-user.targetsystemctl enable loki
blackbox-exporter 라는 오픈소스를 가지고 각 서비스의 SSL 인증서 만료일자 모니터링을 구축
- Blackbox Exporter는 외부 서비스 웹 사이트의 가용성을 모니터링하는 데 사용
- HTTP, HTTPS, DNS, TCP, ICMP 등과 같은 다양한 프로토콜을 사용하여 서비스의 가용성을 테스트하고 메트릭을 수집
useradd --no-create-home --shell /bin/false blackbox_exporter mv /home/master/blackbox_exporter-0.21.0.linux-amd64.tar.gz . tar xvzf blackbox_exporter-0.21.0.linux-amd64.tar.gz mv blackbox_exporter-0.21.0.linux-amd64 blackbox cd /etc/systemd/system/ cp /etc/systemd/system/blackblox . mv blackbox blackbox.service /usr/local/bin/blackbox_exporter --config.file /home/blackbox/blackbox_exporter/blackbox.yml systemctl start blackbox systemctl enable blackbox vi prometheus.yml # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["localhost:9090"] - job_name: blackbox metrics_path: /probe params: module: [http_2xx] static_configs: - targets: #### test - https://www.naver.com
telegraf의 수집된 메트릭을 influxdb에 DB를 쌓고 grafana에서 그래프 출력