集约化日志分析平台《二》——搭建ELK环境
ElasticSearch(简称ES),是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。
Logstash,是一个数据收集引擎,主要用于进行数据收集、解析,并将数据发送给ES。支持的数据源包括本地文件、ElasticSearch、MySQL、Kafka等等。
Kibana,为 Elasticsearch 提供了分析和 Web 可视化界面,并生成各种维度表格、图形。
ELK系统流程图
环境依赖:CentOS7.5,JDK11,ElasticSearch7.10.1,Logstash 7.10.1,Kibana7.10.1
仔细点,你会发现,ELK三个版本是一样得,这三个工具现在就是成套开发,整套使用的
一、数据源
Logstash支持的数据源种类繁多哦,咱们这里先用最简单的搞起来。直接放一个日志文件,就叫ELK.log吧,文件随便整点。
文件路径为:
/home/slave1/ELK/data
内容如下:
Start....... What is Apache Flink? Architecture Applications Operations What is Stateful Functions? Use Cases Powered By Downloads Getting Started Documentation Getting Help Flink Blog flink-packages.org End............
二、Logstash
当前Logstash版本是7.10。jdk1.8够用了。
下载logstash压缩文件
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.1-linux-x86_64.tar.gz
解压文件,找到/config目录下的logstash-sample.conf文件,修改配置:
input { file{ path => ['/home/slave1/ELK/data/*.log'] type => 'user_log' start_position => "beginning" } } output { elasticsearch { hosts => ["http://192.168.149.128:9200"] index => "user-%{+YYYY.MM.dd}" } }
input表示输入源,output表示输出,还可以配置filter过滤,架构如下:
配置完之后,要有数据源,也就是日志文件,准备一个user.jar应用程序,然后后台启动,并且输出到日志文件user.log中,命令如下:
nohup java -jar user.jar >/usr/local/user/user.log &
接着再后台启动Logstash,命令如下:
nohup /home/slave1/ELK/logstash-7.10.1/bin/logstash -f /home/slave1/ELK/logstash-7.10.1/config/logstash-sample.conf &
启动完之后,使用jps
命令,可以看到两个进程在运行:
[slave1@xulshslave1 logstash-7.10.1]$ nohup /home/slave1/ELK/logstash-7.10.1/bin/logstash -f /home/slave1/ELK/logstash-7.10.1/config/logstash-sample.conf & [1] 5551 [slave1@xulshslave1 logstash-7.10.1]$ nohup: ignoring input and appending output to ‘nohup.out’ [slave1@xulshslave1 logstash-7.10.1]$ jps 5579 Jps 5551 Logstash
三、ElasticSearch
下载压缩文件
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz
找到config目录下的elasticsearch.yml文件,修改配置:
cluster.name: es-application
node.name: node-1
#对所有IP开放
network.host: 0.0.0.0
#HTTP端口号
http.port: 9200
#elasticsearch数据文件存放目录
path.data: /usr/elasticsearch-7.10.1/data
#path.data: /home/slave1/ELK/elasticsearch-7.10.1/data
#elasticsearch日志文件存放目录
path.logs: /usr/elasticsearch-7.10.1/logs
#path.logs: /home/slave1/ELK/elasticsearch-7.10.1/logs
配置完之后,因为ElasticSearch使用非root用户启动,所以创建一个用户。
# 创建用户
useradd esstorenew
# 设置密码
passwd esstorenew
# 赋予用户权限
chown -R esstorenew:esstorenew /home/slave1/ELK/elasticsearch-7.10.1/
chown -R esstorenew:esstorenew /usr/elasticsearch-7.10.1/
然后切换用户,启动:
# 切换用户 su esstorenew # 启动 -d表示后台启动 ./bin/elasticsearch -d
这个地方可能有报错信息
Error: Could not find or load main class org.elasticsearch.tools.java_version_checker.JavaVersionChecker
这是什么原因呢?解决方法
把elasticsearch目录换到不属于root目录的其他目录就行了
继续报错:
future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_161/jre] does not meet this requirement future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_161/jre] does not meet this requirement
好吧,更新jdk版本了。
继续报错:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] [2]: max number of threads [3818] for user [es] is too low, increase to at least [4096] [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法:
修改 etc/security/limits.conf
sudo vi /etc/security/limits.conf
在文件最后面加上
* soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096
注:*后面有空格
修改 /etc/sysctl.conf
sudo vi /etc/sysctl.conf
在文件最后面加上
vm.max_map_count=262144
配置重新生效
sysctl -p
重新启动
上一步遗留的错误需要继续解决啊
根据错误提示,在配置文件中添加如下设置:
重启服务,未报错,由于jdk版本的因素,可能有警告,不碍事。
使用命令netstat -nltp
查看端口号:
访问http://192.168.149.128:9200/可以看到如下信息,表示安装成功。
记住——一定要拿这个信息和配置文件的信息去比对,这种工具类软件,玩得就是个配置文件。
要是访问不了,就需要检查网络了,常规问题是
1.外网访问不了该ip。
2.防火墙未关闭或者端口未开放。
四、Kibana
首先还是下载压缩包,然后解压,找到/config目录下的kibana.yml文件,修改配置:
server.port: 5601 server.host: "192.168.149.128" elasticsearch.hosts: ["http://192.168.149.128:9200"]
和elasticSearch一样,不能使用root用户启动,需要创建一个用户:
# 创建用户
useradd kibananew
# 设置密码
passwd kibananew
# 赋予用户权限
chown -R kibananew:kibananew /usr/kibana-7.10.1-linux-x86_64/
然后使用命令启动:
#切换用户 su kibananew #非后台启动,关闭shell窗口即退出 ./bin/kibana #后台启动 nohup ./bin/kibana &
启动后在浏览器打开http://192.168.0.111:5601,可以看到kibana的web交互界面:
---------------------------------------------------
作者:杨兮臣
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用闲暇时间,把自己毕生所学整理一下,感谢行业的技术大咖