Elk部署文档

Posted lg_xbb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elk部署文档相关的知识,希望对你有一定的参考价值。

一、环境配置要求:

组件安装包 功能

Java程序编译运行组件 JDK 1.8.0_211 程序编译运行组件

elasticsearch 日志存储

kibana 日志数据图形化展示

logstash 日志处理

filebeat 日志采集

注:elasticsearch、logstash、kibana、filebeat、ik安装的版本号必须全部一致。

二、安装elasticsearch

  1. 创建es安装路径

mkdir -p /data/elk/data,logs

  1. 创建elk用户

useradd esUser

chown -R elk.elk /data/elk

  1. root权限编辑

vim配置文件/etc/security/limits.conf,最后面添加以下四行数据

* soft nofile 65536

* hard nofile 65536

* soft nproc 65536

* hard nproc 65536

  1. vim配置文件/etc/sysctl.conf,加入以下内容

vm.overcommit_memory = 1

vm.max_map_count=655360

  1. 执行sysctl -p使配置生效

sysctl -p

  1. 传es安装包到es目录下,并解压

cd /data/elk

tar -zxvf elasticsearch-8.6.2-linux-x86_64.tar.gz

  1. 修改配置文件,进入es安装目录config目录下,修改elasticsearch.yml文件

vim /data/elk/elasticsearch-8.6.2/config/elasticsearch.yml

#cluster.name: elk #集群名称

node.name: elk #节点名称

cluster.initial_master_nodes: ["elk"] #主节点信息

path.data: /data/elk/data #数据存放路径

path.logs: /data/elk/logs #日志存放路径

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 0.0.0.0 #所有ip可以访问,

http.prot:9200

#discovery.seed_hosts: ["192.168.1.100:9200"] #输出至elasticsearch服务器

#discovery.zen.minimum_master_nodes: 2 #最多有几个可参与主节点选举

#http.cors.enabled: true

#http.max_initial_line_length: "1024k"

#http.max_header_size: "1024k"

#action.destructive_requires_name: falsie

xpack.license.self_generated.type: basic

  1. 启动es服务

