文档章节

[喵咪BELK实战(2)] elasticsearch+kibana搭建

喵了_个咪
 喵了_个咪
发布于 2017/05/03 16:42
字数 1914
阅读 651
收藏 41

[喵咪BELK实战(2)] elasticsearch+kibana搭建

前言

上一节我们介绍了日志系统和BELK之后就要到激动人心的安装环境了,实践出真知都知道日志系统很重要只有把它搭建起来才有效果,那我们今天就来一同搭建 BELK 日志系统中的elasticsearch+kibana来进行实时的索引在线查看功能

附上:

喵了个咪的博客:w-blog.cn

官网地址:https://www.elastic.co/cn/

1. 准备工作

BELK下载地址

笔者这里的机器系统是centos6.8,使用BELK需要安装jdk1.8以上(主要是elasticsearch依赖)

jdk1.8可以通过官网下载: Java SE Development Kit 8 - Downloads

tar -zxvf jdk-8u101-linux-x64.tar.gz
mv jdk1.8.0_101/ /usr/local/jdk1.8
# 设置环境变量
vim /etc/profile
# 加入如下内容
# java
export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=/usr/local/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
# 使得环境变量生效
source /etc/profile
# 打印java版本号
java -version
# 看到如下输出java环境安装完成
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

使用Supervisor进行程序常驻安装可以参考笔者博文: 喵咪Liunx(1)计划任务队列脚本后台进程Supervisor帮你搞定 - 文振熙的个人空间

2. elasticsearch

elasticsearch是强大的索引程序,支持大量的数据索引查询,使用JAVA编写,缺点是太吃资源(CPU,内存)

2.1 安装

首先我们安装配置elasticsearch

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz
tar -zxvf elasticsearch-5.3.0.tar.gz
mv elasticsearch-5.3.0 /usr/local/

此时就可以启动elasticsearch了使用**/usr/local/elasticsearch-5.3.0/bin/elasticsearch** 就可以运行但是会得到如下异常:

