当前位置:首页 > ES > 正文内容

ELK的安装与配置

phpmianshi1年前 (2019-07-01)ES135

Elasticsearch 安装

安装 JDK

这里选择 openjdk

$ yum install java-11-openjdk-devel

获取 elasticsearch 

下载 elasticsearch

$ ELK_VERSION=7.5.0
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ELK_VERSION-linux-x86_64.tar.gz

解压 elasticsearch 压缩包到 /usr/local 目录下,并创建软链接

tar zvxf elasticsearch-$ELK_VERSION-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
ln -sv elasticsearch-$ELK_VERSION elasticsearch

创建 elastic 用户,用于运行 elasticsearch

$ groupadd -r -g 920 elastic
useradd -r -u 920 -g 920 -s /sbin/nologin elastic
chown -R elastic.root /usr/local/elasticsearch-$ELK_VERSION

配置 elasticsearch 

修改 elasticsearch 配置文件,如下

grep -vE "^#|^$" /usr/local/elasticsearch/config/elasticsearch.yml
path.data: /data/elasticsearch/data    #elasticsearch数据目录
path.logs: /data/elasticsearch/logs    #elasticsearch日志目录
network.host: 127.0.0.1                #监听地址
http.port: 9200                        #监听的http端口
discovery.type: single-node            #集群发现模式,这里是单机模式

创建 elasticsearch 数据和日志目录,要与上面配置文件相匹配

mkdir /data/elasticsearch/{data,logs} -pv
chown -R elastic.elastic /data/elasticsearch

创建 elasticsearch 启动文件

cat << EOF | tee /etc/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch
After=network-online.target
 
[Service]
Type=simple
PrivateTmp=true
User=elastic
Group=elastic
ExecStart=/usr/local/elasticsearch/bin/elasticsearch --quiet
KillSignal=SIGTERM
KillMode=process
SendSIGKILL=no
SuccessExitStatus=143
LimitNOFILE=65536
LimitNPROC=4096
LimitAS=infinity
LimitFSIZE=infinity
 
[Install]
WantedBy=multi-user.target
EOF

启动 elasticsearch

$ systemctl daemon-reload
$ systemctl enable elasticsearch.service
$ systemctl start elasticsearch.service

验证结果

$ curl http://localhost:9200
{
  "name" "phpmianshi.com",
  "cluster_name" "elasticsearch",
  "cluster_uuid" "YbZLu2ZRSmu9ROpyPQojoQ",
  "version" : {
    "number" "7.5.0",
    "build_flavor" "default",
    "build_type" "tar",
    "build_hash" "e9ccaed468e2fac2275a3761849cbee64b39519f",
    "build_date" "2019-11-26T01:06:52.518245Z",
    "build_snapshot" false,
    "lucene_version" "8.3.0",
    "minimum_wire_compatibility_version" "6.8.0",
    "minimum_index_compatibility_version" "6.0.0-beta1"
  },
  "tagline" "You Know, for Search"
}

Logstash 安装

获取 Logstash

下载 logstatsh

$ wget https://artifacts.elastic.co/downloads/logstash/logstash-$ELK_VERSION.tar.gz

解压 logstatsh 压缩包到 /usr/local 目录下,并创建软链接

tar zvxf logstash-$ELK_VERSION.tar.gz -C /usr/local/
cd /usr/local/
ln -sv logstash-$ELK_VERSION logstash

创建 logstash 用户,用于运行 logstash

$ groupadd -r -g 960 logstash
useradd -r -u 960 -g 960 -s /sbin/nologin logstash

配置 Logstash

修改 logstash 配置文件 logstash.yml(logstash 主配置文件),如下

grep -vE "^#|^$" /usr/local/logstash/config/logstash.yml
path.data: /data/logstash/data    #logstash数据目录
http.host: "127.0.0.1"            #监听地址
http.port: 9600-9700              #监听端口
log.level: info                   #日志级别
path.logs: /data/logstash/logs    #logstash日志目录

创建 logstash 数据和日志目录

mkdir /data/logstash/{data,logs} -pv
chown -R logstash.logstash /data/logstash/

修改 logstash 的 pipeline 配置文件 pipelines.yml(logstash 任务配置文件),如下

grep -vE "^$|^#" /usr/local/logstash/config/pipelines.yml
- pipeline.id: main                                      #管道ID
  pipeline.workers: 2                                    #管道线程数
  pipeline.batch.size: 125                               #管道批处理大小
  queue.type: persisted                                  #用于事件缓冲的内部排队模型,可以指定内存memory或者磁盘persisted
  path.config: "/usr/local/logstash/config/pipelines"    #管道的任务配置目录

创建 pipelines 目录,要与上面配置文件选项 path.config 定义的一致

mkdir /usr/local/logstash/config/pipelines -pv

修改 logstash 启动选项配置文件 startup.options(logstash 启动选项配置选项文件),如下

