关于graylog3集群搭建

本文详细介绍在三台机器上部署Graylog集群的过程,包括安装JDK、Elasticsearch、MongoDB和Graylog,以及配置Nginx进行反向代理,提供了一个完整的部署方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器准备:os764位,内存最好大于10g

安装流程查看系统shsh是否已经zhu装过jdk

java -version

未装的话:sudo rpm -ivh jdk-8u211-linux-x64.rpm

安装es集群:(es比较吃内存)

这里我准备了三台机器

 10.217.56.230, 10.217.56.241,10.217.56.247

上传解压6.*的es,我采用elasticsearch-6.5.1.tar.gz

不要用root用户启动,es做了限制

修改集群名称,node名称,数据和文件保存路径

增加:

# 设置节点间交互的tcp端口,默认是9300 
transport.tcp.port: 9300
transport.tcp.compress: true

root文件及角色授权

chown -R peiyajie:peiyajie /usr/local/elasticsearch

chmod  777   /usr/local/elasticsearch

./bin/elasticsearch -d

如果启动有问题,及时百度很好解决,例如内存数限制等

安装mongdb集群

直接下载软件mongodb-linux-x86_64-3.0.6.tgz

做一些配置(具体百度集群安装)

dbpath=/home/peiyajie/etc/mongodb/db
logpath=/home/peiyajie/etc/mongodb/logs/mongodb.log
port=27017
fork=true
replSet=rs0

任意一台机器配置:

conf=
    {
    "_id" : "rs0",
    "members" : [
        { "_id" : 0, "host" : "10.217.56.230:27017" },
        { "_id" : 1, "host" : "10.217.56.241:27017" },
        { "_id" : 2, "host" : "10.217.56.247:27017" }
        ]
    }


rs.initiate(conf)
 

以这种方式启动/home/peiyajie/etc/mongodb/bin/mongod -f /home/peiyajie/etc/mongodb/conf/mongodb.conf后

连接数据库:

/home/peiyajie/etc/mongodb/bin/mongo -port 27017

如果需要自己增加,供graylog连接使用

db.createUser( {
 user: "peiyajie",
 pwd: "123456",
 roles: [ { role: "readWrite", db: "graylog" } ]
});

db.grantRolesToUser( "peiyajie" , [ { role: "dbAdmin", db: "graylog" } ])
db.auth("peiyajie","123456")
 

就在一台机器上面增加集群关系

安装graylog集群

 直接get镜像太慢,建议下载下来执行

sudo rpm -ivh graylog-server-3.0.2-1.noarch.rpm

三台装完之后,修改相关配置

/etc/graylog/server/server.conf

一个is_master为true,另外两个为false

rest_listen_uri = http://10.217.56.230:9000/api/ 


web_listen_uri = http://10.217.56.230:9000/ 


# elasticsearch 相关配置
elasticsearch_hosts = http://10.217.56.230:9200,http://10.217.56.241:9200,http://10.217.56.247:9200
elasticsearch_shards =1 
elasticsearch_replicas = 0
 
# mongodb 连接配置,这里直接本机起的mongodb,没有设置验证
mongodb_uri = mongodb://peiyajie:123456@10.217.56.230:27017,10.217.56.241:27017,10.217.56.247:27017/graylog?replicaSet=rs0
# 网络访问相关,重要,graylog3比2.x版本简洁了很多网络配置,只需配置http_bind_address即可。
http_bind_address = 0.0.0.0:9000
# 配置外网地址,我这里用了域名+nginx做反向代理,所以外网地址如下。没有的话就直接就用外网ip+port,如:http://外网ip:9000/
http_publish_uri = http://10.217.56.230:8888/

http_external_uri= http://10.217.56.230:8888/

然后启动

systemctl daemon-reload

systemctl enable graylog-server.service

systemctl start graylog-server.service

安装nginx

下载nginx,按照网上教程来https://packages.graylog2.org/el/stableServer/3.1/x86_64

修改配置放在http里面

server {
   listen       8888;
   server_name http://10.217.56.230;

   location / {
       proxy_pass http://graylog-web-cluster;
   }
}
    upstream graylog-web-cluster {
        server 10.217.56.230:9000 max_fails=3 fail_timeout=30s;
        server 10.217.56.241:9000 max_fails=3 fail_timeout=30s;
        server 10.217.56.247:9000 max_fails=3 fail_timeout=30s;
    }

然后执行启动/home/peiyajie/nginx/sbin/nginx -c /home/peiyajie/nginx/conf/nginx.conf

访问页面:

http://10.217.56.230:8888/

其中有一些坑需要自己踩,很好解决,及时度娘。

https://blog.youkuaiyun.com/huixueyi/article/details/81117897

最典型的问题:stale_master_timeout = 100000

 系统配置:sysctl -w net.core.rmem_max=1048576

 

