ELK日志系统

1、简介

是一套完整的日志集中处理方案,由三部分组成E L K

E:ElasticSearch(ES 分布式索引性非关系型数据库),存储logstash输出的日志,全文检索引擎,保存的格式是json格式

L:logstash,基于java语言开发的,是数据收集引擎。做的是日志的收集,可以对数据进行过滤、分析、汇总,以标准格式输出

K:Kiabana,是ES的可视化工具,对ES存储的数据进行可视化展示、分析和检索

其他组件:
F:filebeat,轻量级的开源日志文件数据收集器,logstash占用系统资源比较大,属于重量级,有了filebeat可以节省资源,可以通过filebeat和logstash实现远程数据收集

filebeat不能对数据进行标准输出,不能输出为es格式的数据,所以需要logstash把filebeat数据做标准化输出

K:kafka,消息队列

2、作用

日志集中管理

3、工作原理

1、在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,
在日志服务器上部署 Logstash。

2、Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

3、Elasticsearch 对格式化后的数据进行索引和存储。

4、Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

总结:logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,
然后交由Elasticsearch存储,kibana对日志进行可视化处理。

4、架构部署

192.168.230. 10 es1 2核4G

192.168.230. 20 es2 2核4G

192.168.230. 30 logstash kibana nginx/http 4核8G

bash 复制代码
systemctl stop firewalld
setenforce 0

#时间同步
yum -y install ntpdate
ntpdate ntp.aliyun.com
date

#es1、2上安装java
yum -y install java

#安装elasticsearch,上传elasticsearch-6.7.2.rpm到/opt目录下
rpm -ivh elasticsearch-6.7.2.rpm

#修改elasticsearch主配置文件
vim /etc/elasticsearch/elasticsearch.yml
17行 cluster.name: elk-cluster #集群名
23行 node.name: node1
     node.master: true  #es数据库的主从类型
     node.data: true  #数据节点,是否保存数据,logstash发送数据,节点是否接受以及保存
     
     node.name: node2
     node.master: false
     node.data: true
55行 network.host: 0.0.0.0         
59行 取消注释
添加 transport.tcp.port: 9300  #es集群内部通信的端口
73行 discovery.zen.ping.unicast.hosts:["192.168.230.10:9300","192.168.230.20:9300"]

#过滤以#开头的行
grep -v "^#" /etc/elasticsearch/elasticsearch.yml

#开启elasticsearch
systemctl restart elasticsearch.service

#设置成开机自启
systemctl enable elasticsearch.service

#查看端口是否开启
netstat -antp | grep 9200

#查看节点信息
浏览器访问  http://192.168.230.10:9200  、 http://192.168.230.20:9200 
查看节点 Node1、Node2 的信息。

----------------------------------------------------------------------------------------------------------------------
3个组件:
node:基于谷歌浏览器的运行环境
phantomjs:虚拟浏览器
elasticsearch-head-master:elasticsearch的独立可视化工具,可以实现分片索引数据的可视化展示
----------------------------------------------------------------------------------------------------------------------
#编译安装node,上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make -j 2 && make install

#安装phantomjs,上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到cd /opt
ar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd /opt/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

#安装 Elasticsearch-head 数据可视化工具,上传软件包 elasticsearch-head-master.zip 到/opt
cd /opt
unzip elasticsearch-head-master.zip
cd elasticsearch-head-master/
npm config set registry http://registry.npm.taobao.org/
npm install

#修改 Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
在末尾添加:
http.cors.enabled: true  #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"  #指定跨域访问允许的域名地址为所有

#重启
systemctl restart elasticsearch

#浏览器访问http://192.168.230.10:9100/  http://192.168.230.20:9100/
地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。

#创建索引
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
----------------------------------------------------------------------------------------------------------------------
通过http方式,post方式修改数据
对应的就是本地数据库的地址ip+端口
index-demo:创建索引名片的名称
test:数据的名称
1:数据的id字段
?pretty&pretty:参数设定为json格式
-d:数据的具体内容 "user":"zhangsan","mesg":"hello world"

#修改数据
curl -X POST 'localhost:9200/index-demo/test/1/_update?pretty' -H 'Content-Type: application/json' -d '{  "doc": {    "user": "zhangsan",    "mesg": "hello1 world1"  } }'

#删除数据
curl -X DELETE 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello1 world1"}'
----------------------------------------------------------------------------------------------------------------------
#浏览器访问 http://192.168.233.12:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。
点击"数据浏览",会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。

#ELK Logstash 部署
#安装Apahce服务(httpd)
yum -y install httpd
systemctl start httpd

#安装java环境
yum -y install java
java -version

#安装logstash,上传软件包 logstash-6.7.2.rpm 到/opt目录下
cd /opt
rpm -ivh logstash-6.7.2.rpm                          
systemctl start logstash.service                      
systemctl enable logstash.service

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

#测试logstash
logstash -e 'input { stdin{} } output { stdout{} }'

#输入内容
www.baidu.com
#输出结果如下
"@version" => "1",
       "message" => "www.baidu.com",
       "host" => "localhost.localdomain",
       "@timestamp" => 2024-08-01T06:32:47.967Z


#使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.230.10:9200","192.168.230.20:9200"] } }'
#输入
www.baidu.com
www.sina.com.cn
#结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.233.12:9100/ 查看索引信息和数据浏览。

#创建日志收集系统
cd /logstash/conf.d
vim system.conf
input {
   file{
    path =>"/var/log/messages"
    type =>"system"
    start_position =>"beginning"
  }
}

output {
    elasticsearch { 
      hosts=>["192.168.230.10:9200","192.168.230.20:9200"]
      index =>"system-%{+YYYY.MM.dd}"
  }
}

#赋权
chmod 777 /var/log/messages

#开始收集
logstash -f system.conf --path.data /opt/test2 &

#访问浏览器192.168.230.10:9100 192.168.230.20:9100
索引创建成功

#安装kibana
rpm -ivh kibana-6.7.2-x86_64.rpm

#修改配置文件
vim /etc/kibana/kibana.yml
2行 取消注释
7行 server.host: "0.0.0.0"
28行 elasticsearch.hosts: ["http://192.168.230.10:9200","http://192.168.230.20:9200"]
96行 logging.dest: /var/log/kibana.log
113行 i18n.locale: "zh-CN"
37行 取消注释

#创建日志文件
touch /var/log/kibana.log
chown kibana:kibana /var/log/kibana.log

#重启kibana
systemctl restart kibana.service
#设置成开机自启
systemctl enable kibana.service

#查看端口是否开启
netstat -antp | grep 5601

#访问浏览器,kibana的索引已创建好

#访问192.168.230.30:5601,同步日志
管理------索引管理------索引模式------创建索引------输入"system-*"------下一步------字段选择"@timestamp"------创建索引模式------点击左栏中的"discover"可查看日志信息
相关推荐
幽弥千月1 天前
【ELK】ES单节点升级为集群并开启https【亲测可用】
elk·elasticsearch·https
IT猿手1 天前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习
流穿2 天前
ELK系列-(六)Redis也能作为消息队列?(下)
数据库·redis·ubuntu·elk·docker·容器
流穿2 天前
ELK系列-(五)指标收集-MetricBeat(下)
linux·运维·ubuntu·elk·docker·容器
流穿3 天前
ELK系列-(五)指标收集-MetricBeat(上)
ubuntu·elk·elasticsearch·docker
高hongyuan4 天前
Linux环境下 搭建ELk项目 -单机版练习
大数据·运维·服务器·elk·elasticsearch·搜索引擎
运维&陈同学5 天前
【Elasticsearch04】企业级日志分析系统ELK之Elasticsearch 插件
大数据·运维·后端·elk·elasticsearch·搜索引擎·全文检索·哈希算法
幽弥千月5 天前
【ELK】Filebeat采集Docker容器日志
elk·docker·容器
运维&陈同学6 天前
【Elasticsearch03】企业级日志分析系统ELK之Elasticsearch访问与优化
大数据·elk·elasticsearch·搜索引擎·云原生·全文检索·高可用
运维&陈同学8 天前
【Elasticsearch01】企业级日志分析系统ELK之Elasticsearch单机部署
大数据·linux·elk·elasticsearch·微服务·云原生·jenkins