参考文档:

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

Kubernetes documentation

Prometheus2 #22
Grafana #40
Telegraf #41

Graylog #47
Elasticsearch #49
Mongodb #59
Apache2
多节点openstack charms 部署指南0.0.1-36-graylog实际-1
多节点openstack charms 部署指南0.0.1-37-graylog实际-2
多节点openstack charms 部署指南0.0.1-38-graylog实际-3
多节点openstack charms 部署指南0.0.1-39-graylog-4-filebeat

Rsyslog #18
Rsyslog Forwarder Ha #20
多节点OpenStack Charms 部署指南0.0.1.dev223–26–跨model 建立关系构建rsyslog 日志服务器构建实际
多节点OpenStack Charms 部署指南0.0.1.dev223–25–rsyslog 日志服务器构建实际

接上节,ubuntu20.04下使用juju+maas环境部署k8s-4-使用graylog和Prometheus2监控k8s集群-1-部署rsyslog模块

本节部署graylog模块,分别接收k8s模块rsyslog-forward-ha应用转发来的log和rsyslog模块由filebeat应用转发来的log。


Graylog #47

作者:llama-charmers Stable, Candidate
支持:Xenial Bionic Focal

使用命令:

juju deploy cs:graylog-47

描述

安装 Graylog 日志管理系统。一个功能齐全的系统需要连接到 elasticsearch 和 mongodb。 https://www.graylog.org/

系列: xenialbionicfocal ›
标签: misc ›

概述

此charm使用 snap 包安装 Graylog。

用法:

juju deploy cs:~graylog-charmers/graylog
juju run-action --wait graylog/X show-admin-password

Graylog 需要运行 MongoDB 和 Elasticsearch 才能使用。

juju deploy cs:~mongodb-charmers/mongodb
juju relate graylog:mongodb mongodb:database

juju deploy cs:~elasticsearch-charmers/elasticsearch
juju relate graylog:elasticsearch elasticsearch:client

然后您可以浏览到 http://ip-address:9000 并以用户“admin”的身份登录。默认情况下,密码是一个随机值,因此必须运行 juju run-action --wait graylog/X show-admin-password 以便管理员访问安装。

反向代理关系

Graylog 支持使用 http 关系向充当反向代理的应用程序通告其端口。 webUI 的端口通过关系的 all_services 变量中的关系公开。

注意:对于 Graylog 版本 2,API 端口也通过 http 关系公开。 Graylog 版本 3 硬编码 /api/ 位置,并为 webUI 和 API 使用默认端口 (9000)。

有关使用此功能的更多详细信息,请参阅 Apache2 charm的反向代理说明。

用于 apache2 charm的示例 Graylog 2 vhost 模板:

$ cat graylog-vhost.tmpl
<Location "/">
    RequestHeader set X-Graylog-Server-URL "http://{{servername}}/api/"
    ProxyPass http://{{graylog_web}}/
    ProxyPassReverse http://{{graylog_web}}/
</Location>

<Location "/api/">
    ProxyPass http://{{graylog_api}}/api/
    ProxyPassReverse http://{{graylog_api}}/api/
</Location>

用于 apache2 charm的示例 Graylog 3 vhost 模板:

$ cat graylog-vhost.tmpl
<Location "/">
    RequestHeader set X-Graylog-Server-URL "http://{{servername}}/"
    ProxyPass http://{{graylog_web}}/
    ProxyPassReverse http://{{graylog_web}}/
</Location>

现在部署和配置 apache2 作为您的 Graylog 反向代理:

juju deploy apache2
juju config apache2 "enable_modules='headers proxy_html proxy_http'"
juju config apache2 "vhost_http_template=$(base64 ./graylog-vhost.tmpl)"
juju expose apache2
juju relate apache2:reverseproxy graylog:website

访问 http:// 以访问 Graylog Web 界面。

扩展使用

MongoDB 和 Elasticsearch 应用程序都可以扩展或缩减。 Graylog 将根据需要重新配置自身。 Graylog charm尚不支持多个单元的集群。

配置

根据使用的 Elasticsearch charm,集群名称可能不会传递给 Graylog。在这种情况下,应该设置 elasticsearch_cluster_name 配置选项。

日志输入

一个可选的配置选项 log_inputs 使我们能够指定额外的日志输入。这需要一个 yaml 列表作为输入。 yaml 可以包含四个值:名称、类型、bind_address 和 bind_port,并且可以包含多个输入。例如,要启用 Syslog UDP 输入,yaml 可能如下所示:

- name: SyslogUDP
  type: Syslog UDP
  bind_address: 0.0.0.0
  bind_port: 514

升级

Graylog 可以通过设置通道配置选项升级到不同的快照版本。例如,使用以下内容切换到最新版本 3 edge snap。

juju config graylog channel='3/edge'

注意:从 Graylog 版本 2 升级到版本 3 时,请参阅升级指南以确保您的环境满足最低要求。

