一、ELK简介
在日常运维工作中,对于系统和业务日志的处理尤为重要。今天,在这里分享一下自己部署的Filebeat+ELK开源实时日志分析平台的记录过程,有不对的地方还望指出。
简单介绍:
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
Filebeat+ELK是四个开源工具组成,简单解释如下:
Filebeat:ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。
Elasticsearch:是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash:是一个完全开源的工具,它可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
Kibana:也是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
这里之所以用Filebeat+ELK是因为Filebeat相对于logstash而言,更轻量级,占用系统资源少。
实验拓扑图
二、下载源码或二进制包
cd /data/soft/
rz jdk-8u221-linux-x64.tar.gz
elasticsearch-6.8.0.tar.gz
logstash-6.8.0.tar.gz
kibana-6.8.0-linux-x86_64.tar.gz
metricbeat-6.6.0-linux-x86_64.tar.gz(数据采集器)
三、配置java环境
tar -xf jdk-8u221-linux-x64.tar.gz
mv jdk-8u221 jdk
vim /etc/profile
export JAVA_HOME=/data/soft/jdk/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
四、准备elk启动账户
elk中的es无法用root启动,只能用普通用户
useradd elk
五、配置elasticsearch
5.1 解压二进制包
tar -xf elasticsearch-6.8.0.tar.gz
mv elasticsearch-6.8.0 es
cp es/config/elasticsearch.yml{,.bak} (备份配置文件)
chown -R elk.elk /data/soft/es
5.2 准备配置文件
vim es/config/elasticsearch.yml
cluster.name: prod-sungoal #自定义elk集群名
node.name: prod-elk-1 #自定义节点名
http.port: 9200
#path.data: /path/to/data (可选)
#path.logs: /path/to/logs (可选)
5.3 配置文件参数注释
cluster.name: test-ELK //集群名
node.name: elk-01 //节点名
path.data: /elk/elasticsearch/data //data存储路径
path.logs: /elk/elasticsearch/logs //log存储路径
bootstrap.memory_lock: true //锁住内存,不被使用到交换分区去
network.host: 0.0.0.0 //监听地址
http.port: 9200 //监听端口
discovery.zen.ping.unicast.hosts: ["192.1.1.161"] //集群节点发现列表 写另外一台的ip
discovery.zen.minimum_master_nodes: 2 //集群可做master的最小节点数
5.4 修改jvm.option参数
vim es/config/jvm.option
-Xms2g
-Xmx2g
5.5 修改内核参数
vim /etc/sysctl.conf #修改JVM开开启的最大线程数,数值为设定的一半
vm.max_map_count = 262144
vim /etc/security/limits.conf #修改打开文件句柄数
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
5.6 配置环境变量
echo \'export PATH=/data/soft/es/bin:$PATH\' > /etc/profile.d/es.sh
. /etc/profile.d/es.sh
echo $PATH
5.7 启动es服务
su - elk
前台启动:/data/soft/es/bin/elasticsearch
后台启动:nohup /data/soft/es/bin/elasticsearch >/data/logs/es.log &
六、配置kibana
6.1 解压二进制包
tar -xf kibana-6.8.0-linux-x86_64.tar.gz
mv kibana-6.8.0 kibana
cp kibana/config/kibana.yml{,.bak}
chown -R elk.elk /data/soft/kibana
6.2 修改配置文件
vim kibana/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"] #指定es服务器的ip
或elasticsearch.url: "http://192.1.1.160:9200"
kibana.index: ".kibana"
6.3 配置环境变量
echo \'export PATH=/data/soft/kibana/bin:$PATH\' > /etc/profile.d/kibana.sh
. /etc/profile.d/kibana.sh
echo $PATH
6.4 启动服务
su - elk
后台启动: nohup /data/soft/kibana/bin/kibana >/data/logs/kibana.log &
七、配置logstash
7.1 解压二进制包
tar -xf logstash-6.8.0.tar.gz
mv logstasg-6.8.0 logstasg
cp logstasg/config/logstash.yml{,.bak}
7.2 增加配置文件
touch logstash_sg.conf (见同目录下文件)
7.3 修改jvm.option
vim logstash/config/logstash_sg.conf
-Xms1g
-Xmx1g
7.4 配置环境变量
echo \'export PATH=/data/soft/kibana/bin:$PATH\' > /etc/profile.d/kibana.sh
. /etc/profile.d/kibana.sh
echo $PATH
7.5 启动服务
su - elk
后台启动: nohup /data/soft/logstash/bin/logstash -f /data/soft/logstasg/config/logstash.conf >/data/logs/logstash.log &
八、设置elk开启自启
8.1 elasticsearch服务配置文件
cd /etc/init.d
touch elasticsearch
chmod +x elasticsearch
vi elasticsearch并输入以下内容:
#!bin/bash
# chkconfig: 2345 21 89
# description: elasticsearch
# JAVA_HOME=/data/soft/jdk
ES_HOME=/data/soft/es
case $1 in
start) sudo -iu elk $ES_HOME/bin/elasticsearch &;;
*) echo "require start" ;;
esac
之后便可以用service elasticsearch start启动es服务了。
8.2 logstash服务配置文件
cd /etc/init.d
touch logstash
chmod +x logstash
vi logstash并输入以下内容:
#!/bin/bash
# chkconfig: 2345 50 50
# description: logstash
LS_HOME=/data/soft/logstash
case $1 in
start)sudo -iu elk $LS_HOME/bin/logstash -f $LS_HOME/config &;;
*) echo "require start";;
esac
之后便可以用service logstash start启动logstash服务了。
8.3 Kibana服务配置文件
cd /etc/init.d
touch kibana
chmod +x kibana
vi kibana并输入以下内容:
#!/bin/bash
# chkconfig: 2345 98 02
# description: kibana
KIBANA_HOME=/data/soft/kibana
case $1 in
start) $KIBANA_HOME/bin/kibana &;;
*) echo "require start";;
esac
之后便可以用service kibana start启动kibana服务了
8.4 设置服务为自启动
root身份下执行以下命令:
chkconfig --add elasticsearch
chkconfig --add logstash
chkconfig --add kibana
输入chkconfig --list,当发现一下服务存在时,说明自启动配置成功: