ELK的搭建以及部署(Linux的版本)

ELK的搭建以及部署(Linux的版本)

一、什么是ELK

ELK是Elasticsearch + Logstash + Kibana 这种架构的简写.

二、ELK常见的架构

Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。

Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。

Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如rabbitmq(集群化)) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。

下面如何搭建:

(1)Elasticsearch 安装与部署

下载地址(ELK要求版本一致)

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz

下载完了之后进行上传LInux这边使用xshell的rz上传

使用命令

tar -zxvf  ******.tar.gz

进行解压解压完了之后进行修改配置

cd /usr/demo/elasticsearch-7.8.0/config

编辑目录下的elasticsearch.yml文件

vim elasticsearch.yml
cluster.name: myes  #主要修改这个跟host 这个是我们的es的标识相当于组名
node.name: “node-1”
network.host: 10.1.40.241 #地址一般写本地的 127.0.0.1
http.cors.allow-origin:*”
discovery.type: single-node

因为es不能在root下启动所以要更换用户

# 为elaticsearch创建用户

groupadd limao
useradd limao -g limao -p elasticsearch

# 分配权限

chown -R limao:limao elasticsearch-7.10.2

# 切换用户到limao

su limao

启动

# 后台启动

./elasticsearch &
# 验证启动是否成功

http://127.0.0.1::9200

{
  "name" : "my-name",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Px7djFasdfasdfa4eGTSbQ",
  "version" : {
    "number" : "7.10.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "747e1cc71def077253878a123123123123",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

(2)logstash配置/启动

下载地址:https://artifacts.elastic.co/downloads/logstash/logstash-7.10.2-linux-x86_64.tar.gz

Logstash 支持各种输入选择,例如:beats、file、http、jdbc、redis、kafka… …,其中在文件采集时,官方建议使用beats(因为logstash是基于java开发的,需要在jvm跑。当进行采集时会对内存、cpu、io等资源消耗比较高,而beats是基于go语言开发,性能接近c语言,是专为并发而生的).

同上解压然后进行操作这个配置文件的input为filebeat可以根据情况进行修改

cd logstash-7.10.2/config

# 自定义配置文件

vim logstash-yjg.conf

input {
  beats {
    port => 7880
  }
}

#filter-start
filter {
  mutate{
                       remove_field => ["cloud","agent","ecs","input","host"]
                       gsub => ["message","^\[",""]
                       split => {"message"=>"-|"}
                        add_field =>   {
                                "user" => "%{[message][0]}"
                        }
                        add_field =>   {
                                "product" => "%{[message][1]}"
                        }
                        add_field =>   {
                                "application" => "%{[message][2]}"
                        }
                        add_field =>   {
                                "host_port" => "%{[message][3]}"
                        }
                        add_field =>   {
                                "traceNo" => "%{[message][4]}"
                        }
                        add_field =>   {
                                "time" => "%{[message][5]}"
                        }
                        add_field =>   {
                                "level" => "%{[message][6]}"
                        }
                       add_field => {
                               "thread" => "%{[message][7]}"
                       }
                       add_field => {
                               "caller_class_name" => "%{[message][8]}"
                       }
                       add_field => {
                               "caller_line_number" => "%{[message][9]}"
                       }
                       add_field => {
                               "tid" => "%{[message][10]}"
                       }
                       add_field => {
                               "spanId" => "%{[message][11]}"
                       }
                       add_field => {
                               "apiCode" => "%{[message][12]}"
                       }
                       add_field => {
                               "api_code" => "%{[message][13]}"
                       }
                       add_field => {
                               "kit_code" => "%{[message][14]}"
                       }
                       add_field => {
                               "msg" => "%{[message][15]}"
                       }
	copy => {"[log][offset]" => "offset" }
        copy => {"[log][file][path]" => "path" }
	remove_field => ["message","tags","@version","log","beat"] 
  }
  date{ match => ["time","yyyy-MM-dd HH:mm:ss.SSS"]  target => "time"}
}
output {
  elasticsearch {
    hosts => ["http://10.1.40.241:9200"]
    index => "limaodongdemo"
   #  user => "elastic"
   # password => "1qazxsw@"
  }
  stdout {
    codec => rubydebug { }
 }
}

启动

# 后台启动logstash,并加载指定配置文件

nohup ./bin/logstash -f config/logstash-yjg.conf > log.txt 2>&1 &
2.filebeat的安装整合

https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.2-linux-x86_64.tar.gz

vim filebeatdemo1.yml
 
# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
  # 默认是关闭的,需要手动打开
  enabled: true
  paths:
    # 数组形式,支持多个日志采集
    - /tmp/logs/*.log
    - /data/logs/*.log
 
# ------------------------------ Logstash Output -------------------------------
output.logstash:
  # 输出到logstash端口
  hosts: ["10.1.40.241:7880"]
#启动filebeat命令
./filebeat -e -c filebeatdemo1.yml -d "publish"

(3)kibana配置/启动

cd kibana-7.10.2-linux-x86_64/config

vim kibana.yml

server.name: "my-kibana"
server.port: 5601         #kibana端口
server.host: "0.0.0.0"   #所有主机都能访问,或者也可以指定一个ip
elasticsearch.hosts: "http://10.1.40.241:9200"     #配置es的访问地址     
kibana.index: ".kibana"

# 设置中文(注意,如果是kibana-6*版本的话,需要下载python的服务,手动翻译,替换原文件,比较麻烦,故使用7版本)
i18n.locale: "zh-CN"

因为kibana也不支持root用户启动所以要换用户

useradd es
#修改/etc/sudoers文件,进入超级用户,因为没有写权限,所以要先把写权限加上
chmod u+w /etc/sudoers
#编辑/etc/sudoers文件,找到这一 行
vim /etc/sudoers
root ALL=(ALL:ALL) ALL
#添加这一行 es为新添加的用户名
es    ALL=(ALL)       ALL
#为了安全撤销文件的写权限
chmod u-w /etc/sudoers
#给es普通用户授理访问这个文件权限
sudo chown -R es:es /usr/local/softwore/kibana
#切换到es用户
su es
# 启动kibana

./kibana
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值