之前在公司搭建了一套ELK一直没用,前两天公司突然要使用了,因为Linux接口没有对外暴露,所以需要修改端口,两个月没管,突然对服务一脸懵逼,为了防止再次忘记,所以把搭建过程记录下来。
1.搭建 Elasticsearch
下载对应版本,这里用7.5.1:https://www.elastic.co/cn/downloads/elasticsearch,ELK下载路径都一样,所以以下不再阐述
如果是Linux系统,需要注意:
(a)设置内核参数 vim /etc/sysctl.conf
fs.file-max=65536
vm.max_map_count=262144
sysctl -p 刷新下配置,sysctl -a查看是否生效!如果不成功的 执行以下命令
rm -f /sbin/modprobe
ln -s /bin/true /sbin/modprobe
rm -f /sbin/sysctl
ln -s /bin/true /sbin/sysctl
(b)设置资源参数 vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
(c)修改进程数 vi /etc/security/limits.d/20-nproc.conf
* soft nproc 4096
注意:配置完成后,重新打开一个窗口,且不能用root用户启动
接下来把下载好的ES解压到本地,修改config中elasticsearch.yml文件,MAC也可不修改直接用默认
# 配置es的集群名称, es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来 区分不同的集群。
cluster.name: my-es
# 节点名称
node.name: node-39
# 设置绑定的ip地址还有其它节点和该节点交互的ip地址
network.host: 0.0.0.0
# 指定http端口,你使用head、kopf等相关插件使用的端口
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。
#discovery.zen.ping.unicast.hosts: ["1.1.4.2:9300", "1.1.4.3:9300", "1.1.4.5:9300"]
#如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失
#discovery.zen.minimum_master_nodes: 3
cluster.initial_master_nodes: ["node-39"]
http.cors.enabled: true
http.cors.allow-origin: "*"
#某些系统需要 是因为centos6.x操作系统不支持SecComp,而elasticsearch 5.5.2默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
然后可以直接启动 ./bin/elasticsearch 后台启动后面加 -d
打开浏览器访问 http://你的ip:9200/查看是否能够正常访问
2.搭建 Kibana
解压到本地后修改config中Kibana文件,MAC也可不修改直接用默认
#端口
server.port:15601
#允许外网访问
server.host: "0.0.0.0"
#配置ES地址
elasticsearch.hosts: ["http://localhost:9200"]
然后可以直接启动 ./bin/kibana 后台启动 nohup ./bin/kibana &
打开浏览器访问 http://你的ip:15601/查看是否能够正常访问
在Linux系统搭建过程中也会遇到问题,问题出在设置参数那里,不过已顺利通过百度解决
扩展Linux命令:
1、查看服务器端口是否被占用
>lsof -i:8081
2、查看服务器所有端口
>netstat -ntlp
3、查看服务器是否开放某端口
tcp端口:>netstat -ntpl
udp端口:>netstat -nupl
3.搭建 Logstash
解压直接在根目录下创建my-logstash.conf
input {
file {
type => "log"
path => ["/apps/svr/server/*/log.file"]
start_position => "end"
ignore_older => 0
codec=> multiline {
pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}"
negate => true
auto_flush_interval => 5
what => "previous"
}
}
beats {
port => 5044
}
}
output {
if [type] == "log" {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "logstash-%{+YYYY.MM}"
#user => es
#password => es2018
}
}
}
如果本机内存不够可修改 jvm.options
启动logstash指定conf. ./bin/logstash -f my-logstash.conf
4.搭建 FileBeat
解压后在根目录创建filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- 日志路径/*.log
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
negate: true
match: after
max_lines: 1000
timeout: 3s
output.elasticsearch:
hosts: ["127.0.0.1:9200"]
index: "log-%{+yyyy.MM.dd}"
setup.template.name: "filebeat"
setup.template.pattern: "filebeat-*"
启动filebeat指定yml ./filebeat -e -c filebrat.yml
logstash、filebeat 任选其一。至此,ELK环境搭建完毕