[2017-04-27T15:12:06,495][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

主要原因是不能使用root用户来运行elasticsearch, elasticsearch在默写情况下可以直接对服务器执行脚本,出于安全性老老实实建立一个用户:

groupadd esgroup
useradd esuser -g esgroup -p espassword
# 吧elasticsearch目录的权限赋予esuser
chown -R esuser:esgroup /usr/local/elasticsearch-5.3.0/
# 切换用户运行
su esuser

看到如下数据表明elasticsearch可以正常运行:

[2017-04-27T15:15:12,291][INFO ][o.e.c.s.ClusterService   ] [q-flXxl] new_master {q-flXxl}{q-flXxldTxWSCTqQn-Rjjg}{dXOgMmGISWyP5UB-_VPpjQ}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
[2017-04-27T15:15:12,312][INFO ][o.e.h.n.Netty4HttpServerTransport] [q-flXxl] publish_address {127.0.0.1:9200}, bound_addresses {127.0.0.1:9200}
[2017-04-27T15:15:12,315][INFO ][o.e.n.Node               ] [q-flXxl] started

可以通过url调用的方式验证服务是否可用

curl localhost:9200
# 会有如下输出
{
  "name" : "q-flXxl",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "vVx27KRfTR64Wc1NCwBO_Q",
  "version" : {
    "number" : "5.3.0",
    "build_hash" : "3adb13b",
    "build_date" : "2017-03-23T03:31:50.652Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.1"
  },
  "tagline" : "You Know, for Search"
}

2.2 警告解决

如果在输出started之前还有一些[WARN]可以一一解决掉:

1.此警告是对于最大文件打开数量过少导致的


[2017-04-27T15:15:09,246][WARN ][o.e.b.BootstrapChecks    ] [q-flXxl] max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

vi /etc/security/limits.conf 
# 添加或修改如下内容:
* soft nofile 65536
* hard nofile 65536


2.此警告是对于最大虚拟内存过少导致的


[2017-04-27T15:15:09,246][WARN ][o.e.b.BootstrapChecks    ] [q-flXxl] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

vi /etc/sysctl.conf 
# 添加下面配置:
vm.max_map_count=262144
# 执行
sysctl -p

3.在阿里云服务器上可能出现

[2017-04-27T15:15:09,246][WARN ][o.e.b.BootstrapChecks    ] [q-flXxl] system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

# 编辑配置文件
vim /usr/local/elasticsearch-5.3.0/config/elasticsearch.yml
bootstrap.system_call_filter: false

2.3 配置文件

在配置文件中有一些关键配置,编辑文件/usr/local/elasticsearch-5.3.0/config/elasticsearch.yml

# 服务监听IP地址
network.host: localhost                                                                                                                                                                                 
# 服务监听端口
http.port: 9200
            
# 索引文件和日志文件存储地址默认是在安装目录                                                                                                                 
path.data: /data/elasticsearch/data                                                                                                                                                                                                                              
path.logs: /data/elasticsearch/logs  

注意:elasticsearch没有安全控制一定要限制内网才能使用,有elasticsearch被劫持勒索的事件

2.4 使用Supervisor运行

使用Supervisor常驻启动修改配置文件加入如下语句在重启Supervisor就可以在后台运行

[program:elasticsearch]
;你需要执行的语句
command=/usr/local/elasticsearch-5.3.0/bin/elasticsearch
;是否自动启动
autostart=true
autorestart=true
;运行程序的用户
user=esuser

3 kibana

kibana是一个使用elasticsearch 作为数据源的 UI可视化 查询工具

3.1 安装

kibana 安装就相对简单了很多

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86_64.tar.gz
tar -zxvf kibana-5.3.0-linux-x86_64.tar.gz
mv kibana-5.3.0-linux-x86_64 /usr/local/kibana-5.3.0

默认kibana只能使用localhost进行访问,需要修改配置文件来允许外网访问

vim /usr/local/kibana-5.3.0/config/kibana.yml

# 服务监听端口默认5601
server.port: 5601                                                                                          
# 服务监听IP段
server.host: "外网地址"   
# 需要连接到elasticsearch的地址
elasticsearch.url: "http://localhost:9009"     

然后使用外网地址就可以访问了

但是现在elasticsearch还没有数据所以也没有办法查看检索

3.2 对kibana进行权限控制

细心的大家已经发现了登录kibana居然没有任何的限制.... 那么要怎么办呢? 这边笔者建议使用nginx来进行权限验证 (Nginx安装细节就不列举出来了)


yum install httpd
# 创建用户需要输入密码
htpasswd -c /usr/local/nginx/passwd.db kibanauser
chmod 400 /usr/local/nginx/passwd.db
chown -R www:www /usr/local/nginx/passwd.db

需要让kibana配置文件改回到localhost限制外网访问之后在nginx加入如下配置:


server {
  listen       8081;
  server_name _;
  location / {
     auth_basic "secret";
     auth_basic_user_file /usr/local/nginx/passwd.db;
     proxy_pass http://localhost:5601;
  }
}

然后重启nginx之后会发现老的5601无法访问了,访问8081端口会出现如下界面:

输入之前配置好的用户名密码即可正常使用

3.3 使用Supervisor运行

使用Supervisor常驻启动修改配置文件加入如下语句在重启Supervisor就可以在后台运行


[program:kibana]
;你需要执行的语句
command=/usr/local/kibana-5.3.0/bin/kibana
;是否自动启动
autostart=true
autorestart=true
;运行程序的用户
user=root

4.创建测试数据

虽然还没有logstash + filebeat来帮助采集数据但是我们可以先手动向elasticsearch中创建索引然后使用 kibana 进行查看,先来了解一下elasticsearch常用API


# 查看集群状态
curl 'localhost:9200/_cat/health?v'
# 查看所有索引列表
curl 'localhost:9200/_cat/indices?v'
# 创建索引
curl -XPUT 'localhost:9200/索引名称?pretty'
# 插入索引
curl -XPUT 'localhost:9200/索引名称/TYPE名称/ID名称?pretty' -d '消息体必须是JSON'
# 查看索引
curl -XGET 'localhost:9200/索引名称/TYPE名称/ID名称?pretty'
# 删除缩影
curl -XDELETE 'localhost:9200/索引名称?pretty'

我们试着创建一个索引并且写入一条数据:

curl -XPUT 'localhost:9200/test-log-2017-4-28?pretty'
curl -XPUT 'localhost:9200/test-log-2017-4-28/log/1?pretty' -d '{"msg":"这是一条测试log"}'

然后在kibana中就可以查看了

总结

本节我们优先安装并且比较完整的配置了elasticsearch+kibana 这样一个索引和查询系统,并且也了解了elasticsearch基本的使用方式,下一节将会结合日志采集系统logstash + filebeat进行日志采集传输到elasticsearch 让 kibana 可以进行查看,那么今天的博文就到这里我们下次再见...

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

© 著作权归作者所有

喵了_个咪
粉丝 334
博文 163
码字总数 212184
作品 4
杨浦
技术主管
私信 提问
[喵咪BELK实战(3)] logstash+filebeat搭建

[喵咪BELK实战(3)] logstash+filebeat搭建 前言 在上节我们已经把elasticsearch+kibana已经搭建起来了,可以正常的进行数据的索引查询了,但是直接对elasticsearch进行操作也非常不方便, elast...

喵了_个咪
2017/05/09
0
0
二, 跨语言微服务框架 - Istio环境搭建

当我们知道Istio是一个好东西,能够帮助我们快速实现微服务化中的一些关键节点,那么下一步就需要考虑怎么使用Istio了,Istio现在版本是和Kubernetes强关联在一起的,如果大家还不是太了解K...

喵了_个咪
2018/11/12
0
0
[喵咪KafKa(2)]单机模式运行KafKa

在上节我们介绍完KafKa之后,今天我们来搭建KafKa三种模式(单机模式,伪集群,集群)中的一种单机模式的搭建,在正常的使用中我们一般吧单机模式作为开发环境的标配,今天就来和喵咪一同搭建一个K...

喵了_个咪
2016/09/12
190
0
[喵咪PHP]页面显示空白问题

哈喽!大家好啊,喵咪PHP第一次和大家见面了,熟悉的朋友呢也之道喵咪我也开了喵咪Liunx和喵咪Golang这两个坑目的呢是吧平常遇到的一些问题或者是在学习中的东西好工具分享出来和大家交流沟通,...

喵了_个咪
2016/06/09
408
0
PhalApi(π框架) v1.4.1 发布,PHP 轻量级 API 接口开发框架

[前言] 夏天的脚步悄悄来临,在各位小伙伴的辛勤付出下,PhalApi迎来了新版本V1.4.1,在这次更新中着重以开发者便捷为本新增优化了很多功能,如对接口文档添加了各项重要功能可以直接在文档页面进...

喵了_个咪
2017/07/01
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
15
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
10
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
14
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部