ELK日志系统

ELK

ELK日志系统

ELK是什么?是一套完整的日志集中处理方案。

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

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

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

ELK的架构————日志集中管理

ELK日志系统_第1张图片

ELK F K

F filebeat: 轻量级的开源日志文件数据收集器。logstash占用系统资源比较大,属于重量级。

有了filebeat开源节省资源,可以通过filebeat和logstash实现远程数据收集。

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

ELK日志系统_第2张图片

K kafka消息队列?

ELK实验:

架构:

192.168.60.82 ES1 2/4G

192.168.60.83 ES2 2/4G

192.168.60.81 losgtash kibana nginx/http 4/8G

node:基于谷歌浏览器的运行环境

phantomjs:虚拟浏览器

es-head-master:es的独立可视化工具,可以实现分片索引数据的可视化展示

操作:

1、ES1和ES2上都需要的操作:

#关闭防火墙
systemctl stop firewalld
setenforce 0
#yum安装java
yum -y install java
#设置Java环境
java -version
#将elasticsearch-6.7.2.rpm拖到opt目录下
[root@elk3 opt]# rz -E
rz waiting to receive.
#解压这个压缩包
rpm -ivh elasticsearch-6.7.2.rpm

2、修改ES的主配置文件

#修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
​
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
node.master: true       #是否master节点,false为否
node.data: true         #是否数据节点,false为否
--33--取消注释,指定数据存放路径
path.data: /var/lib/elasticsearch
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch
--43--取消注释,避免es使用swap交换分区,可以不注释
bootstrap.memory_lock: true
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200                 #指定es集群提供外部访问的接口
transport.tcp.port: 9300        #指定es集群内部通信接口
--68--取消注释,集群发现通过单播实现,指定要发现的节点
discovery.zen.ping.unicast.hosts: ["192.168.60.82:9300", "192.168.60.83:9300"]
​
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
#重启这个服务
systemctl restart elasticsearch.service     
#检查端口
netstat -antp | grep 9200

3、安装 Elasticsearch-head 插件

1)编译安装node
#上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y
​
cd /opt
tar zxvf node-v8.2.1.tar.gz
​
cd node-v8.2.1/
./configure
make && make install
2)安装 phantomjs
#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
​
cd /opt
tar 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
3)安装 Elasticsearch-head 数据可视化工具
#上传软件包 elasticsearch-head-master.zip 到/opt
cd /opt
unzip elasticsearch-head-master.zip
cd elasticsearch-head-master/
npm install      //安装依赖包
​
#速度慢,可以指定为淘宝镜像
npm config set registry http://registry.npm.taobao.org/  
 
#再次安装
npm install
4)修改 Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
......
--末尾添加以下内容--
http.cors.enabled: true             #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"         #指定跨域访问允许的域名地址为所有
​
systemctl restart elasticsearch
5)启动 elasticsearch-head 服务
#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /opt/elasticsearch-head-master
npm run start &
​
> [email protected] start /opt/elasticsearch-head-master
> grunt server
​
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
​
#elasticsearch-head 监听的端口是 9100
netstat -natp |grep 9100
6)通过 Elasticsearch-head 查看 Elasticsearch 信息

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

7)插入索引
#通过命令插入一个测试索引,索引为 index-demo,类型为 test。
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
//输出结果如下:
{
"_index" : "index-demo",
"_type" : "test",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
​
curl -X DELETE 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

浏览器访问 http://192.168.233.12:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。 点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。

Elasticsearch 的可视化工具中,以索引分区(Shard)为单位, 可能采用不同的标识颜色来表示它们的状态。黑色的边框通常表示主分片(Primary Shard)。

在 Elasticsearch 中,索引被分成多个分区,这些分区称为分片。 每个索引可能包含一个或多个主分片以及它们的副本。主分片是数据的主要存储, 副本用于提高冗余和可用性。

4、在 Apache 节点上操作

1)更改主机名
hostnamectl set-hostname apache
2)安装Apahce服务(httpd)
yum -y install httpd
systemctl start httpd
3)安装Java环境

yum -y install java java -version

4)安装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的工作目录,默认为:/etc/logstash/conf.d
​
path.config: /opt/log
5)测试 Logstash

定义输入和输出流:

#输入采用标准输入,输出采用标准输出(类似管道),新版本默认使用 rubydebug 格式输出
logstash -e 'input { stdin{} } output { stdout{} }'
​
#使用 rubydebug 输出详细格式显示,codec 为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
#使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.60.82:9200","192.168.60.83:9200"] } }'
             输入             输出          对接
......
www.baidu.com                                       #键入内容(标准输入)
www.sina.com.cn                                     #键入内容(标准输入)
www.google.com                                      #键入内容(标准输入)
​
//结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.233.12:9100/ 查看索引信息和数据浏览。

5、将日志文件可视化

[root@apache opt]# cd /etc/logstash/conf.d/
[root@apache conf.d]# pwd
/etc/logstash/conf.d
[root@apache conf.d]# ls
[root@apache conf.d]# vim system.conf
​
input {
​
     file{
       path =>"/var/log/messages"
       type =>"system"
       start_position =>"beginning"
        }
}
output {
       elasticsearch {
         hosts=> ["192.168.60.82:9200", "192.168.60.83:9200"]
         index =>"system-%{+YYYY.MM.dd}"
}
}
#启动这个配置文件
logstash -f system.conf --path.data /opt/test2 &
#将kibana-6.7.2-x86_64.rpm装到opt目录下
[root@apache opt]# rz -E
rpm -ivh kibana-6.7.2-x86_64.rpm

更改kibana的配置文件

vim /etc/kibana/kibana.yml
  2 server.port: 5601   #取消注释
  7 server.host: "0.0.0.0"      #使任意主机都可以建立联系
  28 elasticsearch.hosts: ["http://192.168.60.82:9200","http://192.1    68.60.83:9200"]     #将28行取消注释并更改
  96 logging.dest: /var/log/kibana.log  #将kibana的图形化日志位置更改
  113 i18n.locale: "zh-CN"      #将kibana的语言模式改为中文
  37 kibana.index: ".kibana"        #打开kibana的索引名称
  
touch /var/log/kibana.log       #创建一个日志文件,这个文件不会自动生成
chown kibana:kibana /var/log/kibana.log     #将日志文件的所有者和所在组更改
chmod 777 /var/log/kibana.log   #给该文件赋权
systemctl restart kibana.service    #将kibana服务启动
systemctl enable kibana.service     #将kobana服务设置为开机自启

6、最后结果

ELK日志系统_第3张图片

ELK日志系统_第4张图片

ELK日志系统_第5张图片

1、es的主从和数据模式

node.master: true

es数据库的主从类型 true false

node.data: true

数据节点,是否保存数据,logstash发送数据,节点是否接受以及保存

es如何创建,修改,删除数据 数据管理

通过http的方式

post方式修改数据

创建数据

curl -X DELETE 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

对应的就是本地数据库的地址,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"}'

你可能感兴趣的:(elk)