


1.1 ElasticSearch搭建
蓝色为实际输入指令
1.1.1 一、查看JDK版本
java -version
1.1.1 二、创建用户
从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户。
1.创建elk 用户组
groupadd elk
2.创建用户agan
useradd agan
passwd agan
3.将agan用户添加到elk组
usermod -G elk agan
4.设置sudo权限
visudo
找到root ALL=(ALL) ALL一行,添加agan用户,如下。
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
agan ALL=(ALL) ALL.
=======切换用户 agan=================================
5.切换用户
su agan
cd/data/

1.1.1 三、安装elasticsearch
1.下载压缩
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz
解压
tar -zxvf elasticsearch-6.2.3.tar.gz
2.修改目录权限
mv elasticsearch-6.2.3/ elasticsearch
修改权限
sudo chown -R agan:elk ./
3.ElasticSearch 配置
1.修改elasticsearch.yml
修改network.host和http.port
cd elasticsearch
vi config/elasticsearch.yml
network.host: 0.0.0.0
http.port: 9200

=============切换用户 root=================================

2.修改/etc/sysctl.conf
vi /etc/sysctl.conf
添加内容如下:
vm.max\_map\_count=262144

sysctl -p
修改文件/etc/security/limits.conf
vi /etc/security/limits.conf
添加如下内容
\* soft nofile 65536
\* hard nofile 65536
\* soft nofile 65536
\* hard nofile 65536

=========切换用户 agan=================================

cd /data/
ll
cd elasticsearch
ll
cd bin/
4.ElasticSearch启动与停止
1.后台启动
./elasticsearch -d
2.验证
curl http://47.106.128.80:9200

本地验证
http://47.106.128.80:9200/

1.1.1 四、安装Head插件
1.Head插件简介
ElasticSearch-head是一个H5编写的ElasticSearch集群操作和管理工具,可以对集群进行傻瓜式操作。
它提供了:
a.索引和节点级别操作
b.搜索接口能够查询集群中原始json或表格格式的检索数据
c.能够快速访问并显示集群的状态
=========切换用户 root=================================


2.安装NodeJS
#要求在root下执行(上面已执行第一句,不用重复)
curl -sL https://rpm.nodesource.com/setup\_8.x | bash -
yum install -y nodejs
3.安装npm
npm install -g cnpm --registry=https://registry.npm.taobao.org
4.使用npm安装grunt
npm install -g grunt
npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy
========切换用户 agan=================================

5.查看以上版本
node -v
npm -v
grunt -version
6.下载head插件源码
cd /home/agan
mkdir es
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip master.zip
7.国内镜像安装
cd elasticsearch-head-master
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
sudo cnpm install

1.1.1 五、配置
1.配置 ElasticSearch,使得HTTP对外提供服务
vi config/elasticsearch.yml
添加如下内容
# 增加新的参数,这样head插件可以访问es。设置参数的时候:后面要有空格
http.cors.enabled: true
http.cors.allow-origin: "\*"

2.修改Head插件配置文件
vi Gruntfile.js

找到connect:server,添加hostname一项,如下
connect: {
server: {
options: {
hostname: '0.0.0.0',
port: 9100,
base: '.',
keepalive: true
}
}
}



1.1.1 六、启动
1.重启elasticsearch
./elasticsearch -d

2.启动head
elasticsearch-head-master目录下:
grunt server
或 npm run start


3.访问9100端口

1.1.1 七、简单应用
1.创建索引
curl -XPUT http://47.106.128.80:9200/applog

2.查看head变化
http://47.106.128.80:9100/

logstash搭建
1.1.1 下载安装包:www.elastic.co/downloads


1.1.1 网络好就直接下,不用上面操作
1.1.2 下载压缩
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.tar.gz
tar zxvf logstash-6.2.3.tar.gz
改名
mv logstash-6.2.3/ logstash

1.1.1 测试
./bin/logstash -e 'input { stdin { } } output { stdout {} }'

1.1.1 修改配置
在 logstash的主目录下
vim config/log\_to\_es.conf
复制内容如下:
# For detail structure of this file
# Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
input {
# For detail config for log4j as input,
# See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
tcp {
mode => "server"
host => "47.106.128.80"
port => 9250
}
}
filter {
#Only matched data are send to output.
}
output {
# For detail config for elasticsearch as output,
# See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
elasticsearch {
action => "index" #The operation on ES
hosts => "47.106.128.80:9200" #ElasticSearch host, can be array.
index => "applog" #The index to write data to.
}
}
1.1.1 启动
./bin/logstash -f config/log\_to\_es.conf
或 后台运行守护进程 ./bin/logstash -f config/log\_to\_es.conf &


测试
curl 'http://47.106.128.80:9200/\_search?pretty'
1.1 Kibana搭建(UI)
1.1.1 网速慢可以网页下载,然后上传到Linux的data中

1.1.1 网速好在data文件夹下下载
1.下载压缩
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-linux-x86\_64.tar.gz
tar zxvf kibana-6.2.3-linux-x86\_64.tar.gz
mv kibana-6.2.3-linux-x86\_64.tar.gz/ kibana

1.1.1 修改配置
vim config/kibana.yml
把以下注释放开,使配置起作用。
server.port: 5601
server.host: “192.168.1.245”
elasticsearch.url: http://192.168.48.35:9200
kibana.index: “.kibana”


1.1.1 启动
./bin/kibana
4.测试
http://192.168.48.35:5601/app/kibana

1.1 springcloud集成ELK(修改15.1-15.2)
1.1.1 集成ELK方法
15.1和15.2生产者消费者添加依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.0</version>
</dependency>
logback.xml要把日志发到服务器上
<?xml version="1.0" encoding="UTF-8"?>
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<springProperty scope="context" name="springAppName"
source="spring.application.name" />
<!-- 日志在工程中的输出位置 -->
<property name="LOG\_FILE" value="\${BUILD\_FOLDER:-build}/\${springAppName}" />
<!-- 控制台的日志输出样式 -->
<property name="CONSOLE\_LOG\_PATTERN"
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(\${LOG\_LEVEL\_PATTERN:-%5p}) %clr(\${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n\${LOG\_EXCEPTION\_CONVERSION\_WORD:-%wEx}}" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<!-- 日志输出编码 -->
<encoder>
<pattern>\${CONSOLE\_LOG\_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 为logstash输出的JSON格式的Appender -->
<appender name="logstash"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>47.106.128.80:9250</destination>
<!-- 日志输出编码 -->
<encoder
class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"severity": "%level",
"service": "\${springAppName:-}",
"trace": "%X{X-B3-TraceId:-}",
"span": "%X{X-B3-SpanId:-}",
"exportable": "%X{X-Span-Export:-}",
"pid": "\${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"rest": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="DEBUG">
<appender-ref ref="console" />
<appender-ref ref="logstash" />
</root>
</configuration>
1.1.1 启动生产者和消费者
发送一个请求

观察Elasticsearch页面变化


Kibana连接到Elasticsearch




试一下Kinbana功能


1.1.1 ELK原理
logback发送日志到logstash的input



logstash的output连接Elasticsearch

Elasticsearch再通过Kibana(UI)展示出来
