ELFK自定义安装,并收集nginx日志-浅入浅出
- 参考文档
- 概述
- 部署架构图大致如下
- Logstash和filebeat是什么关系
- 服务端环境
- JDK
- Elastsearch
- 编辑配置
- 启动Elasticsearch
- 启动报错
- 再次启动Elasticsearch
- 访问Elasticsearch
- Kibana
- 下载指南
- 编辑配置
- 启动Kibana
- 访问Kibana
- Logstash
- 编辑配置
- 启动Logstash
- 客户端安装Filebeat,并以收集nginx日志为例
- 编辑配置
- 启动filebeat
- 服务端logstash配置文件修改
- kibana上配置新增索引
- 测试情况
参考文档
参考文档①
概述
ELFK官网下载地址
Fliebeat为客户端。
Logstash+Elastsearch+Kibana 为服务端。(本文Elasticsearch没有做集群,而是单节点,后期考虑集群)
例如业务服务器上面只需要安装客户端就行了,filebeat只需要将指定日志文件中的数据传输到服务端即可,资源消耗小,轻量级。这样可以尽可能不影响业务端上的业务程序。
而且ELK服务端即使挂了也不会影响到业务端。
部署架构图大致如下
Logstash和filebeat是什么关系
Lf关系原文链接
因为logstash是jvm跑的,资源消耗比较大,所以后来作者又用golang写了一个功能较少但是资源消耗也小的轻量级的logstash-forwarder。不过作者只是一个人,加入http://elastic.co公司以后,因为es公司本身还收购了另一个开源项目packetbeat,而这个项目专门就是用golang的,有整个团队,所以es公司干脆把logstash-forwarder的开发工作也合并到同一个golang团队来搞,于是新的项目就叫filebeat了。
logstash 和filebeat都具有日志收集功能,filebeat更轻量,占用资源更少,但logstash 具有filter功能,能过滤分析日志。一般结构都是filebeat采集日志,然后发送到消息队列,redis,kafaka。然后logstash去获取,利用filter功能过滤分析,然后存储到elasticsearch中。
服务端环境
Centos7 4核16G
创建对应目录目录以及用户,Elastic Search启动:由于ES的启动不能用root账号直接启动,需要新创建用户,然后切换新用户去启动,接下来都以elsearch用户操作
1
2
3
4
5useradd elsearch mkdir -p /data/elk && cd /data/elk chown -R elsearch.elsearch /data/elk su - elsearch
JDK
下载地址
java环境变量就不再详细阐述,jdk版本需要大于1.8
Elastsearch
下载地址
1
2
3
4cd /data/elk wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz tar -xvf elasticsearch-7.3.2 && mv elasticsearch-7.3.2 elasticsearch
编辑配置
修改elasticsearch/config/elasticsearch.yml添加或修改以下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#es名称 cluster.name: my_es_cluster #节点名称 node.name: elk #索引数据存放地址 path.data: /data/elk/elasticsearch/data #es日志存放地址 path.logs: /data/elk/elasticsearch/logs http.cors.enabled: true http.cors.allow-origin: "*" node.master: true node.data: true # 配置白名单 0.0.0.0表示其他机器都可访问 network.host: 0.0.0.0 transport.tcp.port: 9300 #tcp 传输压缩 transport.tcp.compress: true #绑定端口 http.port: 9200 discovery.zen.ping.unicast.hosts: ["elk"]
启动Elasticsearch
1
2/data/elk/elasticsearch/bin/elasticsearch &
启动报错
启动过程中,会出现一些报错信息,如:
1、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
2、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决问题(1):将当前用户的软硬限制调大。
– 切换到root用户
修改**/etc/security/limits.conf**添加或修改以下内容
1
2
3
4
5* soft nproc 65536 * hard nproc 65536 * soft nofile 65536 * hard nofile 65536
– 保存退出
– 不需要重启,重新登录即生效
– 查看修改命名是否生效
1
2ulimit -n
– 结果65536
1
2ulimit -H -n
– 结果65536
解决问题(2):调大elasticsearch用户拥有的内存权限
1
2sysctl -w vm.max_map_count=262144
– 查看修改结果
1
2sysctl -a|grep vm.max_map_count
– 结果显示:vm.max_map_count = 262144
– 永久生效设置
修改/etc/sysctl.conf添加或修改以下内容
1
2vm.max_map_count=262144
保存后执行命令
1
2sysctl -p
–再切换回elsearch用户
再次启动Elasticsearch
1
2/data/elk/elasticsearch/bin/elasticsearch &
访问Elasticsearch
若访问不了,优先关闭防火墙测试
访问结果是一串json,说明启动成功了。
1
2
3#访问地址 http//IP:9200
Kibana
下载地址
下载指南
下载并解压,修改名字
1
2
3
4cd /data/elk wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.2-linux-x86_64.tar.gz tar -xvf kibana-7.3.2-linux-x86_64.tar.gz && mv kibana-7.3.2-linux-x86_64 kibana
编辑配置
1
2vim kibana/config/kibana.yml
最下方修改或添加
1
2
3
4
5
6
7
8
9
10#汉化 i18n.locale: "zh-CN" #kibana监听端口 server.port: 5601 #默认内外网都可以访问 server.host: "0.0.0.0" #elasticsearch.hosts内部访问地址 elasticsearch.hosts: ["http://localhost:9200"] kibana.index: ".kibana"
由于 kibana5.* 6.* 官方并没有支持中文,需要另外下载补丁包 推荐下面这个 ↓
https://github.com/anbai-inc/Kibana_Hanization
不过我这边下载的是7.*的版本,故直接修改配置文件即可,中文包在下面这个路径↓
找不到的就通过find搜索或locate也行 不过大概了解即可,这里就不在过多阐述。
1
2kibana/node_modules/x-pack/plugins/translations/translations/zh-CN.jso
启动Kibana
1
2/data/elk/kibana/bin/kibana &
访问Kibana
1
2
3#访问地址 http://IP:5601
若访问不了,优先关闭防火墙测试
Logstash
下载地址
1
2
3
4cd /data/elk wget https://artifacts.elastic.co/downloads/logstash/logstash-7.3.2.tar.gz tar -xvf logstash-7.3.2.tar.gz && mv logstash-7.3.2 logstash
编辑配置
默认无需改动,只需将logstash-sample.conf命名为logstash.conf即可
1
2cp logstash/config/logstash-sample.conf logstash/config/logstash.conf
启动Logstash
–config.reload.automatic项会定期自动重载配置,可以不停止重启Logstash就可以修改配置。
1
2/data/elk/logstash/bin/logstash -f /data/elk/logstash/config/logstash.conf --config.reload.automatic
客户端安装Filebeat,并以收集nginx日志为例
下载地址
1
2
3
4
5mkdir -p /data && cd /data/ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.2-linux-x86_64.tar.gz tar -xvf filebeat-7.3.2-linux-x86_64.tar.gz && mv filebeat-7.3.2-linux-x86_64 filebeat cd filebeat
编辑配置
修改** filebeat.yml** 以设置连接信息:
1
2
3
4
5
6output.logstash: # The Logstash hosts #hosts: ["localhost:5044"] #修改为自己服务端的logstash ip:端口 hosts: ["192.168.2.199:5044"]
在filebeat.inputs段中添加下列信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18- type: log enabled: true paths: #也可以是其他程序日志 - /var/log/nginx/access.log fields: #也可以其他索引名 log_source: nginx-access #------------------------------------ - type: log enabled: true paths: #也可以是其他程序日志 - /var/log/nginx/error.log fields: #也可以其他索引名 log_source: nginx-error
启动filebeat
1
2nohup ./filebeat -e -c filebeat.yml >> logs/start.log 2> logs/error.log &
服务端logstash配置文件修改
修改** logstash.conf **以设置连接信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26output { # filebeat传输过来的index名 if "nginx-access" in [fields][log_source] { elasticsearch { #elasticsearch的ip:监听端口 hosts => ["http://localhost:9200"] index => "nginx-access-%{+YYYY.MM}" # index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" } } # filebeat传输过来的index名 if "nginx-error" in [fields][log_source] { elasticsearch { #elasticsearch的ip:监听端口 hosts => ["http://localhost:9200"] index => "nginx-error-%{+YYYY.MM}" # index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" } } }
因为之前在启动服务端logstash的时候,添加了这个参数**–config.reload.automatic项会定期自动重载配置**,可以不停止重启Logstash就可以修改配置。故无需做任何操作(也可以手动kill再启动logstash)
kibana上配置新增索引
访问服务端的kibana
1
2http://服务端IP:5601
点击索引模式
创建索引,输入filebeat中定义的nginx-access
点击下一步
选择timestamp>>>创建索引模式即可
创建完成后回到discover发现
这时候直接看日志可能看不懂,没关系,点击字段,根据字段索引列出日志
选择message简介明了。over。就可以看到nginx的access日志了!
完成所有步骤后,通过自己需求,便可以随时浏览自己的数据,这边我没有在logstash上做过滤操作,有需要的请自行google。
测试情况
在国庆前,通过zabbix监控 ELK服务端 以及 F客户端 服务器的资源占用情况,至今情况来看,比较明显的是,
客户端Filebeat在产生filebeat收集的日志的时候,CPU以及 带宽占用 。有明显增长。(进程为filebeat)
服务端ELK在收集filebeat日志的时候,CPU以及 带宽占用 。有明显增长。(进程主要为elasticsearch)
最后
以上就是高高微笑最近收集整理的关于ELFK自定义安装,并收集nginx日志-浅入浅出参考文档概述部署架构图大致如下Logstash和filebeat是什么关系服务端环境JDKElastsearchKibanaLogstash客户端安装Filebeat,并以收集nginx日志为例测试情况的全部内容,更多相关ELFK自定义安装内容请搜索靠谱客的其他文章。
发表评论 取消回复