[모니터링] Grafana Vmware 모니터링

김봉남·2024년 2월 16일

모니터링

목록 보기
8/9
post-thumbnail

VMware 인프라를 모니터링 하기 위해 Influxdb, telegraf, loki, blockbox, grafana 모니터링 오픈소스로 구축하였다. grafana 모니터링 틀은 "https://grafana.com/grafana/dashboards/" 사이트에서 Vmware 모니터링 Json 파일을 추가하여 구축하였으며, 그 외에도 loki를 이용해 각 서버 이벤트 로그 모니터링과 blackbox로 SSL 인증서 모니터링도 같이 추가를 하였다.

influxdb

influxdb 설치

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

telegraf 설치

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 = true

systemctl start telegraf

loki

나는 리눅스 전체 서버를 한 서버에 rsyslog *514 포트로 전송을 하고 해당 서버에서 loki를 설치하였다.

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.yaml

auth_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.target

systemctl enable loki

blackbox-exporter 라는 오픈소스를 가지고 각 서비스의 SSL 인증서 만료일자 모니터링을 구축

blackbox-exporter

  • 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에서 그래프 출력

profile
남자다

0개의 댓글