ELK
一、ELK Stack 日志分析系统
https://www.elastic.co/cn/start
https://github.com/elastic
那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:
Elasticsearch、Logstash 和 Kibana
产品 | 说明 | 备注 |
---|---|---|
Elasticsearch | 存储、搜索和分析 | 是一个搜索和分析引擎 |
Logstash | 采集、转换、充实、然后输出 | 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch等“存储库”中 |
Kibana | 可视化和管理 | 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化 |
Elastic Stack 是 ELK Stack 的更新换代产品。
https://www.elastic.co/cn/downloads/
https://github.com/elastic/elasticsearch/releases
https://github.com/medcl/elasticsearch-analysis-ik/releases
二、注意事项
- 下载同一个版本号
- 在子用户下安装ELK,因ElK 禁止 使用root 用户安装
kill -9 **
请使用root 用户去操作
注意:java.lang.RuntimeException: can not run elasticsearch as root
出于安全考虑,elasticsearch默认不允许以root账号运行
#创建用户 root管理操作
useradd yitao
#设置密码
passwd yitao
#切换用户
su - yitao
三、官方下载地址
https://www.elastic.co/cn/start
https://github.com/elastic
四、官方安装文档
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
4.1Elasticsearch 安装
4.1.1 安装文档
上传安装包到 /home/yitao目录
tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz
cd elasticsearch-7.6.2/
配置 环境变量 $ES_HOME= elasticsearch-7.6.2 目录
修改文件 /etc/profile
并立即生效 source /etc/profile
4.1.2 参数配置 elasticsearch-7.6.2目录/config/
4.1.2.1 jvm.options
Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数。
内存调小一点
-Xms512m
-Xmx512m
4.1.2.2 elasticsearch.yml
- 修改数据和日志目录
path.data: /home/yitao/elasticsearch/data # 数据目录位置
path.logs: /home/yitao/elasticsearch/logs # 日志目录位置
需要提前创建好 data 和 logs 这两个目录
默认Elasticsearch安装目录下 的data 和 logs
- 修改绑定的ip
network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问
默认只允许本机访问,修改为0.0.0.0后则可以远程访问
elasticsearch.yml的其它可配置信息:
属性名 | 说明 |
---|---|
cluster.name | 配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。 |
node.name | 节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理 |
path.conf | 设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch |
path.data | 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开 |
path.logs | 设置日志文件的存储路径,默认是es根目录下的logs文件夹 |
path.plugins | 设置插件的存放路径,默认是es根目录下的plugins文件夹 |
bootstrap.memory_lock | 设置为true可以锁住ES使用的内存,避免内存进行swap |
network.host | 设置bind_host和publish_host,设置为0.0.0.0允许外网访问 |
http.port | 设置对外服务的http端口,默认为9200。 |
transport.tcp.port | 集群结点之间通信端口 |
discovery.zen.ping.timeout | 设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些 |
discovery.zen.minimum_master_nodes | 主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2 |
4.1.3 运行
进入elasticsearch/bin
目录,并查看如图下的执行文件
cd 进入elasticsearch/bin目录
./elasticsearch
- 启动成功(端口放行9200 9300)
- 9300:集群节点间通讯接口
- 9200:客户端访问接口
publish_address {192.168.1.15:9300}, bound_addresses {[::]:9300}
publish_address {192.168.1.15:9200}, bound_addresses {[::]:9200}
两者都出现时,才表示启动成功
publish_address {192.168.1.15:9200}, bound_addresses {[::]:9200} 如果没有出现在日志文件里面,则表示启动不成功
浏览器中访问:http://192.168.3.220:9200
!
- cluster_uuid:的值为:一串字符字符串 则表示启动成功
- cluster_uuid:的值为:
"--na--"
则表示9200端口没启动成功 会导致kibana 访问时返回:Kibana server is not ready yet
Kibana server is not ready yet
产生的原因,有可能时Elasticsearch 配置文件里面没有配置该节点名称
4.1.4 常见错误
4.1.4.1错误1: 文件权限不足
max file descriptors [4096] for elasticsearch process too low, increase to at least [65536]
查看当前用户权限 命令
ulimit -Hn
ulimit -Sn
修改配置文件 /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
4.1.4.2 错误2:进程虚拟内存
修改配置文件 /etc/sysctl.conf
vm.max_map_count=655360
4.1.4.3 错误3: elasticsearch 至少开启一个节点
修改配置文件elasticsearch.yml
取消 cluster.initial_master_nodes: [“node-1”] 注释
cluster.initial_master_nodes: ["node-1"]
如果时单台Elasticsearch 集群,配置文件elasticsearch.yml
中node.name
和 cluster.initial_master_nodes
值设置要一样
4.1.5Elasticsearch 命令
Option | Description |
---|---|
-E | Configure a setting |
-V, --version | Prints Elasticsearch version information and exits |
-d, --daemonize | Starts Elasticsearch in the background 后台运行 |
-h, --help | Show help |
-p, --pidfile
| Creates a pid file in the specified path on start |
-q, --quiet | Turns off standard output/error streams logging in console |
-s, --silent | Show minimal output |
-v, --verbose | Show verbose output |
4.2 Elasticsearch-analysis-ik
Lucene的IK分词器
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
IK 和 ES 版本对应关系
下载zip
将zip 解压到 elasticsearch 插件目录plugin
- 安装方式1: 解压压缩包
#进入es 插件目录plugins
cd elasticsearch安装目录/plugins
#解压
unzip elasticsearch-analysis-ik-7.6.2.zip -d es-analysis-ik
#重新启动 elasticsearch
解压后,删除对应得压缩包,只留下解压文件夹
- 安装方式2: elasticsearch-plugin 安装
#进入 elasticsearch/bin 目录
cd elasticsearch安装目录/bin
# 使用 elasticsearch-plugin 插件安装
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip
重启Elasticsearch
5 Kibana 安装
注:通用不允许使用root 安装,请切换到 子用户 去安装和运行
tar -zxvf kibana-7.6.2-linux-x86_64.tar.gz
cd kibana-7.6.2/
5.1 配置文件kibana.yml
kibana-7.6.2目录/config/kibana.yml
#服务端口
server.port: 5601
# 0.0.0.0 允许任何 IP 访问
server.host: "0.0.0.0"
#elasticsearch 服务器ip:port地址
elasticsearch.hosts: ["http://192.168.1.15:9200"]
#语言设置中文
i18n.locale: "zh-CN"
5.2 运行
默认端口号: 5601
#进入kibana bin目录
cd kibana-7.6.2目录/bin
#运行kibana
./kibana
状态为 state:green 表示启动成功
访问: http://192.168.1.15:5601
能正常访问
5.3 问题
- 查找不到进程
ps -ef | grep kibana
- 处理方法:使用
nethup -luntp | grep 5601
node 进程??
原因kibana 使用node.js 编写
5.4 简单调试
- 最大分词
ik_max_word
- 智能分词
ik_smart
6 日志收集
7客户端
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.6.2</version>
</dependency>
8 API
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html