ELK源码6.6.1部署学习实践

日志收集,是运维工作中很重要的一环。不管是针对线上的系统服务,还是基础架构上的网络设备,有一套完整合适的日志收集系统,是必不可少的,这将成为之后遇到故障问题,提供一个有效的依据和排查手段。

目前已接触的日志收集系统:

Windows下的Kiwi syslog sever

Linux下的rsyslog,Graylog,ELK,前者是老牌日志收集工具,后两者简单看了一下介绍,日志收集只是其中一个功能,其功能优势更体现在分析和搜索。

ELK官网上提供了多种安装方式,软件包,源码,docker,之前一直使用的是Ubuntu的apt安装方式,后来在新版本发布后,就用了源码学习搭建了一次,据说这个版本针对Index索引的删除操作,有了更好的支持,正好可以来验证一下。

在安装ELK之前,如必需的java环境已具备,在此忽略。

部署的环境采用Ubuntu16.04,个人比较喜欢Ubuntu,基本大多数应用部署在此。

1.下载安装

#下载链接直接在官网获取,此次忽略
#解压
tar -zxvf elasticsearch-6.6.1.tar.gz 
tar -zxvf kibana-6.6.1-linux-x86_64.tar.gz
tar -zxvf logstash-6.6.1.tar.gz

2.软件包目录

#命名
 mv elasticsearch-6.6.1 elasticsearch
 mv kibana-6.6.1-linux-x86_64 kibana
 mv logstash-6.6.1 logstash

#将目录移动到/usr/local下
cp -r elasticsearch /usr/local/
cp -r kibana /usr/local/
cp -r logstash /usr/local/

3.配置

配置elasticsearch

#编辑配置文件
/usr/local/elasticsearch/config/elasticsearch.yml
#修改如下内容
cluster.name: es-cluster
node.name: node-1
network.host: 10.x.x.11
http.port: 9200
#增加
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
#elasticsearch不能使用root执行,需要给执行账户分配权限
chown padmin:padmin -R /usr/local/elasticsearch/

运行

#此处要加“-d”后台运行
/usr/local/elasticsearch/bin/elasticsearch -d
#不加实际测试也可以正常运行,可以看到运行log。但遇到了一个奇怪的问题,当未后台运行时,如果将远程登录断开后,运行elasticsearch的进程就会自动停止,导致9200端口关闭。

Kibana

#编辑配置文件
/usr/local/kibana/config/kibana.yml
#修改如下内容,此处url的ip需与elasticsearch文件中保持一致
server.port: 5601
elasticsearch.hosts: ["http://10.x.x.11:9200"]

运行

#此处加“&”,使其可以后台运行
#遇到类似问题,不后台运行,同样会出现关闭远程管理后,进程自动停止
/usr/local/kibana/bin/kibana &

Logstash

cd /usr/local/logstash/config/
#复制模板文件生成配置文件
cp logstash-sample.conf logstash.conf
#编辑配置文件,此处hosts的url对应的是elasticsearch配置中的ip
input {
  syslog {
  port => 514
  }
  }
output {
 elasticsearch {
 hosts => ["http://10.x.x.11:9200"]
 index => "office.network-syslog-%{[@metadata][version]}-%{+YYYY.MM.dd}"
 }
}
#编辑配置文件
usr/local/logstash/bin/logstash.yml
#修改如下内容,ip与elasticsearch配置中的ip的一致
http.host: "10.x.x.11"
http.port: 9600-9700

运行

/usr/local/logstash/bin/logstash  -f /usr/local/logstash/config/logstash.conf

至此ELK的三大组件已完成部署并正常运行了

但存在一个安全问题,就是Kibana现在是无认证登录,直接访问url就可以跳转到日志浏览的页面。而官方提供的x-pack插件虽然可以提供验证登录的安全功能,但由于其license收费,从预算投入及需求来看,显然也有并不适合多数场景。

因此这里采用了一种折中的方式,通过Nginx转发代理&apache功能间接完成认证的目的,此方案也是网上多数大神提供的参考,这里借用一下。

Nginx代理

#需要先下载安装所需软件包
apt-get install nginx
apt-get install apache2-utils

认证配置

#创建目录及认证文件
mkdir -p /data/nginx/db/
cd /data/nginx/db/
touch passwd.db

配置Nginx

#编辑如下文件
/etc/nginx/nginx.conf
#在"http{"下添加如下内容,此处目的是让外部访问kibana的80端口,然后系统根据这个访问请求,将80重定向本身的5601端口上,进而访问kibana的web页面
#proxy_pass 重定向到127.0.0.1上,目的也是为了让外部无法直接访问5601端口

server {
 listen 80;
 server_name 10.x.x.11;
 location / {
 auth_basic "secret";
 auth_basic_user_file /data/nginx/db/passwd.db;
 proxy_pass http://127.0.0.1:5601;
 proxy_set_header Host $host:5601;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header Via "nginx";
 }
 access_log off;
}

添加认证账号

#执行以下命令,使用的是前边已经创建的认证文件,建立账号admin
htpasswd -c /data/nginx/db/passwd.db admin
#命令执行后,会提示输入新密码
#查看认证文件,会发现admin账号已经生成了密码,且是密文的
cat /data/nginx/db/passwd.db 
admin:$apr1$.D5RMgHD$DMr/J1q.iuM/OaAnkiKKU1

4.访问

通过访问http://10.x.x.11/app/kibana#/home?_g=() ,会有认证框弹出,输入密码后登录

image

image

登录Kibana后,还需要在logstash上添加索引,通过office.network-syslog* 匹配

5.索引周期策略

值得一提的是,针对Index索引的保存时间及删除,增加了一个索引周期策略Index Lifecycle Policies

image

image

image

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值