ELK 部署
Posted 小小菜_v
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK 部署相关的知识,希望对你有一定的参考价值。
ELK 部署指南
背景
ELK是elasticsearch,logstash和kibana三个的首字母缩写。
elasticsearch是搜索和分析引擎。
logstash是服务器端数据处理管道,能从多个来源采集数据和转换数据,然后将数据发送到类似elasticsearch的存储库中。
kibana则是可以让用户在elasticsearch中通过使用图形和图表数据进行可视化。
环境信息
操作系统: CentOS 7.6
软件版本: 7.13.2
1、jdk16安装
# 下载
cd /opt
wget https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk16u-2021-05-08-12-45/OpenJDK16U-jdk_aarch64_linux_hotspot_2021-05-08-12-45.tar.gz
# 解压
tar -zxvf OpenJDK16U-jdk_aarch64_linux_hotspot_2021-05-08-12-45.tar.gz
# 导入环境变量
export JAVA_HOME=/opt/jdk-16.0.1+9
export PATH=$JAVA_HOME/bin:$PATH
2、系统参数配置
# 修改最大文件打开数
ulimit -n 102400
# 最大文件描述符限制
sysctl -w fs.file-max=102400
# 查看和修改 vm.max_map_count大小
sysctl -a|grep vm.max_map_count
sysctl -w vm.max_map_count=262144
3、elasticsearch下载安装
mkdir -p /home/tools
cd /home/tools
# 下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.2-linux-aarch64.tar.gz
解压
tar -zxvf elasticsearch-7.13.2-linux-aarch64.tar.gz
# 删除自带的jdk,使用jdk16
cd elasticsearch-7.13.2
rm -rf ./jdk/*
cp -r $JAVA_HOME/* ./jdk/
# 创建数据存储和日志目录
mkdir -p /home/elastic/data
mkdir -p /home/elastic/logs
# 修改elasticsearch配置
vim config/elasticsearch.yml
cluster.name: my-application
node.name: node-elk-001
path.data: /home/elastic/data
path.logs: /home/elastic/logs
network.host: 180.80.80.199
http.port: 9200
discovery.seed_hosts: ["node-elk-001"]
cluster.initial_master_nodes: ["node-elk-001"]
xpack.ml.enabled: false
# 测试验证是否安装成功
# 添加elastic用户(elasticsearch不能用root用户启动)
useradd elastic
chown elastic:elastic /home/tools/elasticsearch-7.13.2 -R
chown elastic:elastic /home/elastic/ -R
#切换用户
su - elastic
#后台运行
nohup ./bin/elasticsearch &
# 连接
curl -l http://180.80.80.199:9200
出现如下代表运行成功
{
"name" : "node-elk-001",
"cluster_name" : "my-application",
"cluster_uuid" : "MVCC3mI2RuOv******",
"version" : {
"number" : "7.13.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "4d960a0733be83dd2543ca018aa4ddc42e956800",
"build_date" : "2021-06-10T21:01:55.251515791Z",
"build_snapshot" : false,
"lucene_version" : "8.8.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
4、kibana安装
cd /home/tools
# 下载软件
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gz
# 解压
tar -zxvf kibana-7.8.0-linux-x86_64.tar.gz
cd kibana-7.8.0-linux-x86_64
# 打开文件修改配置
vi config/kibana.yml
server.port: 5601
server.host: "180.80.80.199"
server.name: "node-elk-001"
elasticsearch.hosts: ["http://180.80.80.199:9200"]
kibana.index: ".kibana"
xpack.security.enabled: false
# 下载node
cd /home/tools
wget https://nodejs.org/dist/v10.21.0/node-v10.21.0-linux-arm64.tar.gz
tar -xvf node-v10.21.0-linux-arm64.tar.gz
# 替换kibana 目录下的node
cd kibana-7.8.0-linux-x86_64
rm -rf node/*
cp -r /home/tools/node-v10.21.0-linux-arm64/* ./node
# 测试运行
nohup ./bin/kibana &
5、logstash安装下载
登录到收集日志的服务器上180.80.80.166
cd /home/tools
# 下载
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.8.0.tar.gz
# 解压
tar -xvf logstash-7.8.0.tar.gz
cd logstash-7.8.0
# 创建目录
mkdir self_config
#修改文件
vi self_config/logstash.conf
logstash.conf
input {
file {
path => "/opt/log/sys_*.log" #需要收集日志目录
type => "django_log" # 日志类别
start_position => "beginning" # 开始读取数据的位置
# 合并多行数据,日志开头不是[则和上一条合并
codec=> multiline{
pattern => "^\\["
negate => true
what => "previous"
}
}
}
# 提取日志日期到@timestamp字段,kibana只能以@timestamp字段为时间字段分割日志
filter {
grok {
# 匹配日志时间并赋值到log_time字段
match => {"message" => "\\[(?<log_time>[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})\\]"}
}
date {
# 匹配日期时间log_time 并赋值到tmp_time
match => ["log_time", "yyyy-MM-dd HH:mm:ss,SSS"]
target => "tmp_time"
}
# 若tmp_time不为空, 则复制到@timestamp,同时删除tmp_time字段
if [tmp_time] {
ruby {
code => "event.set('@timestamp', event.get('tmp_time'))"
}
mutate {
remove_field => ["tmp_time"]
}
}
}
output {
if [type] == "django_log" {
elasticsearch {
# elasticsearch 服务器hosts
hosts =>["180.80.80.199:9200"]
# 上报日志索引,索引名只能小写,不能大写
index => "django_log_166-%{+YYYY.MM.dd}"
}
}
# stdout { codec => rubydebug } # 打印
}
测试运行
nohup ./bin/logstash -f self_config/logstash.conf -- config.reload.automatic &
6、FAO:
问题报错解决见链接:https://blog.csdn.net/qq_42352516/article/details/118083909?spm=1001.2014.3001.5502
以上是关于ELK 部署的主要内容,如果未能解决你的问题,请参考以下文章