<think>好的,我现在需要帮助用户在Kubernetes上搭建Graylog。首先,我要回想一下用户提供的引用内容,看看有没有相关的部署步骤或者配置信息。用户提到了使用juju和maas环境部署k8s,并且在引用中提到了Graylog的部署,比如引用[3]中提到了通过filebeat到kafka再到Graylog的日志收集流程,还有配置filebeat的logpath和logstash_hosts。引用[2]里还提到了juju add-relation命令来关联filebeat和graylog模块,这可能涉及到服务之间的连接配置。 接下来,我需要确定在Kubernetes上部署Graylog的一般步骤。通常,部署有状态的应用如Graylog需要考虑持久化存储,比如MongoDB和Elasticsearch的持久卷。用户提供的引用[5]提到了Juju存储支持,可能需要配置存储卷。不过用户的问题是关于Kubernetes的原生部署,而不是使用Juju,所以可能需要调整思路,使用Kubernetes的PersistentVolume和StatefulSet。 然后,考虑Graylog的三个主要组件:Graylog服务器、Elasticsearch和MongoDB。在Kubernetes中,可能需要分别为它们创建Deployment或StatefulSet,并配置Service来暴露端口。引用[3]中提到了使用filebeat收集日志并发送到Graylog,所以还需要部署filebeat作为DaemonSet来收集每个节点的日志。 另外,用户引用中提到的配置如logpath和logstash_hosts(引用[2])可能需要对应到Kubernetes的ConfigMap中,以便配置filebeat的配置文件。此外,服务发现和网络配置也很重要,确保Graylog的Web界面可以被访问,可能需要使用Ingress或者NodePort类型的Service。 还需要注意Graylog的配置参数,比如密码加密、外部访问地址等,这些可以通过环境变量或ConfigMap注入到容器中。引用[5]中的存储配置可能需要为每个有状态服务分配持久卷,确保数据持久化。 最后,测试和验证部分,用户引用[4]中提到了检查日志文件,可能需要通过kubectl logs或者直接访问Graylog的Web界面来确认日志是否正常收集。 总结一下,步骤可能包括:准备持久化存储,部署MongoDB、Elasticsearch、Graylog,配置服务发现,部署日志收集器如filebeat,并通过Ingress暴露服务。同时,需要根据用户的引用中的具体配置调整参数,比如logstash_hosts的地址可能需要设置为Graylog服务的ClusterIP和端口。</think>在Kubernetes上部署Graylog需要结合日志收集、存储和可视化组件的协同工作。以下是分步说明: --- ### **1. 环境准备** - 确保Kubernetes集群已启用持久化存储(如NFS、Ceph或云存储),并为MongoDB、Elasticsearch分配持久卷(PVC)[^5]。 - 准备命名空间(例如`graylog`)隔离部署环境: ```bash kubectl create ns graylog ``` --- ### **2. 部署依赖组件** #### **2.1 MongoDB** ```yaml # mongo.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: mongodb namespace: graylog spec: serviceName: mongodb replicas: 1 template: spec: containers: - name: mongodb image: mongo:4 volumeMounts: - name: mongo-storage mountPath: /data/db volumeClaimTemplates: - metadata: name: mongo-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 10Gi ``` #### **2.2 Elasticsearch** ```yaml # elasticsearch.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: elasticsearch namespace: graylog spec: serviceName: elasticsearch replicas: 3 template: spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 env: - name: "discovery.type" value: "single-node" volumeMounts: - name: es-storage mountPath: /usr/share/elasticsearch/data volumeClaimTemplates: - metadata: name: es-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 20Gi ``` --- ### **3. 部署Graylog服务器** #### **3.1 Graylog Deployment** ```yaml # graylog.yaml apiVersion: apps/v1 kind: Deployment metadata: name: graylog namespace: graylog spec: replicas: 1 template: spec: containers: - name: graylog image: graylog/graylog:4.3 env: - name: GRAYLOG_PASSWORD_SECRET value: "mysecret" - name: GRAYLOG_ROOT_PASSWORD_SHA2 value: "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" # 默认密码为"admin" - name: GRAYLOG_HTTP_EXTERNAL_URI value: "http://graylog.example.com/" ports: - containerPort: 9000 ``` #### **3.2 服务暴露** ```yaml apiVersion: v1 kind: Service metadata: name: graylog namespace: graylog spec: ports: - port: 9000 targetPort: 9000 selector: app: graylog type: NodePort # 或通过Ingress暴露 ``` --- ### **4. 配置日志收集器(Filebeat)** #### **4.1 部署Filebeat DaemonSet** ```yaml # filebeat.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: filebeat namespace: graylog spec: template: spec: containers: - name: filebeat image: docker.elastic.co/beats/filebeat:7.10.2 volumeMounts: - name: varlog mountPath: /var/log - name: config mountPath: /usr/share/filebeat/filebeat.yml subPath: filebeat.yml volumes: - name: varlog hostPath: path: /var/log - name: config configMap: name: filebeat-config ``` #### **4.2 配置文件(ConfigMap)** ```yaml # filebeat-config.yaml apiVersion: v1 kind: ConfigMap metadata: name: filebeat-config namespace: graylog data: filebeat.yml: | filebeat.inputs: - type: log paths: - /var/log/*.log - /var/log/containers/*.log # 收集容器日志[^3] output.logstash: hosts: ["graylog:5044"] # 对应Graylog的输入端口[^2] ``` --- ### **5. 验证部署** 1. 访问Graylog Web界面(通过NodePort或Ingress地址)。 2.Graylog中创建**Beats输入**(端口5044)以接收Filebeat日志。 3. 查看日志是否正常流入: ```bash kubectl logs -n graylog deploy/graylog | grep "Received message" ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值