记录ELK的搭建过程和遇到的问题,
所有下载链接都在官方下载地址
建议服务器配置高一些,例如2HG
下载后上传到对应的服务器位置
解压 : tar -xzvf file.tar.gz
配置磁盘,当磁盘大于95%,就只能读取,不能写入
cluster.routing.allocation.disk.threshold_enabled: false
解压后,进入对应目录,启动,因为es不能root启动(为啥我也不知道),所以需要增加新的用户
# adduser esuser
# passwd esuser
然后输入两次密码 进行创建
然后赋予es文件夹权限,命令是 chmod -R esuser XXX(对应的文件夹,例如chmod -R esuser elasticsearch-6.5.4)
这里注意,不知道为啥,我在腾讯云设置的时候一直报错,就是chmod命令使用的问题,在阿里云的时候就没事,如果上面的命令执行有问题,可以使用 : chown -R esuser xxxx ,效果一样
切换esuser启动项目
# su esuser
在elasticsearch-6.5.4中
# bin/elasticsearch -d
-d是后台启动
然后tail -f logs/elasticsearch.log 查看启动log
这是分配的虚拟内存的问题,需要设置 使用root权限
# sysctl -w vm.max_map_count=262144
查看结果:
# sysctl -a|grep vm.max_map_count
显示:
vm.max_map_count = 262144
上述方法修改之后,如果重启虚拟机将失效,所以:
解决办法:
在 /etc/sysctl.conf文件最后添加一行
# vm.max_map_count=262144
即可永久修改
这是文件描述的大小要求
使用
# ulimit -Hn
# ulimit -Sn
分别查看大小,具体都是啥意思不知道
如果太小,进行修改
# vim /etc/security/limits.conf
在最后面添加
* - nofile 65536
* - memlock unlimited
*表示给所有用户起作用
然后记住,需要退出登录的用户,直接关闭窗口就行,才能生效
权限问题
# chown -R esuser xxxx
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_linux.cpp:2749), pid=22669, tid=0x00007f7c5c3ea700
一般这个问题都是内存的问题,无非就是加大物理内存,或者设置jvm的虚拟内存,这里设置虚拟内存
es 的路径是 /usr/local/ELK/elasticsearch-6.6.1/config/jvm.options
修改里面的jvm虚拟内存
################################################################
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms512m
-Xmx512m
################################################################
因为默认是是1g,这里修改成512m
这里还是建议服务器的内存大一些,512m有时候会出现问题,内存不足的情况,es个人感觉还是挺耗内存的
简单 修改配置,路径 : /usr/local/ELK/elasticsearch-6.6.1/config/elasticsearch.yml
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
需要重启,我知道的方式就是 kill ,再重启。
给linux增加虚拟内存
[root@VM_0_12_centos java]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 5.3G 42G 12% /
devtmpfs 487M 0 487M 0% /dev
tmpfs 497M 24K 497M 1% /dev/shm
tmpfs 497M 368K 496M 1% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/0
[root@VM_0_12_centos java]# dd if=/dev/zero of=swapfile bs=1024000 count=2000
2000+0 records in
2000+0 records out
2048000000 bytes (2.0 GB) copied, 19.6403 s, 104 MB/s
[root@VM_0_12_centos java]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 7.2G 40G 16% /
devtmpfs 487M 0 487M 0% /dev
tmpfs 497M 24K 497M 1% /dev/shm
tmpfs 497M 368K 496M 1% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/0
[root@VM_0_12_centos java]# free -h
total used free shared buff/cache available
Mem: 992M 113M 113M 404K 765M 706M
Swap: 0B 0B 0B
[root@VM_0_12_centos java]# mkswap swapfile
Setting up swapspace version 1, size = 1999996 KiB
no label, UUID=e0fa331d-4251-4dce-ab64-500ac5b349f6
[root@VM_0_12_centos java]# swapon swapfile
swapon: /usr/local/java/swapfile: insecure permissions 0644, 0600 suggested.
[root@VM_0_12_centos java]# chmod 600 swapfile
[root@VM_0_12_centos java]# free -h
total used free shared buff/cache available
Mem: 992M 115M 60M 404K 816M 705M
Swap: 1.9G 0B 1.9G
[root@VM_0_12_centos java]# ps -ef|grep java
这个方法最开始成功了,但是运行了一段时间,就开始出现了问题,具体情况还在研究,还是硬件问题
简单解压,启动,如果有想要修改的查询对应配置文件
启动
nohup bin/kibana &
记得查看是否启动成功,访问对应的网址和端口号,查看页面
可以修改修改,路径 /usr/local/ELK/kibana-6.6.1-linux-x86_64/config下的kibana.yml
端口号,5601 好像es会占用,不过新部署的一个就没事,具体情况还未了解,大概意思就是如果被占用耿冠端口号
server.port: 5602
可以改成外网访问
server.host: "0.0.0.0"
解压压缩文件
进入config里,复制一个配置文件
# cp ./logstash-sample.conf logstash-elk-test.conf
编辑
# vim ./logstash-elk-test.conf
input {
tcp {
port => 9601
mode => "server"
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "applog"
#user => "elastic"
#password => "changeme"
}
}
启动命令
# ./bin/logstash -f ./config/logstash-elk-test.conf
看到这个信息标识启动成功
[2019-02-02T14:26:47,366][INFO ][logstash.inputs.tcp ] Starting tcp input listener {:address=>"0.0.0.0:9601", :ssl_enable=>"false"}
[2019-02-02T14:26:47,643][INFO ][logstash.pipeline ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#"}
[2019-02-02T14:26:47,688][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-02-02T14:26:47,877][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
pom里添加logstash依赖
net.logstash.logback
logstash-logback-encoder
4.11
配置logback
xxx.xxx.xxx.xxx:9601
xxx.xxx.xxx.xxx,对应服务器的ip
有个神器 叫 x-pack,可以了解一下,但是发现好像6.6.1已经有了monitoring,链接
需要进行配置,这个还在学习,胡乱点点倒是能出来
这些问题解决,个人感觉才能算是一个可用的ELK日志服务