测试服务器简单部署elasticsearch和kibana,实现日志平台
工作需要,在测试环境搭建了一下日志平台,记录一下。
服务器:linux centos
工具列表:elasticsearch,kibana,filebeat
1、下载es,kibana,filebeat 。直接官网下载 https://www.elastic.co/cn/,因为我的jdk是1.8,所以下载的工具都是5.6.0版本 。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.16-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.16.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/kibana-5.6.16-linux-x86_64.tar.gz
正常线上服务器用的最多的应该是ELK,L指的是 Logstash ,因为我都没有配置过。网上查了一些资料,感觉Logstash 搭建好像比较麻烦,所以直接用了官网上的 轻量级日志采集工具:Beats 。 盗用一下官网的图,如下: Beats里面有很多工具,因为我是直接读取文件,所以用了 Filebeat
2、下载完成后,解压 。es没改配置,默认端口9200 ,为了安全起见,禁止用root 启动。因此新建 用户 elsearch。
创建用户后,需要赋用户权限 chmod -R elsearch:elsearch /kibana-5.6.0 。下面所有操作,都使用 elsearch用户完成
1)使用 nohup ./elasticsearch-5.6.0/bin/elasticsearch & 命令启动es服务
2)进入filebeat目录,修改配置 filebeat.yml , 主要修改 input节点,paths 改为你服务器上的日志文件路径,比如:/mylog/*/*.log 。输出节点out.elasticsearch 不用修改,直接默认"localhost:9200" ,然后可以使用命令运行 ./filebeat-5.6.0/filebeat ,当然如果在后台运行,可以使用nohup命令
filebeat 关键采集配置如下:
- input_type: log paths: - /liulv_log/eagle/*.log multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:' multiline.negate: false multiline.match: after fields: appid: eagle fields_under_root: true - input_type: log paths: - /liulv_log/payment/*.log multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:' multiline.negate: false multiline.match: after fields: appid: payment fields_under_root: true
3)修改kibana配置, /kibana-5.6.0/config/kibana.yml ,我只修改了下面两条配置 。这样就可以外网访问了。 然后同样操作,启动kibana :./kibana-5.6.0/bin/kibana
server.host: "0.0.0.0"
elasticsearch.url: "http://127.0.0.1:9200"
4)根据外网IP+端口访问kibana,kibana默认端口:5601 。进入页面后,默认会提示创建索引 ,Index Patterns ,我也不懂,直接Index pattern 填了* ,就可以选择一个Time Filter field name 。然后创建。就可以使用Kibana的 discover来查看日志了。
3、日志平台可以直接通过域名+端口访问,外网直接访问还是有点危险,我这边用nginx做了一个安全校验
location / { proxy_pass http://127.0.0.1:5601$request_uri; auth_basic "登陆验证"; auth_basic_user_file /etc/nginx/htpasswd; }
使用 httpasswd 命令创建账户密码。 如果没有这个命令,可以先安装:yum install httpd-tools
然后使用命令创建用户和密码:htpasswd -c /etc/nginx/htpasswd username 。 然后再访问就需要验证账号密码了。