第 2 章 安装集中日志记录套件


2.1. 安装集中式 Log Relay/Transformer

  1. 找到满足以下最低规格的裸机系统:

    • 8 GB 内存
    • 单套接字 Xeon 类 CPU
    • 500 GB 磁盘空间
  2. Install Red Hat Enterprise Linux 7.
  3. 允许系统访问 Operational Tools 软件包:

    1. 注册系统并订阅它:

      # subscription-manager register
      # subscription-manager list --consumed
      Copy to Clipboard Toggle word wrap

      如果没有自动附加 OpenStack 订阅,请参阅有关 手动附加订阅 的文档。

    2. 禁用初始启用的存储库,仅启用适合 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
      Copy to Clipboard Toggle word wrap
      注意

      此节点上不能启用基础 OpenStack 存储库(rhel-7-server-openstack-8-rpms)。此软件仓库可能包含某些 Operational Tools 依赖项的较新版本,这些依赖项可能与 Operational Tools 软件包不兼容。

  4. 运行以下命令安装 ElasticsearchFluentdKibana 软件:

    # yum install elasticsearch fluentd rubygem-fluent-plugin-elasticsearch kibana httpd
    Copy to Clipboard Toggle word wrap
  5. Elasticsearch 中启用跨原始资源共享(CORS)。要做到这一点,请编辑 /etc/elasticsearch/elasticsearch.yml,并在文件的末尾添加以下行:

    http.cors.enabled: true
    http.cors.allow-origin: "/.*/"
    Copy to Clipboard Toggle word wrap
    注意

    这将允许从任何 Web 服务器的任何网页调用 Elasticsearch JavaScript 应用程序。要只允许 Kibana 服务器中的 CORS,请使用:

    http.cors.allow-origin: "http://LOGGING_SERVER"
    Copy to Clipboard Toggle word wrap

    LOGGING_SERVER 替换为 Kibana 服务器的 IP 地址或主机名,具体取决于您要使用 IP 地址或主机名访问 Kibana。但是,如果 Elasticsearch 服务只能从可信主机访问,则可以安全地使用 "/signal/ "。

  6. 启动 Elasticsearch 实例并在引导时启用它:

    # systemctl start elasticsearch
    # systemctl enable elasticsearch
    Copy to Clipboard Toggle word wrap

    要确认 Elasticsearch 实例正常工作,请运行以下命令:

    # curl http://localhost:9200/
    Copy to Clipboard Toggle word wrap

    这应该给出类似如下的响应:

    {
      "status" : 200,
      "name" : "elasticsearch.example.com",
      "cluster_name" : "elasticsearch",
      "version" : {
        "number" : "1.5.2",
        "build_hash" : "c88f77ffc81301dfa9dfd81ca2232f09588bd512",
        "build_timestamp" : "2015-02-19T13:05:36Z",
        "build_snapshot" : false,
        "lucene_version" : "4.10.3"
      },
      "tagline" : "You Know, for Search"
    }
    Copy to Clipboard Toggle word wrap
  7. 配置 Fluentd 以接受日志数据并将其写入 Elasticsearch。编辑 /etc/fluentd/fluent.conf,并将其内容替换为以下内容:

    # In v1 configuration, type and id are @ prefix parameters.
    # @type and @id are recommended. type and id are still available for backward compatibility
    
    <source>
      @type forward
      port 4000
      bind 0.0.0.0
    </source>
    
    <match **>
      @type elasticsearch
      host localhost
      port 9200
      logstash_format true
      flush_interval 5
    </match>
    Copy to Clipboard Toggle word wrap
  8. 启动 Fluentd 并在引导时启用它:

    # systemctl start fluentd
    # systemctl enable fluentd
    Copy to Clipboard Toggle word wrap
    提示

    检查 Fluentd 的日志,并确保它在启动时没有错误:

    # journalctl -u fluentd -l -f
    Copy to Clipboard Toggle word wrap
  9. 配置 Kibana 以指向 Elasticsearch 实例。创建 /etc/httpd/conf.d/kibana3.conf,并将以下内容放在:

    <VirtualHost *:80>
    
      DocumentRoot /usr/share/kibana
      <Directory /usr/share/kibana>
        Require all granted
        Options -Multiviews
      </Directory>
    
    </VirtualHost>
    Copy to Clipboard Toggle word wrap
  10. 如果要将对 KibanaElasticsearch 的访问限制为授权用户,例如,由于这些服务在开放网络中的系统上运行,请使用 HTTP 基本身份验证保护虚拟主机,并在代理后移动 Elasticseach。要做到这一点,请按照以下步骤执行:

    1. 使用以下内容创建(或重写) /etc/httpd/conf.d/kibana3.conf 文件:

      <VirtualHost *:80>
      
        DocumentRoot /usr/share/kibana
        <Directory /usr/share/kibana>
          Options -Multiviews
          AuthUserFile /etc/httpd/conf/htpasswd-kibana
          AuthName "Restricted Kibana Server"
          AuthType Basic
          Require valid-user
        </Directory>
      
        # Proxy for Elasticsearch
        <LocationMatch "^/(_nodes|_aliases|.*/_aliases|_search|.*/_search|_mapping|.*/_mapping)$">
          ProxyPassMatch http://127.0.0.1:9200/$1
          ProxyPassReverse http://127.0.0.1:9200/$1
        </LocationMatch>
      
        # Proxy for kibana-int/{dashboard,temp}
        <LocationMatch "^/(kibana-int/dashboard/|kibana-int/temp)(.*)$">
          ProxyPassMatch http://127.0.0.1:9200/$1$2
          ProxyPassReverse http://127.0.0.1:9200/$1$2
        </LocationMatch>
      
      </Virtualhost>
      Copy to Clipboard Toggle word wrap
      注意

      您可以将不同的路径用于 AuthUserFile 选项,以及 AuthName 选项的任何其他描述。

    2. 创建允许访问 Kibana 的一对用户名和密码。为此,请运行以下命令:

      # htpasswd -c /etc/httpd/conf/htpasswd-kibana user_name
      Copy to Clipboard Toggle word wrap
      注意

      如果您将不同的路径用于 AuthUserFile 选项,请相应地更改命令。

      使用您选择的用户名替换 user_name。出现提示时,输入将与此用户名一起使用的密码。系统将提示您重新键入密码。

    3. 另外,运行以下命令来创建具有自己密码的更多用户:

      # htpasswd /etc/httpd/conf/htpasswd-kibana another_user_name
      Copy to Clipboard Toggle word wrap
    4. Elasticsearch 配置为仅侦听 localhost 接口。要做到这一点,请在编辑器中打开 /etc/elasticsearch/elasticsearch.yml 文件,并附加以下选项:

      network.host: 127.0.0.1
      Copy to Clipboard Toggle word wrap
    5. 您还可以通过将以下选项附加到 /etc/elasticsearch/elasticsearch.yml,将 Elasticsearch 配置为允许在 CORS 中使用 HTTP 基本身份验证数据:

      http.cors.allow-credentials: true
      Copy to Clipboard Toggle word wrap
    6. 重启 Elasticsearch 以使更改生效:

      # systemctl restart elasticsearch
      Copy to Clipboard Toggle word wrap
    7. 最后,确保使用代理下载 Elasticsearch 文件,并且浏览器发送 HTTP 基本身份验证数据。为此,请编辑 /usr/share/kibana/config.js 文件。在此文件中找到以下行:

      elasticsearch: "http://"+window.location.hostname+":9200",
      Copy to Clipboard Toggle word wrap

      按如下所示更改它:

      elasticsearch: {server: "http://"+window.location.hostname, withCredentials: true},
      Copy to Clipboard Toggle word wrap
  11. 启用 Kibana (在 Apache 之外)连接到 Elasticsearch,然后启动 Apache 并在引导时启用它:

    # setsebool -P httpd_can_network_connect 1
    # systemctl start httpd
    # systemctl enable httpd
    Copy to Clipboard Toggle word wrap
  12. 在系统上打开防火墙,以允许连接到 Fluentdhttpd

    # firewall-cmd --zone=public --add-port=4000/tcp --permanent
    # firewall-cmd --zone=public --add-service=http --permanent
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  13. 另外,如果您还没有配置 HTTP 身份验证和 Elasticsearch 代理,请打开防火墙以允许到 Elasticsearch 的直接连接:

    # firewall-cmd --zone=public --add-port=9200/tcp --permanent
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
    重要

    如果您不限制对使用 HTTP 身份验证的 KibanaElasticseach 的访问,则 Kibana 和 Elasticsearch 提供的信息可在没有任何身份验证的情况下供任何人使用。为了保护数据,请确保系统或打开的 TCP 端口(80、4000 和 9200)只能从可信主机访问。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat