cullinans 2019-12-20
目录
在日常运维工作中,对于系统和业务日志的处理尤为重要。今天,在这里分享一下自己部署的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(数据采集器)
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
useradd elk
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
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 (可选)
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的最小节点数
vim es/config/jvm.option -Xms2g -Xmx2g
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
echo 'export PATH=/data/soft/es/bin:$PATH' > /etc/profile.d/es.sh . /etc/profile.d/es.sh echo $PATH
su - elk
前台启动:/data/soft/es/bin/elasticsearch
后台启动:nohup /data/soft/es/bin/elasticsearch >/data/logs/es.log &
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
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"
echo 'export PATH=/data/soft/kibana/bin:$PATH' > /etc/profile.d/kibana.sh . /etc/profile.d/kibana.sh echo $PATH
su - elk 后台启动: nohup /data/soft/kibana/bin/kibana >/data/logs/kibana.log &
tar -xf logstash-6.8.0.tar.gz
mv logstasg-6.8.0 logstasg
cp logstasg/config/logstash.yml{,.bak}
touch logstash_sg.conf (见同目录下文件)
vim logstash/config/logstash_sg.conf -Xms1g -Xmx1g
echo 'export PATH=/data/soft/kibana/bin:$PATH' > /etc/profile.d/kibana.sh . /etc/profile.d/kibana.sh echo $PATH
su - elk 后台启动: nohup /data/soft/logstash/bin/logstash -f /data/soft/logstasg/config/logstash.conf >/data/logs/logstash.log &
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服务了。
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服务了。
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服务了
root身份下执行以下命令: chkconfig --add elasticsearch chkconfig --add logstash chkconfig --add kibana 输入chkconfig --list,当发现一下服务存在时,说明自启动配置成功: