Red Hat OpenStack Platform Operational Tools
前言 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform 附带一个可选的工具套件,旨在帮助操作员维护 OpenStack 环境。该工具执行以下功能:
- 集中式日志记录
- 可用性监控
- 性能监控
本文档描述了这些工具的准备和安装。
Red Hat OpenStack Platform Operational Tool Suite 当前还只是一个技术预览。有关红帽 技术预览的更多信息,请参阅技术预览功能支持范围。
第 1 章 架构 复制链接链接已复制到粘贴板!
1.1. 集中式日志记录 复制链接链接已复制到粘贴板!
集中式日志记录链由多个组件组成,包括:
- 日志集合代理(Fluentd)
- 日志中继/Transformer (Fluentd)
- 数据存储(Elasticsearch)
- API/Presentation Layer (Kibana)
这些组件及其交互在下图中布局:
图 1.1. 集中式日志记录架构在高级别上
图 1.2. Red Hat OpenStack Platform 的单节点部署
图 1.3. Red Hat OpenStack Platform 的 HA 部署
1.2. 可用性监控 复制链接链接已复制到粘贴板!
可用性监控工具链由多个组件组成,包括:
- 监测代理(Sensu)
- 监控中继/代理(RabbitMQ)
- 监控控制器/服务器(Sensu)
- 一个 API/Presentation Layer (Uchiwa)
这些组件及其交互在下图中布局:
图 1.4. 高级别的可用性监控架构
图 1.5. Red Hat OpenStack Platform 的单节点部署
图 1.6. Red Hat OpenStack Platform 的 HA 部署
1.3. 性能监控 复制链接链接已复制到粘贴板!
性能监控工具链由多个组件组成,包括:
- 集合代理(集合代理)
- Collection Aggregator/Relay (Graphite)
- 数据存储(whisperdb)
- 一个 API/Presentation Layer (Grafana)
这些组件及其交互在下图中布局:
图 1.7. 高级别的性能监控架构
图 1.8. Red Hat OpenStack Platform 的单节点部署
图 1.9. Red Hat OpenStack Platform 的 HA 部署
第 2 章 安装集中日志记录套件 复制链接链接已复制到粘贴板!
2.1. 安装集中式 Log Relay/Transformer 复制链接链接已复制到粘贴板!
找到满足以下最低规格的裸机系统:
- 8 GB 内存
- 单套接字 Xeon 类 CPU
- 500 GB 磁盘空间
- Install Red Hat Enterprise Linux 7.
允许系统访问 Operational Tools 软件包:
注册系统并订阅它:
subscription-manager register subscription-manager list --consumed
# subscription-manager register # subscription-manager list --consumedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有自动附加 OpenStack 订阅,请参阅有关 手动附加订阅 的文档。
禁用初始启用的存储库,仅启用适合 Operational Tools 的仓库:
subscription-manager repos --disable=* subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-optional-rpms --enable=rhel-7-server-openstack-8-optools-rpms
# subscription-manager repos --disable=* # subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-optional-rpms --enable=rhel-7-server-openstack-8-optools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此节点上不能启用基础 OpenStack 存储库(rhel-7-server-openstack-8-rpms)。此软件仓库可能包含某些 Operational Tools 依赖项的较新版本,这些依赖项可能与 Operational Tools 软件包不兼容。
运行以下命令安装
Elasticsearch、Fluentd和Kibana软件:yum install elasticsearch fluentd rubygem-fluent-plugin-elasticsearch kibana httpd
# yum install elasticsearch fluentd rubygem-fluent-plugin-elasticsearch kibana httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
Elasticsearch中启用跨原始资源共享(CORS)。要做到这一点,请编辑/etc/elasticsearch/elasticsearch.yml,并在文件的末尾添加以下行:http.cors.enabled: true http.cors.allow-origin: "/.*/"
http.cors.enabled: true http.cors.allow-origin: "/.*/"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意这将允许从任何 Web 服务器的任何网页调用
ElasticsearchJavaScript 应用程序。要只允许Kibana服务器中的 CORS,请使用:http.cors.allow-origin: "http://LOGGING_SERVER"
http.cors.allow-origin: "http://LOGGING_SERVER"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 LOGGING_SERVER 替换为
Kibana服务器的 IP 地址或主机名,具体取决于您要使用 IP 地址或主机名访问Kibana。但是,如果Elasticsearch服务只能从可信主机访问,则可以安全地使用"/signal/"。启动
Elasticsearch实例并在引导时启用它:systemctl start elasticsearch systemctl enable elasticsearch
# systemctl start elasticsearch # systemctl enable elasticsearchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要确认
Elasticsearch实例正常工作,请运行以下命令:curl http://localhost:9200/
# curl http://localhost:9200/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这应该给出类似如下的响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
Fluentd以接受日志数据并将其写入Elasticsearch。编辑/etc/fluentd/fluent.conf,并将其内容替换为以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
Fluentd并在引导时启用它:systemctl start fluentd systemctl enable fluentd
# systemctl start fluentd # systemctl enable fluentdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示检查
Fluentd的日志,并确保它在启动时没有错误:journalctl -u fluentd -l -f
# journalctl -u fluentd -l -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
Kibana以指向Elasticsearch实例。创建/etc/httpd/conf.d/kibana3.conf,并将以下内容放在:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要将对
Kibana和Elasticsearch的访问限制为授权用户,例如,由于这些服务在开放网络中的系统上运行,请使用 HTTP 基本身份验证保护虚拟主机,并在代理后移动Elasticseach。要做到这一点,请按照以下步骤执行:使用以下内容创建(或重写)
/etc/httpd/conf.d/kibana3.conf文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以将不同的路径用于
AuthUserFile选项,以及AuthName选项的任何其他描述。创建允许访问
Kibana的一对用户名和密码。为此,请运行以下命令:htpasswd -c /etc/httpd/conf/htpasswd-kibana user_name
# htpasswd -c /etc/httpd/conf/htpasswd-kibana user_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您将不同的路径用于
AuthUserFile选项,请相应地更改命令。使用您选择的用户名替换 user_name。出现提示时,输入将与此用户名一起使用的密码。系统将提示您重新键入密码。
另外,运行以下命令来创建具有自己密码的更多用户:
htpasswd /etc/httpd/conf/htpasswd-kibana another_user_name
# htpasswd /etc/httpd/conf/htpasswd-kibana another_user_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
Elasticsearch配置为仅侦听localhost接口。要做到这一点,请在编辑器中打开/etc/elasticsearch/elasticsearch.yml文件,并附加以下选项:network.host: 127.0.0.1
network.host: 127.0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以通过将以下选项附加到
/etc/elasticsearch/elasticsearch.yml,将Elasticsearch配置为允许在 CORS 中使用 HTTP 基本身份验证数据:http.cors.allow-credentials: true
http.cors.allow-credentials: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
Elasticsearch以使更改生效:systemctl restart elasticsearch
# systemctl restart elasticsearchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 最后,确保使用代理下载
Elasticsearch文件,并且浏览器发送 HTTP 基本身份验证数据。为此,请编辑/usr/share/kibana/config.js文件。在此文件中找到以下行:elasticsearch: "http://"+window.location.hostname+":9200",
elasticsearch: "http://"+window.location.hostname+":9200",Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按如下所示更改它:
elasticsearch: {server: "http://"+window.location.hostname, withCredentials: true},elasticsearch: {server: "http://"+window.location.hostname, withCredentials: true},Copy to Clipboard Copied! Toggle word wrap Toggle overflow
启用
Kibana(在 Apache 之外)连接到Elasticsearch,然后启动 Apache 并在引导时启用它:setsebool -P httpd_can_network_connect 1 systemctl start httpd systemctl enable httpd
# setsebool -P httpd_can_network_connect 1 # systemctl start httpd # systemctl enable httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在系统上打开防火墙,以允许连接到
Fluentd和httpd:firewall-cmd --zone=public --add-port=4000/tcp --permanent firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
# firewall-cmd --zone=public --add-port=4000/tcp --permanent # firewall-cmd --zone=public --add-service=http --permanent # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果您还没有配置 HTTP 身份验证和
Elasticsearch代理,请打开防火墙以允许到Elasticsearch的直接连接:firewall-cmd --zone=public --add-port=9200/tcp --permanent firewall-cmd --reload
# firewall-cmd --zone=public --add-port=9200/tcp --permanent # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您不限制对使用 HTTP 身份验证的
Kibana和Elasticseach的访问,则 Kibana 和 Elasticsearch 提供的信息可在没有任何身份验证的情况下供任何人使用。为了保护数据,请确保系统或打开的 TCP 端口(80、4000 和 9200)只能从可信主机访问。
2.2. 在所有节点上安装日志集合代理 复制链接链接已复制到粘贴板!
要从 OpenStack 环境中所有系统收集日志并将其发送到集中式日志记录服务器,请在所有 OpenStack 系统上运行以下命令:
启用 Operational Tools 存储库:
subscription-manager repos --enable=rhel-7-server-openstack-8-optools-rpms
# subscription-manager repos --enable=rhel-7-server-openstack-8-optools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
fluentd和rubygem-fluent-plugin-add:yum install fluentd rubygem-fluent-plugin-add
# yum install fluentd rubygem-fluent-plugin-addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
Fluentd用户,使其具有读取所有 OpenStack 日志文件的权限。运行以下命令来完成此操作:for user in {keystone,nova,neutron,cinder,glance}; do usermod -a -G $user fluentd; done# for user in {keystone,nova,neutron,cinder,glance}; do usermod -a -G $user fluentd; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,您可能会在某些节点上收到有关缺失组的错误。这可以忽略,因为所有节点都运行所有服务。
配置
Fluentd。确保/etc/fluentd/fluent.conf如下所示;请务必将 LOGGING_SERVER 替换为上述配置的集中式日志记录服务器的主机名或 IP 地址:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,
Fluentd已被配置,启动Fluentd服务并在引导时启用它:systemctl start fluentd systemctl enable fluentd
# systemctl start fluentd # systemctl enable fluentdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您应该可以访问在 http://LOGGING_SERVER/index.html Slack/dashboard/file/logstash.json 中运行的 Kibana,并查看日志开始填充。如果您在 Kibana 配置中启用了 HTTP 基本身份验证,您必须输入有效的用户名和密码来访问此页面。
默认情况下,日志记录服务器的前端页面 http://LOGGING_SERVER/ 是用于提供技术要求和其他配置信息的 Kibana 欢迎屏幕。如果您希望日志在此处可用,请将 Kibana 应用程序目录中的 default.json 文件替换为 logstash.json,但首先创建一个 default.json 的备份副本,以备将来需要此文件:
mv /usr/share/kibana/app/dashboards/default.json /usr/share/kibana/app/dashboards/default.json.orig cp /usr/share/kibana/app/dashboards/logstash.json /usr/share/kibana/app/dashboards/default.json
# mv /usr/share/kibana/app/dashboards/default.json /usr/share/kibana/app/dashboards/default.json.orig
# cp /usr/share/kibana/app/dashboards/logstash.json /usr/share/kibana/app/dashboards/default.json
第 3 章 安装可用性监控套件 复制链接链接已复制到粘贴板!
3.1. 安装 Monitoring Relay/Controller 复制链接链接已复制到粘贴板!
找到满足以下最低规格的裸机系统:
- 4 GB 内存
- 单套接字 Xeon 类 CPU
- 100 GB 磁盘空间
- Install Red Hat Enterprise Linux 7.
允许系统访问 Operational Tools 软件包:
注册系统并订阅它:
subscription-manager register subscription-manager list --consumed
# subscription-manager register # subscription-manager list --consumedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有自动附加 OpenStack 订阅,请参阅有关 手动附加订阅 的文档。
禁用初始启用的存储库,仅启用适合 Operational Tools 的仓库:
subscription-manager repos --disable=* subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-optional-rpms --enable=rhel-7-server-openstack-8-optools-rpms
# subscription-manager repos --disable=* # subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-optional-rpms --enable=rhel-7-server-openstack-8-optools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此节点上不能启用基础 OpenStack 存储库(rhel-7-server-openstack-8-rpms)。此软件仓库可能包含某些 Operational Tools 依赖项的较新版本,这些依赖项可能与 Operational Tools 软件包不兼容。
打开系统上的防火墙,以允许连接到
RabbitMQ和Uchiwa:firewall-cmd --zone=public --add-port=5672/tcp --permanent firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload
# firewall-cmd --zone=public --add-port=5672/tcp --permanent # firewall-cmd --zone=public --add-port=3000/tcp --permanent # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装监控服务器所需的组件:
yum install sensu uchiwa redis rabbitmq-server
# yum install sensu uchiwa redis rabbitmq-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
RabbitMQ和Redis,它们是 backbone 服务。启动Redis和RabbitMQ,并在引导时启用它们:systemctl start redis systemctl enable redis systemctl start rabbitmq-server systemctl enable rabbitmq-server
# systemctl start redis # systemctl enable redis # systemctl start rabbitmq-server # systemctl enable rabbitmq-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用可以访问主机的用户名和密码组合为
sensu配置新的RabbitMQ虚拟主机:rabbitmqctl add_vhost /sensu rabbitmqctl add_user sensu sensu rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
# rabbitmqctl add_vhost /sensu # rabbitmqctl add_user sensu sensu # rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,基础服务正在运行并配置了
Sensu监控服务器。使用以下内容创建/etc/sensu/conf.d/rabbitmq.json:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接下来,使用以下内容创建
/etc/sensu/conf.d/redis.json:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最后,使用以下内容创建
/etc/sensu/conf.d/api.json:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动并启用所有
Sensu服务:systemctl start sensu-server systemctl enable sensu-server systemctl start sensu-api systemctl enable sensu-api
# systemctl start sensu-server # systemctl enable sensu-server # systemctl start sensu-api # systemctl enable sensu-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
Uchiwa,这是Sensu的 Web 界面。要做到这一点,请编辑/etc/uchiwa/uchiwa.json,并将其默认内容替换为以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动并启用
UchiwaWeb 界面:systemctl start uchiwa systemctl enable uchiwa
# systemctl start uchiwa # systemctl enable uchiwaCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. 在所有节点上安装可用性监控代理 复制链接链接已复制到粘贴板!
若要监控 OpenStack 环境中的所有系统,请在所有这些系统上运行以下命令:
启用 Operational Tools 存储库:
subscription-manager repos --enable=rhel-7-server-openstack-8-optools-rpms
# subscription-manager repos --enable=rhel-7-server-openstack-8-optools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
Sensu:yum install sensu
# yum install sensuCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
Sensu代理。编辑/etc/sensu/conf.d/rabbitmq.json以包含以下内容;请记住,将 MONITORING_SERVER 替换为上一节中配置的监控服务器的主机名或 IP 地址:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/sensu/conf.d/client.json以包含以下内容;请记住,将 FQDN 替换为计算机的主机名,ADDRESS 替换为机器的公共 IP 地址:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最后,启动并启用
Sensu客户端:systemctl start sensu-client systemctl enable sensu-client
# systemctl start sensu-client # systemctl enable sensu-clientCopy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您应能够访问在 http://MONITORING_SERVER:3000 中运行的 Uchiwa。
第 4 章 安装性能监控套件 复制链接链接已复制到粘贴板!
4.1. 安装集合聚合器/Relay 复制链接链接已复制到粘贴板!
找到满足以下最低规格的裸机系统:
- 4 GB 内存
- 单套接字 Xeon 类 CPU
- 500 GB 磁盘空间
- Install Red Hat Enterprise Linux 7.
允许系统访问 Operational Tools 软件包:
注册系统并订阅它:
subscription-manager register subscription-manager list --consumed
# subscription-manager register # subscription-manager list --consumedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有自动附加 OpenStack 订阅,请参阅有关 手动附加订阅 的文档。
禁用初始启用的存储库,仅启用适合 Operational Tools 的仓库:
subscription-manager repos --disable=* subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-optional-rpms --enable=rhel-7-server-openstack-8-optools-rpms
# subscription-manager repos --disable=* # subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-optional-rpms --enable=rhel-7-server-openstack-8-optools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此节点上不能启用基础 OpenStack 存储库(rhel-7-server-openstack-8-rpms)。此软件仓库可能包含某些 Operational Tools 依赖项的较新版本,这些依赖项可能与 Operational Tools 软件包不兼容。
在系统上打开防火墙,以允许连接到
Graphite和Grafana:firewall-cmd --zone=public --add-port=2003/tcp --permanent firewall-cmd --zone=public --add-port=3030/tcp --permanent firewall-cmd --reload
# firewall-cmd --zone=public --add-port=2003/tcp --permanent # firewall-cmd --zone=public --add-port=3030/tcp --permanent # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 完成后,运行以下命令来安装
Graphite和Grafana软件:yum install python-carbon graphite-web grafana httpd
# yum install python-carbon graphite-web grafana httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
GrafanaWeb 界面以允许访问。编辑/etc/httpd/conf.d/graphite-web.conf并修改Require行,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
编辑
/etc/grafana/grafana.ini,并将http_port更改为3030。 同步
GraphiteWeb 后面的数据库。运行以下命令;当提示您创建超级用户时,选择no:sudo -u apache /usr/bin/graphite-manage syncdb --noinput
# sudo -u apache /usr/bin/graphite-manage syncdb --noinputCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动并启用所有
Graphite和Grafana服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
Grafana配置为与您的Graphite实例通信:-
前往
http://PERFORMANCE_MONITORING_HOST:3030/.您应该会看到Grafana登录页面。 -
输入
admin/admin的默认凭据来登录到系统。 -
登录后,点屏幕左上角的
Grafana徽标,然后选择 Data Sources。 在页面顶部,点 Add new 并输入以下详情:
Expand Name
Graphitedefault
是(选择)类型
GraphiteURL
http://localhost/权限
proxy基本验证
否(未选中)- 最后,单击底部的 Add 按钮。
-
前往
4.2. 在所有节点上安装性能监控集合代理 复制链接链接已复制到粘贴板!
若要监控 OpenStack 环境中所有系统的性能,请在所有这些系统上运行以下命令:
启用 Operational Tools 存储库:
subscription-manager repos --enable=rhel-7-server-openstack-8-optools-rpms
# subscription-manager repos --enable=rhel-7-server-openstack-8-optools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
collectd:yum install collectd
# yum install collectdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
collectd,以将数据发送到性能监控聚合器/重新生成。为此,请使用以下内容创建/etc/collectd.d/10-write_graphite.conf,其中 PERFORMANCE_MONITORING_HOST 是之前配置为监控聚合器/relay 的主机的主机名称或 IP 地址:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 SELinux,请
collectd到 tcp 网络连接:setsebool -P collectd_tcp_network_connect=1
# setsebool -P collectd_tcp_network_connect=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动并启用
collectd:systemctl start collectd systemctl enable collectd
# systemctl start collectd # systemctl enable collectdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
片刻后,您应该会在在 http://PERFORMANCE_MONITORING_HOST:3030/ 运行的 Graphite Web 用户界面中看到指标。