ELK(Elasticsearch + Logstash + K
写在前面
首先,最好的学习方式是:看官网!版本更新后,有些接口会跟着改变,因此官网是最好的指导书!
其次,出现问题时,1.看log! 2. 看官网!
我的系统架构
先介绍一下我的系统架构,以便参考。
需求:收集线上服务器的各种log,然后分析并可视化,对某些级别的log进行告警。
痛点:1)线上服务器较多,较分散
2)log比较庞大
根据我的需求,采用了以下架构。
1) files ---> logstash --> redis
2) redis--> logstash --> elasticsearch --> kibana
首先,要收集的logfile分布在不同的服务器上,通过logstash将不同服务器的logfile收集到redis.
然后,再使用logstash从redis中读取log,到es cluster,从而通过kibana可视化输出。
这样做,可以使得收集log和处理log解耦,以免一边出错带来的影响。
注:我的系统为ubuntu16.04
前提条件
ELK基于jdk,因此需要先安装jdk.本文使用源码安装。
1. 下载jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2. 解压
tar xzvf jdk-8u144-linux-x64.tar.gz
3. 配置环境变量
sudo vi /etc/profile
在最后加入:
export JAVA_HOME=/home/radmin/Software/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
4. 加载环境变量使之生效
source /etc/profile
5. 检查java安装是否OK
java --version
ELK安装及配置
本文仅介绍源码安装
1. 下载源码elasticsearch, logstash, kibana
https://www.elastic.co/downloads
elasticsearch-6.3.1.tar.gz
kibana-6.3.1-linux-x86_64.tar.gz
logstash-6.3.2.tar.gz
2. 解压包
tar xzvf elasticsearch-6.3.1.tar.gz
tar xzvf kibana-6.3.1-linux-x86_64.tar.gz
tar xzvf logstash-6.3.2.tar.gz
3. 下载redis并安装配置
sudo apt-get install redis-server
安装完,通过以下命令查看安装是否成功
ps -ef | grep redis
redis 18628 1 0 18:42 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379
修改配置文件,设置密码,并修改IP
sudo vim /etc/redis/redis.conf
bind <your_IP>
requirepass <your_password>
重启redis
sudo service redis restart
查看进程:
ps -ef|grep redis
redis 18628 1 0 18:42 ? 00:00:00 /usr/bin/redis-server <your_ip>:6379
4. 配置ELK
1) Elasticsearch
vi config/elasticsearch.yaml
cluster.name: <your_cluster>
node.name: <your_ip>
path.data: /home/elastic/data
path.logs: /home/elastic/logs
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["your_host"]
启动elasticsearch
nohup ./elasticsearch -d
2) Kibana
vi config/kibana.yml
server.port: 5601
server.host: "<your_host>"
elasticsearch.url: "http://<your_host>:9200"
启动kibana
nohup ./kibana &
3) Logstash
添加配置文件(关于logstash的配置文件,在后续章节中记录)
nohup bin/logstash -f xxx.conf --config.reload.automatic &
问题:
1) 起elasticsearch时报错:
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
sudo vi /etc/sysctl.conf
vm.max_map_count=655300
sudo sysctl -p