sudo dnf -y install collectd collectd-utils collectd-ipmi |
ipmi 장치는 root 계정만 이용할 수 있다.
collectd 에서 전원 정보를 읽어오려면, 특별한 스크립트가 필요하기 때문에, collectd 그룹을 만들고 이 그룹에서 사용할 수 있도록 설정한다.
collectd 그룹을 생성한다
sudo groupadd collectd |
udev 파일을 생성한다
KERNEL=="ipmi*", MODE="660", GROUP="collectd" |
재부팅한다. 재부팅 없이 넘어가려면, 다음 명령어를 입력한다.
sudo chmod 660 /dev/ipmi* sudo chown root:collectd /dev/ipmi* |
사용권한이 변경되어 있는 것을 확인한다
# ls -alRZ /dev/ipmi* crw-rw----. 1 root collectd system_u:object_r:ipmi_device_t:s0 /dev/ipmi0 |
selinux 는 collectd 가 /dev/ipmi 장치에 접근하는 것을 막는다.
policy package ( collectd-ipmi.te , collectd-ipmi.pp ) 파일을 업로드 한 후, 다음 명령어를 입력하여 보안컨텍스트를 적용한다.
sudo semodule -i collectd-ipmi.pp |
collectd-power 스크립트를 업로드 후 실행권한을 주고 root 계정에서 실행하여 동작함을 확인한다.
IPMI / DCMI 를 통해 소비전력을 읽어들이는 기능이 없는 경우 이용할 수 없다.
#!/bin/bash
HOSTNAME="${COLLECTD_HOSTNAME:-localhost}"
INTERVAL="${COLLECTD_INTERVAL:-10}"
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/ipmi/power-Instantaneous Power\" interval=$INTERVAL N:$VALUE"
done |
# 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 |
LoadPlugin load LoadPlugin memory Include "/etc/collectd.d" |
10초 주기로 측정하도록 설정되었다
Interval 10 |
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> |
LoadPlugin exec
<Plugin exec>
Exec "nobody:collectd" "/etc/collectd-power"
</Plugin> |
원격지의 logstash 서버의 IP와 포트를 입력한다.
LoadPlugin network
<Plugin network>
Server "192.168.0.100" "25826"
</Plugin> |
hostname 에 자산번호를 함께 기입하면 로그를 분석할 때 유용하다.
Hostname "2020000614:vmhost01" |
collectdctl 프로그램을 사용할 수 있도록 설정한다. collectdctl 는 collectd 동작유무를 확인할 수 있는 프로그램이다.
LoadPlugin unixsock
<Plugin unixsock>
SocketFile "/var/run/collectd-unixsock"
SocketGroup "collectd"
SocketPerms "0660"
DeleteSocket false
</Plugin> |
sudo systemctl enable collectd.service sudo systemctl start collectd.service |
하기와 같은 정보들이 수집되어 remote.conf 에 기술된
# sudo collectdctl listval 2020000614:vmhost01/load/load 2020000614:vmhost01/memory/memory-buffered 2020000614:vmhost01/memory/memory-cached 2020000614:vmhost01/memory/memory-free 2020000614:vmhost01/memory/memory-slab_recl 2020000614:vmhost01/memory/memory-slab_unrecl 2020000614:vmhost01/memory/memory-used 2020000614:vmhost01/ipmi/fanspeed-FAN1 fan_cooling (29.1) 2020000614:vmhost01/ipmi/fanspeed-FAN2 fan_cooling (29.2) 2020000614:vmhost01/ipmi/fanspeed-FAN3 fan_cooling (29.3) 2020000614:vmhost01/ipmi/fanspeed-FAN4 fan_cooling (29.4) 2020000614:vmhost01/ipmi/power-Instantaneous Power 2020000614:vmhost01/ipmi/temperature-CPU Temp processor (3.1) ... |