一.ELK概述
ELK,是由elasticsearch,logstash,kibanna,对日志进行收集,集中处理,并提供可视化web界面的联合搜索,实时分析的解决方案
- es(elasticsearch),是由java开发,支持分布式检索和数据分析
- logstash,依赖jre运行,数据收集,支持系统,web服务,以及各app产生的log日志,对不同日志类型进行采集,并通过管道pipeline的方式,进行解析,转化成不同格式输出给es
- kibana,基于Web界面操作可以快速创建动态仪表板,实时监控Elasticsearch的数据状态与更新
二.ELK软件栈分析
对需要进行数据采集的服务器部署logstash,将采集所需日志转化成event,通过配置文件对event进行筛选过滤,最终以管道格式化输出给es并生成索引,并由kibana提供可视化的Web搜索与分析界面
三.安装部署
环境准备:
192.168.112.68 es
192.168.112.81 logstash
192.168.112.82 kibanna
- es
系统配置
systemctl stop firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disableb' /etc/selinux/config
cat > /etc/security/limits.conf <<EOF #设置文件最大打开数
* soft nofile 65535
* hard nofile 65535
car > /etc/sysctl.conf << EOF #设置进程映射的VMA(虚拟内存区域)数量
vm.max_map_count=655360
JDK安装
tar xf openjdk-11 28_linux-x64_bin.tar -C /usr/local
mv jdk-11.0.10 jdk11
vim /etc/profile #设置JAVA环境变量
JAVA_HOME=/usr/local/jdk11
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
export JAVA_HOME PATH CLASSPATH
source /etc/profile
验证:java --version,which java
es部署
将es7.1解压并mv为es
es不能由root用户启动,需要新生成其他用户,并指定授权
groupadd es
useradd es -g es
chown -R es:es /usr/local/es
修改config的elasticsearch.yml 配置文件
cluster.name: zzc #设置集群name
node.name: node-1 #设置节点name
network.host: 0.0.0.0#支持其他主机访问
http.port: 9200 #es默认9200端口
cluster.initial_master_nodes: "node-1" #主节点
切换es
在bin目录下 ./elasticsearch -d 以后台服务运行
如何检测是否运行成功?
启动不报错
lsof -i:9200 #检查端口
web验证
- logstash
logstash运行也需要java环境,配置同es
对logstash7.11.2解压后mv logstash-7.11.2
有两个配置文件,配置即代码,编排了管道流水线处理流程,logstash,yml、pipelines.yml
yaml格式的文件,描述了任务编排的全流程
管道流水线,input→queue→filter→output
数据采集后以event形式进行批处理,等待队列,过滤筛选,输出到指定端
logstash.yml
node.name: NODE1 #节点描述名称
path.data: /usr/local/logstash-7.11.2/data #logstash及其插件的数据目录
pipeline.id: zzc1 #管道ID名
pipeline.workers: 2 #设置管道过滤以及输出的线程数,cpu可用性好,建议设置成cpu核数,增大并发,可拓展
pipeline.batch.size: 125 #管道批处理event大小,越大传输效率越好,占用内存开销
pipeline.batch.delay: 50 #管道前后处理等待时长
path.config: /usr/local/logstash-7.11.2/conf.d/*.conf #logstash配置文件路径
#http.host: :#监控地址,设置成主机,可以默认不设置
#http.port: #指定#REST端点的端口,可以默认不设置
pipelines.yml 使用多pipe,不同管道最好只执行一个流程,互不影响
- pipeline.id: zzc #管道id
pipeline.workers: 1 #设置管道过滤以及输出的线程数
pipeline.batch.size: 125 #管道批处理event大小,越大传输效率越好,占用内存开销
queue.type: persisted # 持久化存储,将管道各个stage缓存到磁盘上,防止因宕机,服务掉线等情况,数据丢失
path.config: "/usr/local/logstash-7.11.2/conf.d/zzc1.conf" #指定自定义的conf路径
mkdir conf.d
vim zzc.conf
切换到bin目录下
有两种模式,-f 指定配置文件;直接启动--默认加载pipelines.yml配置
- kibana
开源免费,能够为es以及logstash提供更直观的可视化Web界面,生成仪表板,进行查询,分析
将kibana-7.11解压后修改配置文件kibana.yml
server.port: 5601 #kibana端口5601
server.host: "0.0.0.0" # 监听本机所有的IP地址
elasticsearch.hosts: "http://192.168.112.68:9200" #修改es地址
i18n.locale: "zh-CN"#转化成中文
启动kibanna:./kibana --allow-root
或者以后台方式启动nohup sh kibanna --allow-root &
四.测试
浏览器输入kibana主机地址:5601
如图
常规报错总结:
1.es进程被锁
lsof -i:9200 查询pid kill 掉再重启服务
2.设置文件最大打开数以及进程映射的虚拟内存区域数
cat > /etc/security/limits.conf <<EOF #设置文件最大打开数
* soft nofile 65535
* hard nofile 65535
car > /etc/sysctl.conf << EOF #设置进程映射的VMA(虚拟内存区域)数量
vm.max_map_count=655360
3.管道配置文件格式或者,语法错误 --
运行logstash服务前,可以 logstash -t 进行配置文件检测