运维之路-完整的ELK搭建全过程和配置文件

ELK的安装以及Logstash收集日志的配置

Centos7+ELK V5.5.0

作者:编程界的小学生

时间:2018-3-18

零、注意事项

1、必须安装JDK,并且配置好环境变量(参考:【运维之路-CentOS7+常用软件的安装(JDK+Tomcat+Nginx+Redis+MySQL)】)

2、必须非root用户启动

一、ELK版本

V5.5.0

二、Elasticsearch的安装

1、安装

解压缩

tar -zxvf elasticsearch-5.5.0.tar

进入目录

cd elasticsearch-5.5.0/

2、配置

vim config/elasticsearch.yml

修改如下key:

cluster.name: es_cluster #这里是你的el集群的名称

node.name: node0 # elseach集群中的节点

path.data: /tmp/elasticseach/data #设置 data 目录

path.logs: /tmp/elasticseach/logs #设置 logs 目录

network.host:192.168.10.101 #这里配置本机的 ip 地址

http.port: 9200 #默认的端口

修改服务器内存、最大链接数等参数,不然就会报各种ERROR:

(1)修改config下的jvm.option文件

shell > vim/opt/elasticsearch-5.5.0/config/jvm.opstions

-Xms2g改为1g或者512M

-Xmx2g改为1g或者512M

(2)修改limits.conf文件添加如下内容

shell > vim/etc/security/limits.conf

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

(3)编辑sysctl.conf文件添加如下内容

shell > vim/etc/sysctl.conf

vm.max_map_count=655360

shell > sysctl -p

3、启动

注意:非root用户!!

./bin/elasticsearch

4、测试

输入http://localhost:9200

三、Head插件的安装

1、先在本地解压缩elasticsearch-head-master.zip

2、安装node和grunt

3、修改上一节安装的Elasticsearch的elasticsearch.yml文件添加以下内容

4、修改head插件的Gruntfile.js

connect: {

server: {

options: {

hostname:‘0.0.0.0‘,

port: 9100,

base:‘.‘,

keepalive: true

}

}

}

#增加hostname属性,设置为0.0.0.0

5、修改app.js

elasticsearch-head/_site/app.js

this.base_uri =this.config.base_uri || this.prefs.get("app-base_uri") ||"http://192.168.73.22:9200";

#把localhost修改成ES的服务器地址,如上面192.168.73.22

6、运行head

npm install

#如果安装时报错则尝试下面命令

shell > npm install phantomjs-prebuilt@2.1.14--ignore-script

#启动

shell > grunt server

#后台启动

shell > cd /opt/elasticsearch-head/ && gruntserver &

7、测试

输入http://localhost:9100

四、Logstash的安装

1、安装

tar -zxvf logstash-5.5.0.tar.gz

2、运行以及测试

cd /opt/logstash-5.5.0/

shell > bin/logstash -e'input}output}'

Hello World #在此输入Hello World,看到有返回说明安装成功

{

"@timestamp"=> 2017-10-31T07:47:48.466Z,

"@version"=> "1",

"host" =>"localhost",

"message"=> "Hello World"

}

五、Kibana的安装

1、安装

tar-zxvf kibana-5.5.0-linux-x86_64.tar.gz

2、配置

cd kibana-5.5.0-linux-x86_64/

vim config/kibana.yml

server.port: 5601 # kibaba服务 port

server.host: "192.168.73.22" #你的kibaba 的服务host

elasticsearch.url: "http://192.168.73.22:9200"# elastaticseach的host

kibana.index: ".kibana" # kibana

3、启动

./bin/kibana

4、测试

输入:http://localhost:5601

六、Logstash的配置

logstash.conf

七、ELK+Redis

1、为什么要用Redis

假如我们项目是多服务器部署(或者带有演示环境和生产环境等),这样我们要部署ELK的话需要部署两套来各自收集各自服务器上的日志到logstash。我们可以架一台Redis服务,然后让项目代码中打印的log直接到redis中(比如logback等),这时候配置logstash的input为redis即可。这样我们项目日志都打输出到redis,然后logstash去同步redis的日志数据到Elasticsearch。

2、logback的配置文件

logback-spring.xml

3、logstash的配置文件

logstash-redis.conf

4、同步到Elasticsearch里的数据长什么样?

5、注意几点

5.1、无需担心redis会爆掉,因为只要logstash同步完数据,就会立刻删除掉redis中的log数据。5.2、建议log打印到redis的其他库,不建议和业务库放到一起,我这里是业务在0库,Log在5库。

6、存在的问题

“七”的一开头就说了用redis的好处是为了解决多台机器部署的日志问题,但是只解决了项目日志的问题,nginx或者tomcat的日志并没解决,因为nginx和tomcat是单独部署到服务器上的,日志文件也在各自的服务器上。所以可以用如下思路解决:

每台服务器各部署一台logstash负责收集各服务器上的日志文件,并同步到redis中,然后单独部署一台logstash负责从redis中读取日志同步到Elasticsearch。

也就是说假设有A,B两台服务器,那么我们需要部署三台Logstash,具体如下:

项目日志-》直接通过日志插件扔到redis中

A-》logstash-》负责收集A服务器上的nginx+tomcat等日志文件到redis

B-》logstash-》负责收集B服务器上的nginx+tomcat等日志文件到redis

然后在单独部署一台logstash(可以在A,B或者其他单独能访问Redis的服务器),这台logstash将redis的数据同步到Elasticsearch中。

八、如何给kibana加上密码访问

直接通过nginx即可。步骤如下

1、安装httpd-tools

yuminstall-y httpd-tools

2、配置用户名密码

他会为我们自动在/etc/nginx/conf.d/下创建一个httpasswd

htpasswd -bc /etc/nginx/conf.d/httpasswdadminadmin

3、配置nginx

### 查看日志

location /kibana {

auth_basic "Restricted Access";

auth_basic_user_file /etc/nginx/conf.d/httpasswd;

rewrite /kibana/(.*) /$1 break;

proxy_pass http://192.168.73.22:5601;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection 'upgrade';

proxy_set_header Host $host;

proxy_cache_bypass $http_upgrade;

}

4、配置kibana

修改kibana.yml的server.basePath属性

server.basePath: "/kibana"

5、注意

5.1、server.basePath默认是根目录,我们这里改成/kibana,要和nginx里面的映射路径/ kibana和rewrite一致。5.2、若上一步没问题,访问还是404,则检查proxy_pass是ip还是localhost,两个来回试试。

6、效果

访问路径:一定要带上最后那个/

完整的文档教程以及配置文件都放到了码云上

https://gitee.com/geekerdream/advanced-notes/tree/master

如果对你有帮助请给个star,谢谢。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180320A0TE3F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券