环境
主机 | 服务 |
---|---|
10.0.0.50 | Elasticsearch、 Kibana |
10.0.0.51 | Logstash 、Filebeat |
一、安装包下载和jdk安装
1、下载地址
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlhttps://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz
https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz
2、环境
10.0.0.50 部署Kibana、ES
10.0.0.51 部署Logstash
3、jdk安装
解压jdk安装包
tar zvxf jdk-8u60-linux-x64.tar.gz
ln -s /usr/local/jdk1.8.0_60 /usr/local/jdk
配置环境变量
vim /etc/profile
添加
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
source /etc/profile
[root@web03 local]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
二、Kibana安装
将安装包放到/usr/local目录下然后解压
cd /usr/local
tar zvxf kibana-6.6.0-linux-x86_64.tar.gz
mv kibana-6.6.0-linux-x86_64 kibana-6.6.0
修改kibana配置文件
vim /usr/local/kibana-6.6.0/config/kibana.yml
[root@elk-node1-50 local]# grep -Ev "^$|^[#;]" kibana-6.6.0/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
指定访问端口 5601
server.host改为0.0.0.0方便等等使用浏览器访问
连接elasticsearch的地址为http://localhost:9200,如果后面elasticsearch中配置文件中的地址不为localhost而是为主机IP地址的话,这里也要改为IP地址。
启动kibana
前台启动方式
/usr/local/kibana-6.6.0/bin/kibana
后台启动方式
nohup /usr/local/kibana-6.6.0/bin/kibana >/tmp/kibana.log 2>/tmp/kibana.log &
kibana的安全说明
- 默认无密码,谁都可以访问
- 如果使用云厂商,可以在安全组控制某个IP的访问
- 建议借用Nginx实现用户名密码登录
三、Elasticsearch安装
1、解压
tar zvxf elasticsearch-6.6.0.tar.gz
2、修改配置文件
设置数据存放目录和日志存放目录,监听的IP和端口
vim /usr/local/elasticsearch-6.6.0/config/elasticsearch.yml
path.data: /usr/local/elasticsearch-6.6.0/data
path.logs: /usr/local/elasticsearch-6.6.0/logs
network.host: 127.0.0.1
http.port: 9200
3、启动Elasticsearch
Elasticsearch的启动需要使用普通用户,创建一个elk用户,然后修改其目录所属用户为elk,切换到elk用户下然后启动程序。
[root@elk-node1-50 local]# useradd -s /sbin/nologin elk
[root@elk-node1-50 local]# chown -R elk:elk /usr/local/elasticsearch-6.6.0/
[root@elk-node1-50 local]# su - elk -s /bin/bash
[elk@elk-node1-50 ~]$ /usr/local/elasticsearch-6.6.0/bin/elasticsearch -d
4、访问页面
这个时候再访问kibana的页面http://10.0.0.50:5601
5、Elasticsearch启动注意事项
- 如果监听在127.0.0.1的话,可以启动成功
- 如果跨机器通讯,需要监听在真实网卡上
- 监听在真实网卡需要调整系统参数才能正常启动
默认情况下,Elasticsearch 仅仅绑定回环地址,比如127.0.0.1 和[::1],只允许本机访问。为了与其他服务器上的节点进行通信并形成集群,你的节点将需要绑定到非环回地址。通常只需要配置一下 network.host,设成0.0.0.0让任何人都可以访问,线上服务不要这样设置,要设成具体的 IP。
监听在非127.0.0.1时:
- 监听在0.0.0.0或者内网地址
- 以上两种 监听都需要调整系统参数
最大文件打开数调整/etc/security/limits.conf
nofile 65536
最大打开进程数调整/etc/security/limits.d/20-nproc.conf
nproc 10240
内核参数调整/etc/sysctl.conf
vm.max_map_count=262144
监听网卡建议
- 如果学习。建议监听在127.0.0.1
- 如果是云服务器的话,一定要把9200和9300公网入口在安全组限制一下
- 线上环境建议监听在内网网卡,监听在公网容易被入侵
6、监听0.0.0.0端口测试。
修改network.host为0.0.0.0,然后kill进程后重新启动elasticsearch
vim /usr/local/elasticsearch-6.6.0/config/elasticsearch.yml
[root@elk-node1-50 local]# su - elk -s /bin/bash
[elk@elk-node1-50 ~]$ /usr/local/elasticsearch-6.6.0/bin/elasticsearch -d
查看日志有报错
[elk@elk-node1-50 ~]$ tail /usr/local/elasticsearch-6.6.0/logs/elasticsearch.log
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
使用root用户设置最大文件打开数
vim /etc/security/limits.conf
添加
* - nofile 65536
内核参数调整
#查看内核参数
[root@elk-node1-50 ~]# sysctl -a | grep max_map_count
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.ens37.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"
vm.max_map_count = 65530
#修改内核参数
vim /etc/sysctl.conf
vm.max_map_count=262144
#使内核参数生效
[root@elk-node1-50 ~]# sysctl -p
vm.max_map_count = 262144
查看监听端口,默认使用9200和9300端口
[elk@elk-node1-50 ~]$ netstat -tlunp | grep java
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::9200 :::* LISTEN 5441/java
tcp6 0 0 :::9300 :::* LISTEN 5441/java
这个时候使用浏览器可以从外部访问elasticsearch,如果监听127.0.0.1访问不到这个页面。
network.host详解
四、Elasticsearch基本操作
1、概念
- 索引:类似于mysql中的数据库
- 类型:类似于mysql中的数据表
- 文档:存储数据
2、数据操作
- 手动curl操作Elasticsearch会比较难
- 借用Kibana来操作Elasticsearch
3、测试Web接口
-
浏览器访问
-
Kibana操作:GET /
4、索引操作 -
创建索引: PUT /wangxiaoyu
-
删除索引: DELETE /wangxiaoyu
-
获取所有索引:GET _cat/indices?v
五、Logstash安装
1、解压
tar zvxf logstash-6.6.0.tar.gz
2、最简单的配置
[root@elk-node2-51 local]# cat /usr/local/logstash-6.6.0/config/logstash.conf
input{
stdin{}
}
output{
stdout{
codec=>rubydebug
}
}
3、读取日志文件配置
[root@elk-node2-51 ~]# cat /usr/local/logstash-6.6.0/config/logstash.conf
input{
file{
path=>"/usr/local/nginx/logs/access.log"
}
}
output{
stdout{
codec => rubydebug
}
}
4、前台启动logstash服务
/usr/local/logstash-6.6.0/bin/logstash -f /usr/local/logstash-6.6.0/config/logstash.conf
5、后台启动
nohup /usr/local/logstash-6.6.0/bin/logstash -f /usr/local/logstash-6.6.0/config/logstash.conf >/tmp/logstash.log 2>/tmp/logstash.log &
注意:为了使Logstash后台运行,不管是nohub … &还是screen还是supervisord管理进程时千万不要把配置目录中的配置文件中的input {}区段设置为测试用的stdin {},否则进程运行一会儿就会自动退出。我一开始使用的上面的stdin {}最简单的配置,虽然后台启动成功但是一会儿就退出了。
6、Logstash默认使用9600端口
[root@elk-node2-51 ~]# netstat -tlunp | grep 9600
tcp6 0 0 127.0.0.1:9600 :::* LISTEN 945/java