Prometheus(五):监控物理机并进行数据展示

1 ipmi export安装配置

1.1 ipmi exporter简介

ipmi exporter是用来收集物理机信息的一个exporter,有两种收集方式,一种是安装在Prometheus server上,来进行远程收集,并把数据发送给Prometheus;另一种是安装在远程物理机上,收集单台服务器的信息发送给Prometheus。

前面提到使用 vmware exporter 收集VMware Vsphere的信息,主要是收集Vsphere上创建的虚拟机的信息等相关信息。如果想要监控 Vsphere 所在物理机是否宕机,则需要使用 impi exporter来监控

参考文档:
https://github.com/srkaviani/prometheus_exporters/tree/main/ipmi_exporter
https://github.com/prometheus-community/ipmi_exporter/tree/master
https://github.com/prometheus-community/ipmi_exporter/
ipmi exporter下载:https://github.com/prometheus-community/ipmi_exporter/releases
freeipmi参数文档:https://github.com/elitak/freeipmi

1.2 安装

注意

  • 1.此方法的ipmi exporter是安装在Prometheus server所在服务器上,来收集远程物理机的ipmi信息的
  • 2.此方法依赖freeipmi来收集ipmi信息

环境:

  • freeipmi:1.6.9
  • go:1.11.5(1.81未测试)
  • ipmi exporter:1.6.1(链接:https://github.com/prometheus-community/ipmi_exporter/releases/download/v1.6.1/ipmi_exporter-1.6.1.linux-amd64.tar.gz )
# 安装
# centos安装
# 安装freeipmi
yum -y install gcc libgcrypt-devel  
wget https://ftp.gnu.org/gnu/freeipmi/freeipmi-1.6.9.tar.gz
tar -xvf freeipmi-1.6.9.tar.gz
cd freeipmi-1.6.9/
./configure
make
make install
# 建议安装
yum  -y install ipmitool

vim /etc/profile
export FREEIPMI_PATH=/usr/local/freeipmi/
export FREEIPMI_BIN=$FREEIPMI_PATH/sbin/
export PATH=$PATH:$FREEIPMI_BIN
source /etc/profile

# Ubuntu安装
sudo find / -name freeipmi|xargs rm -rf
apt-get remove freeipmi
sudo dpkg --get-selections | grep freeipmi
sudo apt-get --purge remove  freeipmi
# 安装freeipmi
sudo apt update  
sudo apt -y install build-essential libgcrypt-dev
# 注意:Ubuntu22.04不使用libgcrypt11-dev,而是用libgcrypt-dev
# 不建议使用apt安装:sudo apt -y install freeipmi
wget -P /usr/local/src/ https://ftp.gnu.org/gnu/freeipmi/freeipmi-1.6.9.tar.gz
cd /usr/local/src/
tar -xvf freeipmi-1.6.9.tar.gz
cd freeipmi-1.6.9/
./configure --prefix=/usr/local/freeipmi
make
make install
# 建议安装:
apt -y install ipmitool


# go环境安装
wget -c https://storage.googleapis.com/golang/go1.11.5.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.11.5.linux-amd64.tar.gz 

# centos配置环境变量
vim /etc/profile.d/go.sh
export PATH=$PATH:/usr/local/go/bin
source /etc/profile.d/go.sh

# Ubuntu配置环境变量
vim ~/.bashrc
export FREEIPMI_PATH=/usr/local/freeipmi
export PATH=$PATH:$FREEIPMI_PATH/sbin:/usr/local/go/bin
# 刷新使环境变量生效
source  ~/.bashrc


# ipmi exporter安装
wget -P /usr/local/src/ https://github.com/prometheus-community/ipmi_exporter/releases/download/v1.6.1/ipmi_exporter-1.6.1.linux-amd64.tar.gz
cd /usr/local/src/
tar -zxf ipmi_exporter-1.6.1.linux-amd64.tar.gz
mv ipmi_exporter-1.6.1.linux-amd64 /usr/local/ipmi_exporter


# freeipmi使用源码包安装后,可以做的测试:
ipmimonitoring -h xx.xx.xx.xx -u xxxx -p xxxx -a STRAIGHT_PASSWORD_KEY -l admin -D LAN_2_0
ipmimonitoring -h xx.xx.xx.xx -u xxxx -P -a STRAIGHT_PASSWORD_KEY -l admin -D LAN_2_0
bmc-info -h xx.xx.xx.xx -u xxxx -p xxxx -a STRAIGHT_PASSWORD_KEY -l admin -D LAN_2_0

ipmitool -I lanplus -H xx.xx.xx.xx -U xxxx -P xxxx sensor get "CPU1 DTS"
ipmitool -I  lanplus -H xx.xx.xx.xx -U xxxx -P xxxx sol info
ipmitool -I  lanplus -H xx.xx.xx.xx -U xxxx -P xxxx dcmi power reading

freeipmi参数内容可参考文档:https://www.gnu.org/software/freeipmi/manpages/man5/freeipmi.conf.5.html
freeipmi的参数说明(不包括ipmitool,这些参数都可以

在/usr/local/freeipmi/etc/freeipmi/freeipmi.conf文件中设置):

  • -h:远程主机IP
  • -u:用户名
  • -p:密码
  • -P:回车后输入,不需要执行写在命令行里面
  • -a:输入密码的类型,支持:None、STRAIGHT_PASSWORD_KEY(输入正常的密码,无加密类型)、MD5、MD2
  • -l:权限级别,支持:USER, OPERATOR, ADMIN
  • -D:指定要使用的驱动程序类型。 当前可用的带外驱动程序是 LAN 和 LAN_2_0,它们 分别执行 IPMI 1.5 和 IPMI 2.0。当前可用的 带内驱动程序是KCS,SSIF,OPENIPMI,SUNMC和INTELDCMI。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.2 创建yaml文件

官方文档ipmi_remote.yml地址:https://github.com/srkaviani/prometheus_exporters/blob/main/ipmi_exporter/ipmi_remote.yml

vim /usr/local/ipmi_exporter/ipmi_remote.yml
# 根据需要进行修改
modules:
        default:
                user: "xxxx"
                pass: "xxxx"
                driver: "LAN_2_0"
                privilege: "admin"
                timeout: 10000
                collectors:
                - bmc
                - ipmi
                - chassis
                exclude_sensor_ids:
                - 2
                - 29
                - 32
                - 50
                - 52
                - 55
        dcmi:
                # Use these settings when scraped with module=dcmi.
                user: "xxxx"
                pass: "xxxx"
                privilege: "admin"
                driver: "LAN_2_0"
                collectors:
                - dcmi
        thatspecialhost:
                # Use these settings when scraped with module=thatspecialhost.
                user: "xxxx"
                pass: "xxxx"
                privilege: "admin"
                driver: "LAN"
                collectors:
                - ipmi
                - sel
                workaround_flags:
                - discretereading
                custom_args:
                        ipmi:
                        - "--bridge-sensors"
        advanced:
                # Use these settings when scraped with module=advanced.
                user: "xxxx"
                pass: "xxxx"
                privilege: "admin"
                driver: "LAN"
                collectors:
                - ipmi
                - sel
                collector_cmd:
                        ipmi: sudo
                        sel: sudo
                custom_args:
                        ipmi:
                        - "ipmimonitoring"
                        sel:
                        - "ipmi-sel"

#  使用上述内容即可,下面的可以进行参考
modules:
    default:
        user: "xxxx"
        pass: "xxxx"
        privilege: "admin"
        driver: "LAN_2_0"
    172.170.240.1:
        user: "xxxx"
        pass: "xxxx"
        privilege: "admin"
        driver: "LAN_2_0"
        collectors:
        - bmc
        - ipmi
        - dcmi
        - chassis
        - sel
        custom_args:
            bmc:
            - "bmc-info"
            ipmi:
            - "ipmimonitoring"
            dcmi:
            - "ipmi-dcmi"
            chassis:
            - "ipmi-chassis"
            sel:
            - "ipmi-sel"

参数说明:
1.modules: cloudatlas模块配置,这里配置的是 IPMI 采集器。
2.default: 默认配置,这里包含了一些通用的参数。
3.user: IPMI 用户名。
4.pass: IPMI 密码。
5.privilege: IPMI 权限,这里设置为 “admin”,表示管理员权限。其他可能的权限包括 “user”(用户权限)和 “operator”(操作员权限)。
6.driver: IPMI 驱动,这里设置为 “LAN_2_0”,表示使用网络(LAN)驱动。其他可能的驱动包括 “sci”(串行接口)和 " virtueio"(虚拟化接口)。
7.collectors: 这个部分列出了要收集的数据项(metric collectors)。在这个例子中,配置了以下数据项:

  • bmc: 基础管理控制器(BMC)数据。
  • ipmi: IPMI 传感器数据。
  • dcmi: 直接核心内存接口(DCMI)数据。
  • chassis: 机箱数据。
  • sel: 系统事件日志(System Event Log)数据。
    注意:-D处如果不指定为LAN_2_0,可能会报错:authentication type unavailable for attempted privilege level

1.3 systemd启动配置 ipmi_exporter.service

systemd启动配置 /etc/systemd/system/ipmi_exporter.service

vim /etc/systemd/system/ipmi_exporter.service

[Unit]
Description=ipmi_exporter
Wants=network-online.target
After=network-online.target

StartLimitIntervalSec=500
StartLimitBurst=5

[Service]
User=root
Group=root
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/ipmi_exporter/ipmi_exporter \
  --config.file=/usr/local/ipmi_exporter/ipmi_remote.yml \
  --web.listen-address=0.0.0.0:9290 \
  --freeipmi.path=/usr/local/freeipmi/sbin/

[Install]
WantedBy=multi-user.target

1.4 启动 ipmi_exporter 服务

systemctl daemon-reload
systemctl restart ipmi_exporter.service
systemctl enable --now ipmi_exporter
systemctl status ipmi_exporter.service

1.5 Prometheus配置

创建target:

#
mkdir /usr/local/prometheus/sd_file/ipmi
vim /usr/local/prometheus/sd_file/ipmi/ipmi_targets_240.yml

- targets:
  - xx.xx.xxx.xx
  - xx.xx.xxx.xx
  labels:
    job: ipmi_exporter_240

修改Prometheus配置文件

cat prometheus.yml

  - job_name: ipmi_exporter_240
    params:
      module: ['default']
    scrape_interval: 1m
    scrape_timeout: 30s
    metrics_path: /ipmi
    scheme: http
    file_sd_configs:
    - files:
      - /usr/local/prometheus/sd_file/ipmi_targets_240.yml
      refresh_interval: 5m
    relabel_configs:
    - source_labels: [__address__]
      separator: ;
      regex: (.*)
      target_label: __param_target
      replacement: ${1}
      action: replace
    - source_labels: [__param_target]
      separator: ;
      regex: (.*)
      target_label: instance
      replacement: ${1}
      action: replace
    - separator: ;
      regex: .*
      target_label: __address__
      # impi exporter安装服务器IP
      replacement: xx.xx.xx.xx:9290
      action: replace

1.6 Grafana配置

导入模板:15765
模板地址:https://grafana.com/grafana/dashboards/15765-ipmi-exporter/

可根据需要修改模板

1.7 IPMI说明

1、IPMI

IPMI(Intelligent Platform Management Interface)
智能平台管理接口 (IPMI) 是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法。IPMI 信息通过基板管理控制器 (BMC)(位于 IPMI 规格的硬件组件上)进行交流。使用低级硬件智能管理而不使用操作系统进行管理,具有两个主要优点: 首先,此配置允许进行带外服务器管理;其次,操作系统不必负担传输系统状态数据的任务。IPMI的核心是一个专用芯片/控制器(叫做服务器处理器或基板管理控制器(BMC)),其并不依赖于服务器的处理器、BIOS或操作系统来工作,可谓非常地独立,是一个单独在系统内运行的无代理管理子系统。简单来说,ipmi可以理解为管理物理服务器硬件的一个模块。
IPMI功能:

  • 监控服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等;
  • 可以通过串口、Modem以及Lan等远程环境管理服务器系统,如远程开关机;

2、ipmitool

ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能.

ipmitool –I open sensor list 
#命令可以获取传感器中的各种监测值和该值的监测阈值,包括(CPU温度,电压,风扇转速,电源调制模块温度,电源电压等信息。
ipmitool –I open sensor thresh 
#设置ID值等于id的监测项的各种限制值。
ipmitool –I open chassis status 
#查看底盘状态,其中包括了底盘电源信息,底盘工作状态等
ipmitool –I open chassis restart_cause 
#查看上次系统重启的原因
远程电源管理
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power off 
# 关机,直接切断电源
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power soft 
# (软关机,即如同轻按一下开机按钮)
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power on 
# (硬开机)
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power reset 
# (硬重启)
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power status 
# (获取当前电源状态)
ipmitool -I lanplus -H $oob_ip -U root -P 密码 chassis power cycle
(注意power cycle 和power reset的区别在于前者从掉电到上电有1秒钟的间隔,而后者是很快上电)
远程引导

当次生效

ipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev pxe 
# (网络引导)
ipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev disk 
# (硬盘引导)
ipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev cdrom 
#(光驱引导)
读取系统状态类
ipmitool sensor list   #显示系统所有传感器列表
ipmitool fru list   #显示系统所有现场可替代器件的列表
ipmitool sdr list   #显示系统所有SDRRepository设备列表 
ipmitool  pef list      #显示系统平台时间过滤的列表
系统日志类
ipmitool sel elist   #显示所有系统事件日志
ipmitool sel clear   #删除所有系统时间日志
ipmitool sel delete ID     #删除第ID条SEL
ipmitool sel time get      #显示当前BMC的时间
ipmitool sel time set  XXX  #设置当前BMC的时间
启动设置类
ipmitool chassis bootdev bios  #重启后停在BIOS 菜单
ipmitool chassis bootdev pxe #重启后从PXE启动
系统相关的命令
ipmitool mc info       #显示BMC版本信息
ipmitool bmc reset cold      #BMC 热启动
ipmitool bmc reset warmBMC    #冷启动
网络接口相关命令
ipmitool lan print 1    #显示channel1的网络配置信息
ipmitool lan set  1ipaddr 10.32.2.2    #设置channel1的IP地址
ipmitool lan  set 1 netmask 255.255.0.0   #设置channel1的netmask
ipmitool lan set 4 defgw ipaddr255.255.0.254    #设置channel4的网关
ipmitool lan set  2 defgw macaddr  <macaddr> #设置channel2的网关mac address
ipmitool lan set 2 ipsrc dhcp         #设置channel2的ip 源在DHCP
ipmitool lan set 3 ipsrc static        #设置channel2的ip是静态获得的
通道相关命令
ipmitool channel info #显示系统默认channel
ipmitool channel  authcap channel-number privilege  #修改通道的优先级别
ipmitool channel  getaccess channel-number user-id #读取用户在通道上的权限
ipmitool channel setacccess channel-number  user-id callin=on ipmi=on link=onprivilege=5   #设置用户在通道上的权限
看门狗相关命令
ipmitool  mc watchdog get #读取当前看门狗的设置
ipmitool watchdog  off   #关掉看门狗
ipmitool watchdog reset  #在最近设置的计数器的基础上重启看门狗
用户管理相关命令
ipmitool user list chan-id   #显示某通道上的所有用户
ipmitool set password <user id>[<password>] #修改某用户的密码
ipmitool disable      <user id>  #禁止掉某用户
ipmitool enable       <user id>  #使能某用户
ipmitool priv         <user id> <privilegelevel> [<channel number>] #修改某用户在某通道上的权限
ipmitool test         <user id> <16|20>[<password]> #测试用户
  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值