ELK部署(版本5x)
2018-02-23 13:56
519 查看
ELK部署(版本5x)
介绍
ELK部署需要较高配置机器,推荐16G内存、4核以及200G硬盘以上机器部署,否则性能会减弱。日志收集方面,我采用了rsyslog服务去将客户端的日志传输到rsyslog的服务端,rsyslog和logstash在一台服务器上,elasticsearch和kibana在一台服务器上,一共用了三台服务器。
安装ELK
官方网站:https://www.elastic.co/分别下载elasticsearch、logstash、kibana,推荐下载rpm安装包,安装完成后需要进行修改配。Logstash配置
首先需要将logstash的配置文件夹软连接到logstash安装目录cd /usr/share/logstash ln -s /etc/logstash config
然后创建解配置文件以nginx为例
#建议将不同类型的日志配置文件放入不同的目录以便于区分 mkdir -p /usr/share/logstash/config/conf.d/nginx_log vim test_logstash.conf input { file { type => "test" path => ["/www/log/test_*.log"] start_position => "beginning" } filter { grok { match => ["message", "%{IPORHOST:clientip} - %{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \"%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})\" (?:%{NUMBER:status}|-) (?:%{NUMBER:body_bytes_sent}|-) \"(%{NOTSPACE:http_referer}|-)\" \"(?:%{GREEDYDATA:http_user_agent}|-)\" \"(?:%{GREEDYDATA:http_x_forwarded_for}|-)\" \"(?:%{GREEDYDATA:request_time}|-)\" \"(?:%{GREEDYDATA:gzip_ratio}|-)\""] } mutate { remove_field => [ "tags" ] } date { match => ["timestamp" , "dd/MMM/YYYY:HH:mm:ss Z"] } } output { # stdout { codec=> rubydebug } elasticsearch { hosts => ["192.168.1.213:9200"] index => "nginx-%{type}-%{+YYYY.MM.dd}" user => user password=> passwd } } #============================================= 配置文件介绍: input,用来表示输入的文件位置,例如我的日志目录在/var/log/test2017.9.10,则需要写成/www/log/test*.log filter,用来表示需要解析的类型,我们最终是要在kibana上去分析日志,所以这里要写成方便观察的日志。解析规则是通过grok语言来写的,但是写的过程中要对应自己log语言来写,以nginx日志为例我的nginx服务器日志规则如下: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$request_time" "$gzip_ratio"'; 如果不一致,则需要自己去写。 mutate,如果日志记录出错,或者配置文件写错,会产生tags,利用mytate可以直接删除这个字段,减少报错日志。 output,表示输出到某个服务器,可以是redis,可以是数据库,我这边直接输出到了elasticsearch里。主意在配置完成后需要先别输出并且取消stdout { codec=> rubydebug }注释,输出到控制台上检测是否配置有问题。 配置完成后启动 /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/nginx_log/test_logstash.conf & 如果想开机启动需要将命令放置到/etc/rc.local中
Elasticsearch配置
vim /etc/elasticsearch/elasticsearch.yml cluster.name: es #名称 node.name: node-1 #节点名称 path.data: /opt/elasticsearch/data #存放数据 --建议挂在到数据盘上 path.logs: /opt/elasticsearch/logs #存放日志 --建议挂在到数据盘上 network.host: ["192.168.1.213","127.0.0.1"] #ip地址,此处与4.0等低版本有区别 http.port: 9200 #端口 #以下为优化 bootstrap.system_call_filter: false node.master: true node.data: true action.search.shard_count.limit: 5000 #===================================== #修改内存限制 vim /etc/elasticsearch/jvm.options -Xms8g -Xmx8g
Kibana配置
vim /etc/kibana/kibana.yml server.port: 5601 #端口 elasticsearch.url: "http://127.0.0.1:9200" #elasticsearch ip地址 elasticsearch.username: "user" #安装x-pack插件后需要配置 elasticsearch.password: "passwd" elasticsearch.requestTimeout: 100000 #查询超时时间,如果数据量巨大,服务器性能一般需要配置高些
服务器内核优化
vim /etc/sysctl.conf net.ipv4.ip_forward = 0 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 vm.swappiness = 0 net.ipv4.neigh.default.gc_stale_time=120 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce=2 net.ipv4.conf.all.arp_announce=2 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 vm.max_map_count=655360 #======================= vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 #======================== vim /etc/security/limits.d/90-nproc.conf * soft nproc unlimited root soft nproc unlimited
全部完成后启动elk查看是否有报错,kibana能否收到日志。
安装插件
为了管理方便,需要增加权限控制功能,就需要用到x-pack插件cd /usr/share/elasticsearch/ bin/elasticsearch-plugin install x-pack service elasticsearch restart cd /usr/share/kibana/ bin/kibana-plugin install x-pack service kibana restart #安装完成后就可以配置人员权限,但是这个试用期30天,需要每月重装一次,如果不想麻烦,需要去官网申请认证。
辅助脚本
为了减少人工维护成本,需要脚本维护#如果硬盘不是很大则需要定期删除数据,每天执行一次 #/bin/bash #删除30天前数据 date1=`date +%Y.%m.%d --date="-30 day"` curl -u user:passwd -XDELETE 'http://127.0.0.1:9200/*-'${date1}'' #如果单个节点的话会生成大量的UNASSIGNED,这个脚本可以设置每隔几小时清理一次 # !/bin/bash DATE=$(date '+%Y-%m-%d %H:%M:%S') Status=$(curl -u user:passwd -s "http://localhost:9200/_cat/shards" | grep UNASSIGNED | grep -v grep | wc -l) if [ $Status -eq 0 ]; then echo "$DATE 无未分配分片" >> /var/log/status.log else echo "$DATE 有未分配分片" >> /var/log/status.log curl -u user:passwd -XPUT "http://localhost:9200/_settings" -d' { "number_of_replicas" : 0 } ' fi
相关文章推荐
- Elastic Stack(ELK) 5.x版本部署概述
- 详解如何使用Docker快速部署ELK环境(最新5.5.1版本)
- 使用Docker快速部署ELK环境(最新5.5.1版本)
- 使用Docker快速部署ELK环境(最新5.5.1版本)
- ELK服务搭建(开源实时日志分析ELK平台部署)(低版本—简单部署)
- ELK 5.1.1版本部署搭建
- 使用Docker快速部署ELK环境(最新5.5.1版本)
- Nagios安装部署、错误详细解析与Cacti整合文档超精细版本
- SilverLight应用部署问题之客户端自动获取最新版本问题
- 离线部署ELK+kafka日志管理系统【转】
- idea部署项目com.intellij.javaee.oss.admin.jmx.JmxAdminException-未使用最新版本的war包
- ELK应用之一:ELK平台搭建部署
- ClickOnce:部署,强制要求用户使用最新发布版本才可以执行软件的方法
- Elasticsearch5.5.2版本部署中的问题-01
- 部署一台Windows 2003 32位服务器,安装oracle 9.2.0.1版本的数据库,并且升级到9.2.0.6
- 利用saltstack 部署lnmp环境(yum版本)
- Docker中部署 ELK日志分析系统
- CentOS 6.3下Apache+SVN部署Web版本同步
- ELK实时日志分析平台环境部署-2
- rocketmq安装部署过程(4.0.0版本)