概述
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用户操作
useradd elsearch
mkdir -p /data/elk && cd /data/elk
chown -R elsearch.elsearch /data/elk
su - elsearch
JDK
下载地址
java环境变量就不再详细阐述,jdk版本需要大于1.8
Elastsearch
下载地址
cd /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添加或修改以下内容
#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
/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**添加或修改以下内容
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
– 保存退出
– 不需要重启,重新登录即生效
– 查看修改命名是否生效
ulimit -n
– 结果65536
ulimit -H -n
– 结果65536
解决问题(2):调大elasticsearch用户拥有的内存权限
sysctl -w vm.max_map_count=262144
– 查看修改结果
sysctl -a|grep vm.max_map_count
– 结果显示:vm.max_map_count = 262144
– 永久生效设置
修改/etc/sysctl.conf添加或修改以下内容
vm.max_map_count=262144
保存后执行命令
sysctl -p
–再切换回elsearch用户
再次启动Elasticsearch
/data/elk/elasticsearch/bin/elasticsearch &
访问Elasticsearch
若访问不了,优先关闭防火墙测试
访问结果是一串json,说明启动成功了。
#访问地址
http//IP:9200
Kibana
下载地址
下载指南
下载并解压,修改名字
cd /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
编辑配置
vim kibana/config/kibana.yml
最下方修改或添加
#汉化
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也行 不过大概了解即可,这里就不在过多阐述。
kibana/node_modules/x-pack/plugins/translations/translations/zh-CN.jso
启动Kibana
/data/elk/kibana/bin/kibana &
访问Kibana
#访问地址
http://IP:5601
若访问不了,优先关闭防火墙测试
Logstash
下载地址
cd /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即可
cp logstash/config/logstash-sample.conf logstash/config/logstash.conf
启动Logstash
–config.reload.automatic项会定期自动重载配置,可以不停止重启Logstash就可以修改配置。
/data/elk/logstash/bin/logstash -f /data/elk/logstash/config/logstash.conf --config.reload.automatic
客户端安装Filebeat,并以收集nginx日志为例
下载地址
mkdir -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** 以设置连接信息:
output.logstash:
# The Logstash hosts
#hosts: ["localhost:5044"]
#修改为自己服务端的logstash ip:端口
hosts: ["192.168.2.199:5044"]
在filebeat.inputs段中添加下列信息:
- 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
nohup ./filebeat -e -c filebeat.yml >> logs/start.log 2> logs/error.log &
服务端logstash配置文件修改
修改** logstash.conf **以设置连接信息:
output {
# 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
http://服务端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自定义安装,并收集nginx日志-浅入浅出参考文档概述部署架构图大致如下Logstash和filebeat是什么关系服务端环境JDKElastsearchKibanaLogstash客户端安装Filebeat,并以收集nginx日志为例测试情况所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复