Elk部署文档
Posted lg_xbb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elk部署文档相关的知识,希望对你有一定的参考价值。
一、环境配置要求:
组件安装包 功能
Java程序编译运行组件 JDK 1.8.0_211 程序编译运行组件
elasticsearch 日志存储
kibana 日志数据图形化展示
logstash 日志处理
filebeat 日志采集
注:elasticsearch、logstash、kibana、filebeat、ik安装的版本号必须全部一致。
二、安装elasticsearch
创建es安装路径
mkdir -p /data/elk/data,logs
创建elk用户
useradd esUser
chown -R elk.elk /data/elk
root权限编辑
vim配置文件/etc/security/limits.conf,最后面添加以下四行数据
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
vim配置文件/etc/sysctl.conf,加入以下内容
vm.overcommit_memory = 1
vm.max_map_count=655360
执行sysctl -p使配置生效
sysctl -p
传es安装包到es目录下,并解压
cd /data/elk
tar -zxvf elasticsearch-8.6.2-linux-x86_64.tar.gz
修改配置文件,进入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
启动es服务
进入es的安装目录/bin下执行(后台启动,无任何错误表示启动完成,此时通过访问 http://ip:9200即可)
./elasticsearch -d
测试es服务,在浏览器中输入http://ip:9200回车
三、配置TLS 和身份验证
以下步骤在一台master上执行即可
生成CA证书
cd /data/elk/elasticsearch-8.6.2/bin
./elasticsearch-certutil ca # 两次回车
增加执行权限
./elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 三次回车
赋予权限(并把证书文件elastic-certificates.p12 复制到其他master节点并赋予权限)
mv elastic-*.p12 config/
chown -R elk.elk config/
修改配置文件(将所有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
重启elasticsearch
kill -9 123456(elasticsearch对应进程)
./elasticsearch -d
设置密码
设置默认密码(输入y,分别设置 elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user账号的密码,我这里为了方便都输入统一密码123456
bin/elasticsearch-setup-passwords interactive
四、安装kibana
上传kibana安装包到elk目录下,并解压
cd /data/elk/
tar -zxvf kibana-8.6.2-linux-x86_64.tar.gz
修改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
汉化
启动kibana
./bin/kibana &
设置一键启动,并增加日志
vim start-kibana.sh
chmod +x start-kibana.sh
nohup ./bin/libana > kibana.log 2>&1 &
启动kibana
./start-kibana
通过浏览器访问http://ip:5601验证
安装logstast
解压安装包,并授权安装目录
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
启动logstash服务,必须elk用户下执行启动命令
su - elk
cd /data/elk/logstash-8.6.2/
nuhup ./bin/logstash -f ./pipeline/logstash-sample.conf > logstash.log &
配置启动配置
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 &
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×tamp=1678155706 HTTP/1.1" "/getAds" "platform=1&position=10&userId=up3342439&guid=13b1fcadb446aac4a455582f28a90019×tamp=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×tamp=1678155706 HTTP/1.1\\"",
"1235": "\\"platform=1&position=10&userId=up3342439&guid=13b1fcadb446aac4a455582f28a90019×tamp=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用户下安装,否则需要用户具备对日志目录的读取权限。
进入elk目录,上传并解压安装包
cd /data/elk/
tar xzvf filebeat-8.6.2-linux-x86_64.tar.gz
修改配置文件
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: ~
启动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
注意:
要使用正确的权限运行 Filebeat 和 Logstash 进程。
Filebeat在读取新的目录前会首先尝试打开原来目录中的文件。这就意味着,如果在配置新目录之前,原来目录已经不存在或者已经被删除了,那么Filebeat就无法正常工作了。因此,在配置新目录之前一定要确保原来目录存在并且可以正常读写。
要注意 Filebeat 配置文件中的“ignore_older”选项是否正确设置。如果 ignore_older 过大或者过小都会对 Filebeat 的数据采集造成影响。
ELK 安装部署文档-实战
ELK 实际图例
详细内容见:
https://www.chinasa.net/archives/297.html
以上是关于Elk部署文档的主要内容,如果未能解决你的问题,请参考以下文章