Linux 系统运维工具 OpenLMI

Posted Linux小管家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 系统运维工具 OpenLMI相关的知识,希望对你有一定的参考价值。

前言
OpenLMI 是一个 Linux 平台的服务配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack。当你去管理 10 台服务器,你肯定会说小意思。没有任何压力。 当你去管理 50 台服务器,你可能也会说没问他。当你去管理 1000+ 台服务器呢?你是不是就头痛了,不同的硬件,不同的内核版本,不同的软件版本。为了提升效率,OpenLMI 就派上了大用场。OpenLMI 可管理网络监控、用户、用户组、软件包、系统服务、软件包安装删除等。它是是通过 Python 语言开发。相比较其它同类产品来说,OpenLMI 还是非常年轻的,本文以最新 Fedora 21 为平台介绍 OpenLMI 的部署过程和使用方法。
OpenLMI 就是开放式的 Linux 管理基础架构。OpenLMI 是开源项目使用 WBEM 标准的 Linux 系统管理。WBEM 即 Web-Based Enterprise Management,WBEM 由 DMTF(Distributed Management Task Force,分布式管理任务组)在许多厂商的帮助下创立,目标是为管理企业环境开发一个标准的接口集。WBEM 模型最关键的部分是它的数据模型(或描述和定义对象的方式)、编码规范(Encoding Specification),以及在客户端和服务器端之间传输数据的模式。WBEM (Web-Based Enterprise Management) 作为一项业界倡议,起始于 1996 年,它规范了企业网络中受管资源的描述与使用。



OpenLMI 功能
OpenLMI 提供了一套抽象层 API,将系统管理的相关工作任务,以及底层系统运作的复杂程序,统一起来。OpenLMI 里面提供了一整套的代理程序包括:控制器、客户端程序与命令行工具码。其中代理程序可安装在那些需要控管的服务器或虚拟 机上,然后再由 OpenLMI 控制器来管理这些代理程序,并提供相关接口,而客户端程序的作用是,经由控制器来调取代理程序,可利用命令行接口使用 C/C++、Python 或 Java 等语言。oenlmi 项目为管理 Linux 系统提供常用的基础设施。它还可让用户配置、管理并监控硬件、操作系统及系统服务。OpenLMI 旨在简化任务配置及产品服务器管理。OpenLMI 为 Linux 提供常用管理接口。OpenLMI 可让用户执行以下操作:
配置、管理和监控服务器及虚拟机运行情况;
配置、管理和监控本地或者远程操作系统;
配置、管理及监控本地或者远程的存储和网络;
使用 C/C++、Python、Java 或者命令行界面调用系统管理。
图 1. OpenLMI 的结构示意图

OpenLMI 的结构示意图
通过图 1 可以了解到 OPenLMI 主要包括如下几个部分:
一套代理程序,又称为 LMI Providers 或 CIM Providers,可安装在需要监控的服务器上。用来查询,修改和监控系统运行情况。
一组标淮化的远程 API,又称 OpenLMI object broker,负责管理所有的代理程序,并为它们提供存取接口。
一个标淮通讯基础设施(使用 https 连接的 XML 技术),OpenLMI 被认为是安全性,因为它使用 TLS(HTTPS)进行加密通信。
LMIshell,这是一个客户端客户端程序,它的作用是通过 OpenLMI object broker 來调用 LMI Providers。这个客户端通过使用 WBEM + HTTPS 协议访问 CIMOM。其中 LMIshell 客户端系统包括:
一组命令行工具和 lmi 交互命令
脚本工具(基于 Python 的 lmishell)
其他语言(包括 C/C++、Java 等)组成结构如图 2
图 2. LMIshell 组成结构

Linux 系统运维工具 OpenLMI

LMIshell 组成结构

主要 Linux 发行版本对于 OpenLMI 的支持情况
Fedora 是 OpenLMI 的主要开发平台。从 Fedora 18 这个版本开始支持,推荐使用 Fedora 21 及其之后的版本,它们可以提供所有功能组件。RHEL 和 CentOS,从版本 7 开始支持,这两个发行版本可以提供大部分功能组件。用户需要通过 epel 软件源安装 openlmi 软件包。SuSE Linux 从版本 12 开始支持,可以提供一部分功能组件。Debian 和 Ubuntu 这两个发行版本目前不支持。



