ELK日志系统

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

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

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

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

ELK F K

F

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

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

k

kafka 消息队列


实验环节

192.168.233.10 es1 2/4G

192.168.233.20 es2 2/4G

192.168.233.30losgtash kibana nginx/http 4/8G

同时配置es1和es2

systemctl stop firewalld

setenforce 0

关闭安全机制和防火墙

1、环境准备 设置Java环境

1  yum -y install java
​
2  java -version    
​
   openjdk version "1.8.0_131"
   OpenJDK Runtime Environment (build 1.8.0_131-b12)
   OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

2、部署 Elasticsearch 软件 安装elasticsearch—rpm包 上传elasticsearch-6.7.2.rpm到/opt目录下

  cd /opt
  rpm -ivh elasticsearch-6.7.2.rpm
修改elasticsearch主配置文件
1   cp /etc/elasticsearch/elasticsearch.yml     /etc/elasticsearch/elasticsearch.yml.bak
2   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.233.12:9300", "192.168.233.13:9300"]

查看配置文件命令,在命令行显示

grep -v "^#" /etc/elasticsearch/elasticsearch.yml

 

启动elasticsearch是否成功开启

systemctl start elasticsearch.service
systemctl enable elasticsearch.service
netstat -antp | grep 9200

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

 

 

3、安装 Elasticsearch-head 插件 Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装, 需要使用npm工具(NodeJS的包管理工具)安装。 安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。 node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器, 任何基于 webkit 浏览器做的事情,它都可以做到

编译安装 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 -j 4 make install

安装 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

安装 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/  

修改 Elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml

末尾添加以下内容

http.cors.enabled: true             #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"         #指定跨域访问允许的域名地址为所有

重启服务

systemctl restart elasticsearch

启动 elasticsearch-head 服务 必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。

cd /opt/elasticsearch-head-master
npm run start &

elasticsearch-head 监听的端口是 9100 netstat -natp |grep 9100

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

插入索引 #通过命令插入一个测试索引,索引为 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 }

1、es的主从和数据模式 node.master: true es数据库的主从类型 true false node.data: true 数据节点,是否保存数据,logstash发送数据,节点是否接受以及保存。

2、es如何创建,修改,删除数据 数据管理 通过http的方式 post方式修改数据

curl -X PUT '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"}'

Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 nginx服务器上, 用于收集 nginx 服务器的日志信息并发送到 Elasticsearch。

安装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的工作目录,默认为:/etc/logstash/conf.d

path.config: /opt/log

测试 Logstash
Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。

-e:从命令行中获取,输入、输出后面跟着字符串,
该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。

-t:测试配置文件是否正确,然后退出。

定义输入和输出流:
#输入采用标准输入,输出采用标准输出(类似管道),新版本默认使用 rubydebug 格式输出

logstash -e 'input { stdin{} } output { stdout{} }'

Ruby 调试信息使用 rubydebug 格式进行输出,显示了事件的各个字段和元数据。

www.baidu.com                                        #键入内容(标准输入)
{
    "@timestamp" => 2020-12-22T02:15:39.136Z,        #输出结果(标准输出处理后的结果)
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}

#使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.124.10:9200","192.168.124.20:9200"] } }'
             输入                输出            对接
......
www.baidu.com                                        #键入内容(标准输入)
www.sina.com.cn                                        #键入内容(标准输入)
www.google.com                                        #键入内容(标准输入)

//结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.124.10:9100/ 查看索引信息和数据浏览。

 编写一个收集日志的文件

input {

       file{

           path =>"/var/log/messages"
           type =>"/system"
           start_position =>"beginning"

}

}


output {

       elasticsearch {

            hosts=>["192.168.124.10:9200","192.168.124.20:9200"]
            index =>"system-%{+YYYY.MM.dd}"

}


}

开启收集日志的命令

logstash -f system.conf --path.data /opt/test2 &

进入浏览器访问192.168.124.30:5601

 

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值