如果新的通道配置选项导致安装新的 snap,则charm将在 /var/snap/graylog/common/server.conf.$prev 中的 Graylog 单元上备份先前的配置文件。如果将来需要将 graylog 恢复到以前的版本,这可能很有用。


以下是实际配置过程:

参见
多节点openstack charms 部署指南0.0.1-36-graylog实际-1
多节点openstack charms 部署指南0.0.1-37-graylog实际-2
多节点openstack charms 部署指南0.0.1-38-graylog实际-3
多节点openstack charms 部署指南0.0.1-39-graylog-4-filebeat

在mass上配置虚机

为了做nat转换,需要将graylog,elasticsearch,apache2IP地址固定。故需要先在maas中先compose三台虚机,并编辑tag和ip。具体步骤,请参见多节点OpenStack Charms 部署指南0.0.1.dev223–2-安装MAAS

节点名标签vCPU数网卡数内存g数硬盘数硬盘g数ip
elasticsearch.maaselasticsearch21818010.0.9.3
apache2.maasapache221816010.0.9.18
graylog.maasgraylog21816010.0.9.13

配置NAT

参见:
Ubuntu 20.04防火墙 UFW做NAT转换,IP伪装,端口重定向,端口映射

编写graylog-vhost.tmpl

vim graylog-vhost.tmpl
<Location “/”>
RequestHeader set X-Graylog-Server-URL “http://{{servername}}/api/”
ProxyPass http://{{graylog_web}}/
ProxyPassReverse http://{{graylog_web}}/

<Location “/api/”>
ProxyPass http://{{graylog_api}}/api/
ProxyPassReverse http://{{graylog_api}}/api/

部署graylog

#部署相关应用,apache2,graylog,elasticsearch,mongodb
juju deploy cs:elasticsearch-49 --constraints tags=elasticsearch --series focal --debug
juju deploy cs:graylog-47 --constraints tags=graylog --series focal --debug
juju deploy cs:mongodb-59  --to lxd:0 --series focal --debug
juju deploy cs:apache2-36 --constraints tags=apache2 --series focal --debug

#建立关系
juju relate graylog:mongodb mongodb:database
juju relate graylog:elasticsearch elasticsearch:client
juju relate apache2:reverseproxy graylog:website

#配置
juju config apache2 "enable_modules='headers proxy_html proxy_http'"
juju config apache2 "vhost_http_template=$(base64 ./graylog-vhost.tmpl)"
juju config elasticsearch firewall_enabled="false"
juju expose apache2
juju config graylog elasticsearch_cluster_name="<es-cluster>"

#获取graylog密码
juju run-action --wait graylog/0 show-admin-password

上面的 "es-cluster"使用juju config elasticsearch cluster-name获得

调试apache2

需要进入apache2/0单元执行

juju ssh apache2/0

启用代理模块

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

重启apache2

 sudo service apache2 restart

查看apache2状态:

systemctl status apache2.service

开启header功能

sudo a2enmod headers

再次重启apache2,并查看状态

 sudo service apache2 restart
 systemctl status apache2.service

配置graylog

先在nat网关,配置地址映射,公网ip:50080映射到graylog服务器内网地址:80

juju config graylog web_endpoint_uri=http://NAT网关公网ip:50080/api/

然后:
http://nat网关公网ip:9000/api/
期待了许久的graylog页面出现了:

在这里插入图片描述

导入rsyslog日志:

参见:
多节点openstack charms 部署指南0.0.1-38-graylog实际-3

切换到使用rsyslog-forward-ha所在模块

juju switch k8s

juju config rsyslog forward_host="10.0.9.13" #graylog/0所在ip地址或域名
juju config rsyslog forward_protocol="tcp"
juju config rsyslog forward_port="514"

web配置:

http://nat网关公网ip:9000/api/
选择system->input
在这里插入图片描述

选择input数据的来源类型:
这里选的是刚才在rysylog模块中配置的协议syslog tcp,端口514,bind ip:0.0.0.0

在这里插入图片描述
Launch new input
根据刚才在rysylog中配置进行配置:node选择一个可用graylog节点,端口514,bind ip:0.0.0.0

在这里插入图片描述

测试log信息发送链条:

生成测试log信息
切换到某个rsyslog-forward-ha所在unit,输入loger信息,参见多节点OpenStack Charms 部署指南0.0.1.dev223–25–rsyslog 日志服务器构建实际:

juju switch openstack
juju ssh etcd/0
logger "a testing"

检查rsyslog是否收到信息
切换到rsyslog,并检查测试信息 “a testing”

juju switch rsyslog
juju ssh primary-rsyslog/0 
grep testing /var/log/syslog

输出类似

Apr 15 08:13:46 juju-db6013-0-lxd-10 ubuntu: a testing

检查graylog是否收到信息
上文生成的rsyslog input

在这里插入图片描述
点击show input message

选择时间范围:这里选的是所有
选择搜索内容:testing

在这里插入图片描述

input下的一个log数据源:
在这里插入图片描述

在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