说明:lmi 交互模式下支持如下子命令:
file : 文件系统等数据格式的管理
help :打印帮助信息
hwinfo : 显示收集的硬件信息。
system : 显示收集的系统信息。
sssd :sssd 系统服务管理功能。
selinux: selinux 管理。
group :用户组管理功能。
service : 系统服务管理。
storage: 基本的存储设备的信息。
sw : 系统软件管理。
net:网络服务管理
power :系统电源管理
user :用户管理
journald:系统日志
realmd: 管理 AD 或 Kerberos 域成员。
locale; 设置键盘布局、语言、时区、时间等功能。
说明 : 不同的 Linux 发行版本支持的子命令数量有差异,其中数量最多功能最全的是 Fedora 21。用户在终端下输入 lmi 进入交互环境,然后输入“?”或者 help 命令可以得到子命令列表和其他帮助信息见图 3 。图 3 输入“?”或者 help 命令可以得到子命令列表
图 3. 输入 lmi

输入 lmi



lmi 命令行应用实例
查看主机硬件配置
要查看主机硬件情况,对于本地主机使用交互模式,在 lmi> 提示符下输入 hwinfo 子命令即可。命令输出结果见图 4
图 4. 查看主机硬件情况


查看主机硬件情况

图 3 显示这个命令收集的硬件信息包括:制造商名称或配置的主机名,服务器的型号名称,CPU 类型,CPU 插槽数量,CPU 核心,CPU 的工作频率、cpu 线程数量、主板型号、内存容量、内存频率、内存插槽信息、磁盘类型等信息。 状态颜色说明:在图 3 中看到 SMART Status 状态显示是 OK,所以显示为绿色,如果显示为黄色表示状态不明确(就是说系统没有检测的具体的状态),如果显示为红色的 error 表示该模块没有正常工作。 另外如果是收集远程主机硬件情况,要输入用户和密码。下面是一个例子,这里使用 -h 参数,然后输入远程主机名称即可,清单 1 是操作过程和输出界面。
清单 1. 查看主机硬件情况
lmi -h cyq
lmi> hwinfo
username: pegasus
password:
Hostname: centos70n02.linux.net
Chassis Type: SMBios Reseved
Manufacturer: HP
Model: Not Specified (ProLiant DL385p Gen8)
Serial Number: CN7230040Z
Asset Tag: CN7230040Z
Virtual Machine:N/A
Motherboard info: N/A
CPU: AMD Opteron(TM) Processor 6238
Topology: 2 cpu(s), 24 core(s), 24 thread(s)
Max Freq: 3500 MHz
Arch: x86_64
Mmory: 16.0 GB
Modules: 8.0 GB, DDR3 (DIMM), 1333 MHz, HP, Not Specified
8.0 GB, DDR3 (DIMM), 1333 MHz, HP, Not Specified
Slots: 2 used, N/A total
说明:hwinfo 命令其他主要参数包括:
hwinfo system :获取主机名称。
hwinfo motherboard:获取主板信息。
hwinfo cpu:获取 CPU 信息。
hwinfo memory:获取内存信息。
hwinfo [all] :获取所有信息。
hwinfo pci:获取 pci 插槽信息。
hwinfo disks: 获取磁盘信息。

查看主机软件系统信息
OpenLMI 不仅可以收集硬件信息,还可以收集本地和远程主机操作系统的系统概要。收集内容包括:操作系统版本信息,防火墙配置,网络接口信息、内核版本、时区、SElinux 状态、日志系统、系统语言等。


下面是一个例子,清单 2 就是操作过程和输出界面。

清单 2. 查看主机软件系统信息
lmi>system
Host: localhost.localdomain
Hardware: To Be Filled By O.E.M.
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
CPU: Intel(R) Celeron(R) CPU G1820 @ 2.70GHz, x86_64 arch
CPU Topology: 1 cpu(s), 2 core(s), 2 thread(s)
Memory: 8.0 GB
Disk Space: 65.7 GB total, 57.2 GB free
OS: Fedora release 21 (Twenty One)
Kernel: 3.19.3-200.fc21.x86_64
Language: zh_CN.UTF-8
Time Zone: Asia/Shanghai (NTP is on)
SELinux: on (Permissive)
Firewall: off
Logging: on (journald)


Networking:
NIC 1
Name: wlp0s26u1u1
Status: In Service
IPv4 Address: 192.168.1.101
IPv6 Address: fe80: 16e6: e4ff: fe29: 6c16
MAC Address E6: E4:29:6C:16

管理主机的服务运行情况
lmi 的 service 子命令可以用来查看、启动、停止、重新启动本地和远程服务。下面是两个例子。 查看运程主机服务运行情况,使用如下命令:
lmi> service show httpd.service
Name=httpd
Caption=The Apache HTTP Server
Enabled=No
Status=Running

停止一个本地服务,使用如下命令:
lmi> service stop sshd.service
说明:service 命令其他主要参数包括:
list 打印所有服务列表
show 显示服务运行情况
start 启动一个服务
stop 停止一个服务
restart 重新启动一个服务
reload 重新加载一个服务配置