进入es的安装目录/bin下执行(后台启动,无任何错误表示启动完成,此时通过访问 http://ip:9200即可)

./elasticsearch -d

  1. 测试es服务,在浏览器中输入http://ip:9200回车

三、配置TLS 和身份验证

  1. 以下步骤在一台master上执行即可

生成CA证书

cd /data/elk/elasticsearch-8.6.2/bin

./elasticsearch-certutil ca # 两次回车

增加执行权限

./elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 三次回车

  1. 赋予权限(并把证书文件elastic-certificates.p12 复制到其他master节点并赋予权限)

mv elastic-*.p12 config/

chown -R elk.elk config/

  1. 修改配置文件(将所有master配置文件添加ssl)

vim /data/elk/elasticsearch-8.6.2/config/elasticsearch.yml

# 开启安全认证

xpack.security.enabled: true

# 开启ssl

xpack.security.transport.ssl.enabled: true

xpack.security.transport.ssl.verification_mode: certificate

# 生成ca证书

xpack.security.transport.ssl.keystore.path: /opt/elk/elasticsearch-8.6.2/config/elastic-certificates.p12

xpack.security.transport.ssl.truststore.path: /opt/elk/elasticsearch-8.6.2/config/elastic-certificates.p12

  1. 重启elasticsearch

kill -9 123456(elasticsearch对应进程)

./elasticsearch -d

  1. 设置密码

设置默认密码(输入y,分别设置 elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user账号的密码,我这里为了方便都输入统一密码123456

bin/elasticsearch-setup-passwords interactive

四、安装kibana

  1. 上传kibana安装包到elk目录下,并解压

cd /data/elk/

tar -zxvf kibana-8.6.2-linux-x86_64.tar.gz

  1. 修改Kibana配置文件,添加以下内容

vim /data/elk/kibana-8.6.2-linux-x86_64/config/kibana.yml

server.port: 5601 #监听端口,可以不修改

server.host: "0.0.0.0" #修改绑定ip,使外部可以通过http访问

server.publicBaseUrl: "http://192.168.1.10:5601"

elasticsearch.hosts: ["192.168.1.10:9200"]

elasticsearch.username: "kibana"

elasticsearch.password: "123456" #密码为上面设置的

新增以下:

#密钥设置,否则在安全选项相关功能无法查看使用。用密码生成器生成至少32位即可

xpack.encryptedSavedObjects.encryptionKey: iGhu317CGomTQ3UH1nQwYF7yZ8asWPKHHYMwjBUJ

xpack.security.encryptionKey: iGhu317CGomTQ3UH1nQwYF7yZ8asWPKHHYMwjBUJ

xpack.reporting.encryptionKey: iGhu317CGomTQ3UH1nQwYF7yZ8asWPKHHYMwjBUJ

  1. 汉化

  1. 启动kibana

./bin/kibana &

设置一键启动,并增加日志

vim start-kibana.sh

chmod +x start-kibana.sh

nohup ./bin/libana > kibana.log 2>&1 &

启动kibana

./start-kibana

  1. 通过浏览器访问http://ip:5601验证

  1. 安装logstast

  1. 解压安装包,并授权安装目录

cd /data/elk

tar -xzvf logstash-8.6.2.tar.gz

chown -R elk:elklogstash-8.6.2

修改logstash配置文件,在logstash-8.6.2目录下创建pipeline。

将logstash-sample.conf文件拷贝到pipeline该文件夹下,修改logstash-sample.conf中output中elasticsearch的地址。

cd /data/elk/logstash-8.6.2/pipeline

mv /data/elk/logstash-8.6.2/config/logstash-sample.conf .

vim logstash-sample.conf

input

beats

port => 5044

filter

output

elasticsearch

hosts => ["192.168.1.10:9200"]

index => "logstash-dev-%+YYYY.MM.dd"

user => "elastic"

password => "123456"

stdout codec => rubydebug

  1. 启动logstash服务,必须elk用户下执行启动命令

su - elk

cd /data/elk/logstash-8.6.2/

nuhup ./bin/logstash -f ./pipeline/logstash-sample.conf > logstash.log &

  1. 配置启动配置

vim start-logstash.sh

nohup /opt/elk/logstash-8.6.2/bin/logstash -e -f config/logstash--sample.conf --config.reload.automatic > logstash.log 2>&1 &

  1. Filter配置

gork配置(通过正则匹配将message内容进行拆分)

/data/elk/logstash-8.6.2/vendor/bundle/jruby/2.6.0/gems/logstash-patterns-core-4.3.4/patterns/legacy/grok-patterns #正则匹配规则表达式

日志

183.220.95.33 - - [07/Mar/2023:10:21:46 +0800] "-" "0.011" "237" "https" "404" "adpub.upchinaproduct.com" "POST /getAds?platform=1&position=10&userId=up3342439&guid=13b1fcadb446aac4a455582f28a90019&timestamp=1678155706 HTTP/1.1" "/getAds" "platform=1&position=10&userId=up3342439&guid=13b1fcadb446aac4a455582f28a90019&timestamp=1678155706" "1273" "172.16.3.50:13510" "0.011" "-"

gork表达式

%IPV4:remote_addr - - \\[%HTTPDATE:log_timestamp\\] \\"(?:%URI:http_referrer|-)\\" \\"(%BASE10NUM:upstream_response_time|-)\\" \\"(%POSINT:u123|-)\\" (%QUOTEDSTRING:123|-) \\"%BASE10NUM:http_status\\" \\"(?:%URIHOST:host|-)\\" (%QUOTEDSTRING:1233|-) (%QUOTEDSTRING:1243|-) (%QUOTEDSTRING:1235|-) \\"(%POSINT:u124|-)\\" \\"(?:%URIHOST:hostport|-)\\" \\"(%BASE10NUM:response_time|-)\\" \\"(%GREEDYDATA:user_agent|-)\\"

输出:

"123": "\\"https\\"",

"1233": "\\"POST /getAds?platform=1&position=10&userId=up3342439&guid=13b1fcadb446aac4a455582f28a90019&timestamp=1678155706 HTTP/1.1\\"",

"1235": "\\"platform=1&position=10&userId=up3342439&guid=13b1fcadb446aac4a455582f28a90019&timestamp=1678155706\\"",

"1243": "\\"/getAds\\"",

"log_timestamp": "07/Mar/2023:10:21:46 +0800",

"remote_addr": "183.220.95.33",

"u123": "237",

"u124": "1273",

"hostport": "172.16.3.50:13510",

"port": "13510",

"host": "adpub.upchinaproduct.com",

"upstream_response_time": "0.011",

"http_status": "404",

"response_time": "0.011",

"user_agent": "-"

Logstash过滤配置

filter

grok

match => "message" => "%IPV4:remote_addr - - \\[%HTTPDATE:log_timestamp\\] \\"(?:%URI:http_referrer|-)\\" \\"(%BASE10NUM:upstream_response_time|-)\\" \\"(%POSINT:u123|-)\\" (%QUOTEDSTRING:123|-) \\"%BASE10NUM:http_status\\" \\"(?:%URIHOST:host|-)\\" (%QUOTEDSTRING:1233|-) (%QUOTEDSTRING:1243|-) (%QUOTEDSTRING:1235|-) \\"(%INT:u124|-)\\" \\"(?:%URIHOST:hostport|-)\\" \\"(%BASE10NUM:response_time|-)\\" \\"(%GREEDYDATA:user_agent|-)\\""

六、安装filebeat

Filebeat部署在需要采集日志的节点上,由于当前收集的是root用户下的日志,因此filebeat在root用户下安装,否则需要用户具备对日志目录的读取权限。

  1. 进入elk目录,上传并解压安装包

cd /data/elk/

tar xzvf filebeat-8.6.2-linux-x86_64.tar.gz

  1. 修改配置文件

vim filebeat.yml

# ============================== Filebeat inputs ===============================

filebeat.inputs:

- type: log

id: my-filestream-id

enabled: true

paths:

- /var/log/*.log

# ============================== Filebeat modules ==============================

filebeat.config.modules:

path: $path.config/modules.d/*.yml

reload.enabled: true

#reload.period: 10s

# ======================= Elasticsearch template setting =======================

setup.template.settings:

index.number_of_shards: 1

# =================================== Kibana ===================================

setup.kibana:

host: "192.168.1.10:5601"

# ================================== Outputs ===================================

# ------------------------------ Logstash Output -------------------------------

output.logstash:

# The Logstash hosts

hosts: ["192.168.1.10:5044"]

提示密码问题加上账号密码

username: "elastic"

password: "123456"

# ================================= Processors =================================

processors:

- add_host_metadata:

when.not.contains.tags: forwarded

- add_cloud_metadata: ~

- add_docker_metadata: ~

- add_kubernetes_metadata: ~

  1. 启动filebeat

./filebeat -e -c filebeat.yml

配置一键启动

vim start-filebeat.sh

nohup ./filebeat -e -c filebeat.yml > filebeat.log 2>&1 &

chmod +x start-filebeat.sh

注意:

  1. 要使用正确的权限运行 Filebeat 和 Logstash 进程。

  1. Filebeat在读取新的目录前会首先尝试打开原来目录中的文件。这就意味着,如果在配置新目录之前,原来目录已经不存在或者已经被删除了,那么Filebeat就无法正常工作了。因此,在配置新目录之前一定要确保原来目录存在并且可以正常读写。

  1. 要注意 Filebeat 配置文件中的“ignore_older”选项是否正确设置。如果 ignore_older 过大或者过小都会对 Filebeat 的数据采集造成影响。

ELK 安装部署文档-实战

技术分享

ELK 实际图例

技术分享

技术分享

技术分享


详细内容见:
https://www.chinasa.net/archives/297.html



以上是关于Elk部署文档的主要内容,如果未能解决你的问题,请参考以下文章

基于Docker容器部署ELK日志分析系统

Elk部署文档

ELK+filebeat日志分析系统部署文档

Filebeat+ELK部署文档

CentOS7部署ELK5.2

为你讲解ELK的组成与部署