filebeat+kafka+logstash+Elasticsearch+Kibana日志收集系统搭建

原理架构图:

JDK下载:https://www.oracle.com/java/technologies/java-se-glance.html
ES下载:https://www.elastic.co/cn/downloads/elasticsearch

使用规则:
1、不同的业务用不同的topi
2、不同的环境用不通的index-pattern

一、Elasticsearch单机部署

创建elastic用户组及elastic用户

# 注意:elasticsearch不能使用root启动,不然会报错!

]# groupadd elastic
]# useradd elastic -g elastic -p 123456

# 更改elk文件夹及内部文件的所属用户及组为elastic:elastic

]# chown -R elastic:elastic /home/soft/elastic

修改配置:

]# vi elasticsearch.yml

]# network.host: 10.193.196.57
]# discovery.seed_hosts: ["10.193.196.57", "127.0.0.1"]
]# -Xms8g  #根据自己服务器环境来配置
]# -Xmx8g  

# 新增配置:属于gateway属性,解决跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"

# 新增配置:(属于Memory属性)
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

# 切换到elastic用户再启动

]# su elastic
]# ./bin/elasticsearch -d  ## -d 后台启动

# 虚拟内存数量超标,Linux限制一个进程可访问的VMA(虚拟内存)数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。

# 使用root用户修改/etc/sysctl.conf文件

# 添加内容
]# vim /etc/sysctl.conf
vm.max_map_count = 262144

检查查看
sysctl -p     # 配置验证

不添加vm.max_map_count报错如下:

调整ES日志模板

curl -H "Content-Type:application/json" -XPUT http://10.4.xx.xx:9200/_template/k8s -d '{
  "template" : "k8s*",
  "index_patterns": ["k8s*"],  
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 0
  }
}'
elasticsearch-head
1)源码安装,通过npm run start 启动(不推荐)
2)通过docker安装(推荐)
3)通过chrome插件安装(推荐)
4)通过es的plugin方式安装(不推荐)

二、Logstash单机部署

2.1 下载并解压

~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.6.2.tar.gz
~]# tar xf logstash-7.6.2.tar.gz -C /opt/
~]# ln -s logstash-7.6.2 logstash       ## 做软链方便后期升级

2.2 配置logstash

~]# vi logstash.conf
input {
  kafka {
    bootstrap_servers => ["10.193.xx.xx:9098"]      ## 填写kafka地址
    topics => "filebeat"
    group_id => "es"
    codec => json
  }
}

filter {
  grok {
  match => {
    "message" => "^\[(?<createtime>%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}[- ]%{TIME}?)\]\|(?<appname>[-%{WORD}]+?)\|(?<thread>[\w-]+?)\|%{LOGLEVEL:loglevel}"
  }
  }

date {
    match => ["createtime", "yyyy-MM-dd HH:mm:ss"]
    target => "@timestamp"
  }
  mutate{
    remove_field => ["beat.name"]
  }
}

output {
    elasticsearch {
        hosts => ["http://10.193.xx.xx:9200"]      ##填写es地址
    }
}

2.3 启动logstash

nohup ./bin/logstash -f config/logstash.conf &    ##后台启动

2.4 logstash数据接受测试:
数据输出到控制台是否正常配置文件中修改ouput部分
#output {
#    stdout { codec => rubydebug }
#}

三、zookeeper单机部署

3.1 下载并解压至指定目录
~]# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
~]# tar xf zookeeper-3.4.14.tar.gz -C /opt/
~]# ln -s zookeeper-3.4.14 zookeeper

3.2 修改配置文件
~]# cp zoo_sample.cfg zoo.cfg

3.3 启动es
./bin/zkServer.sh start ## 自带启动脚本

四、kafka单机部署

4.1 下载并解压指定目录

~]# wget http://mirror.apache-kr.org/kafka/2.1.0/kafka_2.13-2.4.1.tgz
~]# tar xf kafka_2.13-2.4.1.tar.gz -C /opt/
~]# ln -s kafka_2.13-2.4.1  kafka

4.2 修改配置

listeners=PLAINTEXT://:9098   ##修改端口
zookeeper.connect=10.193.196.57:2188     ## 指定zk地址
log.dirs=/opt/soft/logs/kafka/kafka-logs   ## 修改日志路径

4.3 启动kafka
./bin/kafka-server-start.sh   ## 自带启动脚本

4.4 创建topic
~]# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic_name

## 通过zk客户端连接验证
~]# ./bin/zkCli.sh -server 10.193.xx.xx:2188
[zk: 10.193.xx.xx:2188(CONNECTED) 3] ls /brokers/topics


五、kibana单机部署

5.1 下载并解压至指定目录
~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-linux-x86_64.tar.gz
~]# tar -zxvf kibana-6.4.0-linux-x86_64.tar.gz -C /opt/
~]# ln -s kibana-6.4.0-linux-x86_64 kibana

5.2 修改主配置文件

~]# vim config/kibana.yml       ## 修改内容如下
server.port: 5601
server.host: "192.168.xx.xx"
server.name: "kibana94"
elasticsearch.url: "http://192.168.0.94:9200"      ## 指定es地址

5.3 启动kibana

~]# nohup ./bin/kibana &   ## 后台启动

5.4 验证访问
![](https://img2020.cnblogs.com/blog/1864043/202004/1864043-20200414111411127-543707324.png)

posted @ 2020-04-09 15:41  游子梦  阅读(475)  评论(0编辑  收藏  举报