系统软件管理
sw 命令可以用来查看、搜索、安装、升级、删除本地和远程的软件包。下面是几个例子:
查看一个软件包详情,使用如下命令:
lmi> sw show pkg php
安装一个软件包,使用如下命令:
lmi> sw install httpd
升级一个软件包,使用如下命令:
lmi> sw update nmap
删除一个软件包,使用如下命令:
lmi> sw remove nmap
存储管理
lmi 的 storage 子命令用来进行存储设置,它的参数比较多,这里笔者介绍几个常用的例子 , 查看存储设备列表

使用如下命令:lmi> storage list,清单 3 就是操作过程和输出界面。
清单 3.查看存储设备列表
lmi>storage list
Name Size Format
/dev/sda 8589934592 MS-DOS partition table
/dev/sr0 58120192 iso9660
/dev/mapper/fedora-root 7159676928 ext4
/dev/mapper/fedora-swap 859832320swap
/dev/sda1 524288000ext4
/dev/sda2 8064598016 physical volume (LVM)

使用树形结构显示存储设备列表,使用如下命令:lmi> storage tree,清单 4 就是操作过程和输出界面。
清单 4..使用树形结构显示存储设备列表
lmi> storage tree
Name Size Format
/dev/sda 8589934592 MS-DOS partition table
├─ /dev/sda1 524288000ext4
└─ /dev/sda2 8064598016 physical volume (LVM)
└─ fedora 8061452288 volume group (LVM)
├─ /dev/mapper/fedora-root 7159676928 ext4
└─ /dev/mapper/fedora-swap 859832320swap

查看某一个存储设备详情,清单 5 就是操作过程和输出界面。
清单 5.查看某一个存储设备详情
lmi>storage show /dev/disk/by-id/ata-VBOX_HARDDISK_VB289545a2-5d00c206-part1
/dev/disk/by-id/ata-VBOX_HARDDISK_VB289545a2-5d00c206-part1:
Name Value
Type Partition
DeviceID /dev/disk/by-id/ata-VBOX_HARDDISK_VB289545a2-5d00c206-part1
Name /dev/sda1
ElementName sda1
Total Size 524288000
Block Size 512
Partition Type primary
Starting sector 2048
Ending sector 1026047
Sector Size 512
Disk /dev/sda
Filesystem ext4
UUID 4ebdf6a9-530e-417f-b9ef-a7974e2aa339
Persistence Persistent
Total space on filesystem 499355648
Free space on filesystem333806592

用户和用户组管理
lmi 的 user 和 group 子命令是用来进行用户和用户组管理的,使用这两个命令可以查看、添加、删除本地或者远程主机上的系统帐户。下面介绍几个常用的例子。
查看已经存在的用户列表,使用如下命令:
lmi> user list
查看已经存在的用户组列表,使用如下命令:
lmi>group list
添加一个用户,使用如下命令:
lmi> user create cyq1
查看已经某用户详情列表,使用如下命令:
lmi> user show cyq1
Name UID Home Login shell Password last change
cyq1 1001 /home/cyq1 /bin/bash 2015/04/15
删除一个用户,使用如下命令:
lmi> user delete cyq1

电源管理
lmi 的 power 子命令是用来进行电源管理的,使用这两个命令可以启动、关闭、休眠计算机。下面介绍几个常用的例子。
查看系统支持的电源管理,使用如下命令:
lmi> power list
PowerState Available
suspend yes
force reboot yes
hibernate yes
force poweroff yes
poweroff yes
reboot yes
重启系统,使用如下命令:
lmi> power reboot
让系统休眠,使用如下命令:
lmi> power hibernate
让系统挂起,使用如下命令:
lmi> powersuspend
关闭系统,使用如下命令:
lmi> power poweroff
直接命令模式说明
除了交互模式外。还可以使用直接命令模式,通常直接模式的执行速度比较快,不过需要用户熟悉各种参数。下面是 2 个例子:
显示远程主机:managedsystem.mydomain.org 所有的服务列表
lmi -h managedsystem.mydomain.org service list – all
设置远程主机上的 raid 存储
lmi -h managedsystem.mydomain.org storage raid create 5 /dev/sdb /dev/sdd /dev/sde



总结
对于 Linux 系统管理员来说 OpenLMI 是一个非常好用的工具,能够进行快速大量的部署系统存储、软件包安装删除、网络管理等工作。本文介绍的网络环境是一个最简单的例子,随着服务器集群规模越来越大,自动化配置和部署这些服务器能够使管理变得非常容易并大大减小管理部署成本,因而系统管理员的价值将会得到体现。

以上是关于Linux 系统运维工具 OpenLMI的主要内容,如果未能解决你的问题,请参考以下文章

Linux编程学习:Linux运维必会的系统工具

IT运维中的linux运维具体每天工作是做啥的?

linux 系统运维小工具

linux 系统运维小工具

linux 系统运维工具13款

Linux自动化运维工具之ansible