ELK是一组开源软件的简称,其包括ElasticSearch(数据库)、Logstash(收集数据)和 Kibana(展示、过滤、出图)。ELK最近几年发展迅速,已经成为目前流行的集中式日志解决方案。
而EFK可以替代ELK来使用,logstash跑在jvm上,资源消耗比较大,filebeat更轻量,占用资源更少。
其包括ElasticSearch(数据库)、Filebeat(收集数据性能好)、Logstash(收集数据)、Kibana(展示、过滤、出图)、Kafka(缓存消息队列)。

ElasticStack部分
ElasticStack用于存放ElasticStack数据,可以单独实现搜索功能。
极速部署指南:
jdk环境(oracle jdk rpm)(7.0之后已经内置);
es软件包(elasticsearch-7.9.3-x86_64.rpm);

安装es rpm -ivh elasticsearch-7.9.3-x86_64.rpm warning: elasticsearch-7.9.3-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY Preparing... ################################# [100%]Creating elasticsearch group... OK Creating elasticsearch user... OK Updating / installing... 1:elasticsearch-0:7.9.3-1 ################################# [100%]### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service### You can start elasticsearch service by executing sudo systemctl start elasticsearch.service Created elasticsearch keystore in /etc/elasticsearch/elasticsearch.keystore systemctl daemon-reloadsystemctl enable elasticsearch.service systemctl start elasticsearch.service
对于Elasticsearch7.0之后的版本不需要再独立的安装JDK了,软件包里已经自带了最新的JDK,所以直接启动即可。
10.0.0.90 es01.oldboylinux.cn10.0.0.91 es02.oldboylinux.cn10.0.0.92 es03.oldboylinux.cn10.0.0.93 kafka.oldboylinux.cn
测试访问
[root@oldboy-elastic-stack-es01 ~]# curl 127.0.0.1:9200{
"name" : "oldboy-elastic-stack-es01",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "_zvKGMEkQX-e8eR_Qohi6w",
"version" : {
"number" : "7.9.3",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
"build_date" : "2020-10-16T10:36:16.141335Z",
"build_snapshot" : false,
"lucene_version" : "8.6.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"}
目录结构

配置文件
elasticsearch.yml
node.name: es01.oldboylinux.cn #节点名称path.data: /var/lib/elasticsearch #数据目录path.logs: /var/log/elasticsearch #日志目录bootstrap.memory_lock: true #锁定内存,防止别人占用属于es的内存。network.host: 10.0.0.90,127.0.0.1 #监听地址,本地网卡iphttp.port: 9200 #es端口(api接口端口)discovery.seed_hosts: ["10.0.0.90"] #发现节点,这里可以使用域名cluster.initial_master_nodes: ["10.0.0.90"] #集群初始化节点,这里可以使用域名
补充["ip1或域名","ip2"]可以写为-"ip1或域名"-"ip2"
cp /etc/elasticsearch/elasticsearch.yml{,.bak}cat >/etc/elasticsearch/elasticsearch.yml<<EOF
node.name: es01.oldboylinux.cn
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.90,127.0.0.1 http.port: 9200 discovery.seed_hosts: ["10.0.0.90"] cluster.initial_master_nodes: ["10.0.0.90"] EOF
备份
重启故障:提示内存锁定失败
重启后查看日志发现提示内存锁定失败
[2021-08-10T12:22:58,184][ERROR][o.e.b.Bootstrap ] [es01.oldboylinux.com] node validation exception[1] bootstrap checks failed[1]: memory locking requested for elasticsearch process but memory is not locked
官网解决方案:
https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-system-settings.html#systemd
解决命令:
systemctl edit elasticsearch[Service]LimitMEMLOCK=infinity systemctl daemon-reloadsystemctl restart elasticsearch.service
检查结果
[root@oldboy-elastic-stack-es01 ~]# ss -lntup |grep javatcp LISTEN 0 128 [::ffff:10.0.0.90]:9200 [::]:* users:(("java",pid=43888,fd=261))tcp LISTEN 0 128 [::ffff:127.0.0.1]:9200 [::]:* users:(("java",pid=43888,fd=260))tcp LISTEN 0 128 [::ffff:10.0.0.90]:9300 [::]:* users:(("java",pid=43888,fd=258))tcp LISTEN 0 128 [::ffff:127.0.0.1]:9300 [::]:* users:(("java",pid=43888,fd=257))[root@oldboy-elastic-stack-es01 ~]# curl es01.oldboylinux.cn:9200{
"name" : "es01.oldboylinux.cn",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "zcU_mdHVSYaGzpBC1Q2T8w",
"version" : {
"number" : "7.9.3",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
"build_date" : "2020-10-16T10:36:16.141335Z",
"build_snapshot" : false,
"lucene_version" : "8.6.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"}



部署es-head插件
es通过程序代码调用es 各种api接口,es-head查看与显示es状态信息,数据量,具体数据
elasticsearch-head介绍
官方地址: https://github.com/mobz/elasticsearch-head elasticsearch-head是一款用来管理Elasticsearch集群的第三方插件工具。 elasticsearch-Head插件在5.0版本之前可以直接以插件的形式直接安装,但是5.0以后安装方式发生了改变,需要nodejs环境支持,或者直接使用别人封装好的docker镜像,更推荐的是谷歌浏览器的插件。
elasticsearch-head的三种安装方式
1.npm安装方式 #下载源码,编译,nodejs运行 部分公司使用 2.docker安装 #方便 根据已经制作好的es-head插件的容器,下载,运行3.google浏览器插件(推荐) #安装谷歌浏览器插件,直接访问es
docker安装elasticsearch-head
docker run -p 9100:9100 mobz/elasticsearch-head:7
npm安装elasticsearch-head
yum/apt pip install #python软件包npm install #nodejs 软件包 cd /opt/wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz tar xf node-v12.13.0-linux-x64.tar.xz mv node-v12.13.0-linux-x64 node echo 'export PATH=$PATH:/opt/node/bin' >> /etc/profile source /etc/profile npm -v node -v git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install cnpm run start
修改Elasticsearch配置文件,添加如下参数并重启:
#准许es 被跨域访问http.cors.enabled: true http.cors.allow-origin: "*"
es-head谷歌浏览器插件安装
谷歌浏览器:更多工具-->拓展程序-->开发者模式-->选择解压缩后的插件目录
edge浏览器:扩展--->管理扩展-->开发者模式-->选择解压缩后的插件目录

ES数据类型

MySQL术语 Elasticsearch术语 库 索引 index 表 类型 _doc 字段(列) json数据的key 值 json数据的value 记录(行) 文档 doc
eg数据库中存放

es存放(json格式数据)
{
"project": "基本信息",
"name": "公网ip",
"finish": true,
"detail": "",
"pub": true,
"cmd":"curl ifconfig.io"}
使用ES
访问ES方式:
通过代码访问;
通过api调试工具访问;
通过kibana访问es;
GET请求
/_cat #显示所有接口

/_cat/health 集群健康状态

POST/PUT请求
指定id方法PUT
curl -XPUT 'http://es01.oldboylinux.cn:9200/linux/_doc/1' -H 'Content-Type: application/json' -d '{
"name": "lidao996",
"age": "18"}'

查看数据


查询
指定id方法POST 随机idPOST /linux/_doc/{
"name": "li",
"age": "18"}


#term查询 一般根据 数据文档中 某一个键值的内容进行查询 GET linux/_search{
"query": {
"term": {
"name": {
"value": "li"
}
}
}}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69952968/viewspace-3100130/ ,如需转载,请注明出处,否则将追究法律责任。