버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

목차

collectd 설치

코드 블럭
languagebash
themeEmacs
sudo dnf -y install collectd collectd-utils collectd-ipmi

collectd-ipmi.te

collectd-ipmi.pp

코드 블럭
semodule -i collectd-ipmi.pp
코드 블럭
journalctl -xe
sealert -l xxxx
코드 블럭
cat /var/log/audit/audit.log | audit2allow -M collectd-ipmi

te → mod → pp

(별표 표시) https://relativkreativ.at/articles/how-to-compile-a-selinux-policy-package


ipmi 장치 그룹 사용 권한 변경

ipmi 장치는 root 계정만 이용할 수 있다.

collectd 에서 전원 정보를 읽어오려면, 특별한 스크립트가 필요하기 때문에, collectd 그룹을 만들고 이 그룹에서 사용할 수 있도록 설정한다.


collectd 그룹을 생성한다

코드 블럭
languagebash
themeEmacs
sudo groupadd collectd


udev 파일을 생성한다

code
코드 블럭
themeEmacs
title/lib/udev/rules.d/52-collectd-ipmi.rules
KERNEL=="ipmi*", MODE="660", GROUP="collectd"


재부팅한다. 재부팅 없이 넘어가려면, 다음 명령어를 입력한다. 

코드 블럭
languagebash
themeEmacs
sudo chmod 660 /dev/ipmi*
sudo chown root:collectd /dev/ipmi*


사용권한이 변경되어 있는 것을 확인한다

코드 블럭
themeEmacs
# ls -alRZ /dev/ipmi*
crw-rw----. 1 root collectd system_u:object_r:ipmi_device_t:s0    /dev/ipmi0

https://github.com/influxdata/telegraf/issues/3332

...


보안 컨텍스트 적용

selinux 는 collectd 가 /dev/ipmi 장치에 접근하는 것을 막는다.

policy package ( collectd-ipmi.tecollectd-ipmi.pp ) 파일을 업로드 한 후, 다음 명령어를 입력하여 보안컨텍스트를 적용한다.

코드 블럭
languagebash
themeEmacs
sudo semodule -i collectd-ipmi.pp


순간 소비전력 확인 스크립트 업로드

collectd-power 스크립트를 업로드 후 실행권한을 주고 root 계정에서 실행하여 동작함을 확인한다.

IPMI / DCMI 를 통해 소비전력을 읽어들이는 기능이 없는 경우 이용할 수 없다.

코드 블럭
languagebash
themeEmacs
title/etc/ipmicollectd-power
#!/bin/bash

HOSTNAME="${COLLECTD_HOSTNAME:-localhost}"
INTERVAL="${COLLECTD_INTERVAL:-510}"

while sleep "$INTERVAL"; do
  VALUE=$( /usr/bin/ipmitool dcmi power reading 2>&1 | grep -i instantaneous | sed -e 's/[^0-9]//g' )
  #echo "PUTVAL \"$HOSTNAME/grep_log/gauge-stuff\" interval=$INTERVAL N:$VALUE"
  echo "PUTVAL \"$HOSTNAME/dcmiipmi/power-Instantaneous Power\" interval=$INTERVAL N:$VALUE"
done

https://collectd.org/wiki/index.php/Plugin:Exec

https://github.com/jabl/collectd-plugin-dcmi

https://collectd.org/wiki/index.php/Plugin:IPMI

https://ibigbug.online/dell-r720-poweredge-server-hardware-monitoring

https://www.elastic.co/guide/en/logstash/current/plugins-codecs-collectd.html

...


코드 블럭
languagebash
themeEmacs
# chmod 755 /etc/collectd-power
# sudo /etc/collectd-power
PUTVAL "localhost/ipmi/power-Instantaneous Power" interval=10 N:199
PUTVAL "localhost/ipmi/power-Instantaneous Power" interval=10 N:200


collectd 설정 파일 적용


코드 블럭
themeEmacs
title/etc/collectd.conf
LoadPlugin load
LoadPlugin memory
Include "/etc/collectd.d"


10초 주기로 측정하도록 설정되었다

코드 블럭
themeEmacs
title/etc/collectd.d/interval.conf
Interval 10


코드 블럭
themeEmacs
title/etc/collectd.d/ipmi-sensors.conf
LoadPlugin ipmi
<Plugin ipmi>
<Instance "local">
    #Sensor "FAN1"
    #Sensor "FAN2"
    IgnoreSelected false
    NotifySensorAdd false
    NotifySensorRemove true
    NotifySensorNotPresent false
    NotifyIPMIConnectionState false
    SELEnabled false
    SELClearEvent false
</Instance>
</Plugin>


코드 블럭
themeEmacs
title/etc/collectd.d/ipmi-power.conf
LoadPlugin exec
<Plugin exec>
    Exec "nobody:collectd" "/etc/collectd-power"
</Plugin>


원격지의 logstash 서버의 IP와 포트를 입력한다.

코드 블럭
themeEmacs
title/etc/collectd.d/remote.conf
LoadPlugin network
<Plugin network>
    Server "192.168.0.100" "25826"
</Plugin>


hostname 에 자산번호를 함께 기입하면 로그를 분석할 때 유용하다.

코드 블럭
themeEmacs
title/etc/collectd.d/hostname.conf
Hostname "2020000614:vmhost01"


collectd 설정 파일 적용

코드 블럭
languagebash
themeEmacs
sudo systemctl enable collectd.service
sudo systemctl start collectd.service