grep -vE "^$|^#"  /usr/local/logstash/config/startup.options
JAVACMD=/usr/bin/java                           #java 命令路径
LS_HOME=/usr/local/logstash                     #Logstash 家目录
LS_SETTINGS_DIR=${LS_HOME}/config               #Logstash 配置文件目录
LS_OPTS="--path.settings ${LS_SETTINGS_DIR}"    #Logstash 启动参数
LS_JAVA_OPTS=""                                 #Java 启动参数
LS_USER=logstash                                #Logstash 运行用户
LS_GROUP=logstash                               #Logstash运行组
LS_GC_LOG_FILE=/data/logstash/logs/gc.log       #GC日志路径
LS_OPEN_FILES=16384                             #打开最大文件
LS_NICE=19                                      #nice 值,logstash 进程的优先级
SERVICE_NAME="logstash"                         #生成 systemd service 单元的名字
SERVICE_DESCRIPTION="Logstash"                  #systemd service 单元里的 Description 字段

使用 logstash 自带的 system-install 命令生成启动文件

/usr/local/logstash/bin/system-install /usr/local/logstash/config/startup.options systemd

执行后会生成 /etc/default/logstash 文件,内容跟 /usr/local/logstash/config/startup.options 定义的选项一致

还会生成  /etc/systemd/system/logstash.service 文件。这个是 Logstash 的启动文件。

启动 Logstash

Logstash 需要有任务才能持续运行,因此创建一个简单 logstahs 的任务,用于测试 logstash 启动是否正常

cat << EOF | tee /usr/local/logstash/config/pipelines/test.conf
input {
  beats {
    port => 5044
  }
}
 
output {
  stdout {
    codec => rubydebug
  }
}
EOF

启动 Logstash

$ systemctl daemon-reload
$ systemctl enable logstash.service
$ systemctl start logstash.service

查看 Logstash 运行状态

$ systemctl status logstash.service

Kibana 安装配置

安装 Kibana

下载 kibana

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-$ELK_VERSION-linux-x86_64.tar.gz

解压 kibana 压缩包到 /usr/local 目录下,并创建软链接

tar zvxf kibana-$ELK_VERSION-linux-x86_64.tar.gz -C /usr/local
cd /usr/local/
ln -sv kibana-$ELK_VERSION-linux-x86_64 kibana

创建 kibana 用户,用于运行 kibana

$ groupadd -r -g 560 kibana
useradd -r -u 560 -g 960 -s /sbin/nologin kibana

修改 kibana 配置文件 kibana.yml ,如下

grep -vE "^#|^$" /usr/local/kibana/config/kibana.yml
server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]
pid.file/usr/local/kibana/run/kibana.pid

创建 PID 文件存放目录

mkdir /usr/local/kibana/run
chown -R kibana.root /usr/local/kibana

创建 kibana 启动文件

cat << EOF | tee /etc/systemd/system/kibana.service
[Unit]
Description=Kibana
After=network-online.target
 
[Service]
Type=simple
User=kibana
Group=kibana
PIDFile=/usr/local/kibana/run/kibana.pid
ExecStart=/usr/local/kibana/bin/kibana "-c /usr/local/kibana/config/kibana.yml"
Restart=always
WorkingDirectory=/usr/local/kibana
 
[Install]
WantedBy=multi-user.target
EOF

启动 kibana

$ systemctl daemon-reload
$ systemctl enable kibana.service
$ systemctl start kibana.service

使用 nginx 代理 kibana,并设置认证

创建密码文件,并创建一个admin用户

$ yum install httpd-tools
$ htpasswd -c -m /usr/local/openresty/nginx/conf/kiban-auth admin
New password:
Re-type new password:
Adding password for user admin

nginx 代理 kibana 部分配置文件如下

location / {
    auth_basic "Protected Kibana Field";
    auth_basic_user_file /usr/local/openresty/nginx/conf/kiban-auth;
 
    proxy_pass http://127.0.0.1:5601;             
    proxy_pass_header Server;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;  
    proxy_redirect off;
    proxy_read_timeout 90;
}

重启 nginx 即可


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

elasticsearch中query和filter区别

区别在进行query的时候,除了完成匹配的过程,我们实际上在问“这个结果到底有多匹配我们的搜索关键词”。在所有的返回结果的后面都会有一个_score字段表示这个结果的匹配程度,也就是相关性。相关性越高...

elasticsearch中倒排索引详解

elasticsearch中倒排索引详解

概念Elasticsearch使用一种叫做倒排索引(inverted index)的结构来做快速的全文搜索。倒排索引由在文档中出现的唯一的单词列 表,以及对于每个单词在文档中的位置组成。示例我们有两个...

elasticsearch模糊查询match match_phrase wildcard regexp prefix的区别

1.match查询会先对搜索词进行分词,比如“白雪公主和苹果”,会分成“白雪”“公主”“苹果”。含有相关内容的字段,都会被检索出来。2.match_phrase查询match_phrase与slop一...

elasticsearch中分析器的原理和使用

概念分析(analysis)机制用于进行全文文本(Full Text)的分词,以建立供搜索用的反向索引。原理分析器的工作过程大概分成两步:分词(Tokenization):根据停止词把文本分割成很多的...

logstash过滤器--mutate

概念filters/mutate 插件是 Logstash 另一个重要插件。它提供了丰富的基础类型数据处理能力。包括类型转换,字符串处理和字段处理等。Plugin version: v3.5.0执行顺...

logstash增量同步mysql到es配置详解

配置详解input {   jdbc {     # mysql相关jdbc配置   ...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。