Linux部署elk 8.5.3 教程

您所在的位置:网站首页 linux安装filebeat Linux部署elk 8.5.3 教程

Linux部署elk 8.5.3 教程

2024-05-22 18:05| 来源: 网络整理| 查看: 265

Linux(centos)部署elk(8.5.3)记录

 

下载安装包

elasticsearch

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_64.tar.gz

kibana

https://artifacts.elastic.co/downloads/kibana/kibana-8.5.3-linux-x86_64.tar.gz

logstash

https://artifacts.elastic.co/downloads/logstash/logstash-8.5.3-linux-x86_64.tar.gz

filebeat

https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.5.3-linux-x86_64.tar.gz

metricbeat

https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.5.3-linux-x86_64.tar.gz

下载完成如下:

[esuser@VM-12-16-centos elk]$ pwd/opt/elk[esuser@VM-12-16-centos elk]$ lltotal 1195028-rw-r--r-- 1 root root 580678137 Dec 9 01:01 elasticsearch-8.5.3-linux-x86_64.tar.gz-rw-r--r-- 1 root root 40125224 Dec 9 00:52 filebeat-8.5.3-linux-x86_64.tar.gz-rw-r--r-- 1 root root 223252007 Dec 9 01:13 kibana-8.5.3-linux-x86_64.tar.gz-rw-r--r-- 1 root root 331310588 Dec 9 01:17 logstash-8.5.3-linux-x86_64.tar.gz-rw-r--r-- 1 root root 48322398 Dec 9 00:56 metricbeat-8.5.3-linux-x86_64.tar.gz

 

ES安装

安全原因,ES不能使用root用户启动,所以先创建新用户,

useradd -m esuserpasswd esuser   回车输入密码:esuser123

授予esuser用户目录权限

chown -R esuser:esuser /opt/elk

切换到esuser

su - esuser

解压

tar -zxvf elasticsearch-8.5.3-linux-x86_64.tar.gz

 

解压后config目录下有三个配置文件

elasticsearch.yml es相关设置jvm.options       Java虚拟机相关设置,主要就堆大小设置,可以先默认。log4j2.properties 日志相关设置,可以先默认。

由于我机器内存小,我将其设置为250m

vim jvm.options 设置如下: -Xms250m -Xmx250m

elasticsearch.yml做如下相关设置,更多配置自己去查阅

//集群名称一致cluster.name: my-cluster​//不配置只能本机访问,设置为访问节点ip 即同时设置 network.bind_host 和 network.publish_hostnetwork.host: 0.0.0.0​ingest.geoip.downloader.enabled: false

 

配置 ingest.geoip.downloader.enabled 是为了解决如下错误,启动后可能会有如下错误信息,不影响使用,就是启动时会去更新地图的一些数据库,这里先直接禁掉即可

[2022-12-22T21:12:04,858][ERROR][o.e.i.g.GeoIpDownloader ] [VM-12-16-centos] exception during geoip databases updateorg.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active at [email protected]/org.elasticsearch.ingest.geoip.GeoIpDownloader.updateDatabases(GeoIpDownloader.java:134)​

 

切换回root用户,对系统做如下配置,否则启动es可能报错

/etc/sysctl.conf

#不设置可能报这个错,虚拟内存不够。#max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]vm.max_map_count=262144​保存然后执行命令刷新sysctl -p

/etc/security/limits.conf

#不设置可能报这个错,用户能创建的线程数不够#max number of threads [1024] for user [esuser] is too low, increase to at least [4096]esuser - nproc 4096​#不设置可能报这个错,用户能打开的最大文件数不够#max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]esuser - nofile 65536​保存后退出账号重新登录即可生效

 

使用esuser账号在bin目录下 执行如下命令 启动es

./elasticsearch ​#要将Elasticsearch作为守护程序运行,命令如下,第一次建议按上述命令启动,可查看报错信息以及密码令牌等信息./elasticsearch -d -p pid

 

输出如下:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━✅ Elasticsearch security features have been automatically configured!✅ Authentication is enabled and cluster connections are encrypted.​ℹ️ Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`): Tz0gULctQ2SbQF0b8GxT​ℹ️ HTTP CA certificate SHA-256 fingerprint: 5619e2399373a8e089019ebdcc067447071afc6ec1730a009b3b1d66999e9502​ℹ️ Configure Kibana to use this cluster:• Run Kibana and click the configuration link in the terminal when Kibana starts.• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes): eyJ2ZXIiOiI4LjUuMyIsImFkciI6WyIxMC4wLjEyLjE2OjkyMDAiXSwiZmdyIjoiNTYxOWUyMzk5MzczYThlMDg5MDE5ZWJkY2MwNjc0NDcwNzFhZmM2ZWMxNzMwYTAwOWIzYjFkNjY5OTllOTUwMiIsImtleSI6IlljMEtPb1VCY1Y2V2RRSjJVRXJrOnNsOXZLQ05SU0t5eHpnU0lkMThkQkEifQ==​ℹ️ Configure other nodes to join this cluster:• Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token ` (valid for the next 30 minutes): eyJ2ZXIiOiI4LjUuMyIsImFkciI6WyIxMC4wLjEyLjE2OjkyMDAiXSwiZmdyIjoiNTYxOWUyMzk5MzczYThlMDg5MDE5ZWJkY2MwNjc0NDcwNzFhZmM2ZWMxNzMwYTAwOWIzYjFkNjY5OTllOTUwMiIsImtleSI6IllzMEtPb1VCY1Y2V2RRSjJVRXJyOkg4VnA4alZLUTA2OTFibUhsQThyVHcifQ==​ If you're running in Docker, copy the enrollment token and run: `docker run -e "ENROLLMENT_TOKEN=" docker.elastic.co/elasticsearch/elasticsearch:8.5.3`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

 

ES首次启动有如下默认行为

- 启用身份验证和授权,并生成密码 内置超级用户。`elastic`- TLS 的证书和密钥是为传输层和 HTTP 层生成的, 并且 TLS 已启用并配置了这些密钥和证书。- 将为 Kibana 生成一个注册令牌,有效期为 30 分钟。

所以浏览器用https访问9200端口号(云服务器注意防火墙端口号是否打开):

https://43.142.111.235:9200/

这里会要求输入账号密码,输入后显示如下

{"name": "VM-12-16-centos","cluster_name": "my-cluster","cluster_uuid": "_IPEl7VmT6mOEypbyp-cyw","version": {"number": "8.5.3","build_flavor": "default","build_type": "tar","build_hash": "4ed5ee9afac63de92ec98f404ccbed7d3ba9584e","build_date": "2022-12-05T18:22:22.226119656Z","build_snapshot": false,"lucene_version": "9.4.2","minimum_wire_compatibility_version": "7.17.0","minimum_index_compatibility_version": "7.0.0"},"tagline": "You Know, for Search"}

如果没有保存账号信息,在bin目录下执行如下命令即可重置密码。

elasticsearch-reset-password -u elastic

 

kibana安装

kibana默认也不允许用root账号启动,这里也用esuser账号操作

 

解压

tar -zxvf kibana-8.5.3-linux-x86_64.tar.gz

config/kibana.yml 添加如下配置

#设置端口server.port: 5601#设置主机ip,不设置默认localhsot,远程无法访问,只能本机访问server.host: "0.0.0.0"#设置中文i18n.locale: "zh-CN"​

 

设置内存,内存够的不用考虑,略过

vim /bin/kibana,在最后一行前加如下语句NODE_OPTIONS="$NODE_OPTIONS --max-old-space-size=400"加完后如下:​#!/bin/shSCRIPT=$0​# SCRIPT may be an arbitrarily deep series of symlinks. Loop until we have the concrete path.while [ -h "$SCRIPT" ] ; do ls=$(ls -ld "$SCRIPT") # Drop everything prior to -> link=$(expr "$ls" : '.*-> \(.*\)$') if expr "$link" : '/.*' > /dev/null; then   SCRIPT="$link" else   SCRIPT=$(dirname "$SCRIPT")/"$link" fidone​DIR="$(dirname "${SCRIPT}")/.."CONFIG_DIR=${KBN_PATH_CONF:-"$DIR/config"}NODE="${DIR}/node/bin/node"test -x "$NODE"if [ ! -x "$NODE" ]; then echo "unable to find usable node.js executable." exit 1fi​if [ -f "${CONFIG_DIR}/node.options" ]; then KBN_NODE_OPTS="$(grep -v ^# < ${CONFIG_DIR}/node.options | xargs)"fiNODE_OPTIONS="${NODE_OPTIONS:=--max-old-space-size=400}"NODE_OPTIONS="--no-warnings --max-http-header-size=65536 $KBN_NODE_OPTS $NODE_OPTIONS" NODE_ENV=production exec "${NODE}" "${DIR}/src/cli/dist" ${@}​

 

在bin目录下启动

./kibana​后台启动,第一次建议不要后台启动nohup ./kibana &

然后浏览器访问

http://43.142.111.235:5601/

此时会要求输入es生产的令牌,如果此时已经超过半个小时,es生产的令牌已经失效,就重新生成一个

如果上面的令牌还有效就不用再生成了,不然就在es的bin目录下执行如下命令

./elasticsearch-create-enrollment-token -s kibana

输入令牌后

继续输入控制台高亮显示的url上的六位数字

继续输入es的账号密码就成功进入界面

 

logstash安装

这里也以esuser用户操作

 

解压

tar -zxvf logstash-8.5.3-linux-x86_64.tar.gz

 

config目录中 配置jvm.options,内存大的可以不用考虑,默认1g

-Xms256m-Xmx256m

在config目录中新建一个配置文件

touch logstash-simple.conf ​

然后输入如下内容保存,表示从控制台和filebeat的5044端口作为输入,然后两个过滤器,然后输出到控制台和es中。

input { stdin {} beats {   port => 5044 }}​filter { grok {   match => { "message" => "%{COMBINEDAPACHELOG}" } } date {   match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] }}​output { stdout {} elasticsearch {   hosts => ["https://43.142.111.235:9200"]   index => "my-es-index"   user => "elastic"   password => "Tz0gULctQ2SbQF0b8GxT"   cacert => "/opt/elk/elasticsearch-8.5.3/config/certs/http_ca.crt" }}​

然后在目录中执行如下命令启动

./bin/logstash -f ./config/logstash-simple.conf ​这里遇见一个坑,在bin目录执行如下命令,居然说找不到配置文件。./logstash -f ../config/logstash-simple.conf​​后台运行命令nohup ./bin/logstash -f ./config/logstash-simple.conf &

 

然后直接在控制台输入文字,该文字就会被输出到控制台和es中。

 

filebeat安装

这里也用esuser操作

解压

 

tar -zxvf filebeat-8.5.3-linux-x86_64.tar.gz

 

新建配置文件 filebeat-config.yml,内容如下,表示抓取logs目录下所有文件内容传到logstash,当然也可以加*.log来过滤文件等

同时在elk目录下建立一个logs目录用来存放日志文件测试用,配置文件如下

​filebeat.inputs:- type: filestream paths:   - /opt/elk/logs/*output.logstash: hosts: ["localhost:5044"]

 

启动

./filebeat -e -c filebeat-config.yml​后台启动nohup ./filebeat -e -c filebeat-config.yml &

 

然后在logs目录下随便新建的文件,输入一些内容,这些内容就输出到es中了。

测试一下

然后打开kibana,找到Discover,点击创建视图,选中我们刚刚创建的索引,就可以在里面搜索,我们之前输入到logs目录中的内容了。

至此结束。

 

直接filebeat输出到ES

由于logstash太占内存了,我选择filebeat直接发送数据到es,所以我使用下面的配置,该配置会在es上自动创建一个索引filebeat,并把日志文件发送到这个索引下,如果要发送到指定的索引,需要配置索引模板。这里就先不弄了。

filebeat.inputs:- type: filestream paths:   - /opt/elk/logs/*output.elasticsearch: hosts: ["https://127.0.0.1:9200"] username: "elastic" password: "Tz0gULctQ2SbQF0b8GxT" ssl:   enabled: true   certificate_authorities: "/opt/elk/elasticsearch-8.5.3/config/certs/http_ca.crt"​

 

metricbeat部署

官方参考:

https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-installation-configuration.html

解压

tar -zxvf metricbeat-8.5.3-linux-x86_64.tar.gz

 

然后在metricbeat.yml配置如下输出信息,和filebeat差不多,都是配置输出到es

​output.elasticsearch: hosts: ["https://127.0.0.1:9200"] username: "elastic" password: "Tz0gULctQ2SbQF0b8GxT" ssl:   enabled: true   certificate_authorities: "/opt/elk/elasticsearch-8.5.3/config/certs/http_ca.crt"

 

使用下面命令可以列出支持的模块信息,即我们要监控的软件,系统等,比如 system,redis,mysql,es等。

./metricbeat modules list

如下命令表示启用elasticsearch模块,这里我们啥都不启用,默认就监控system。

./metricbeat modules enable elasticsearch

然后执行如下命令,该命令会根据启用的模块,在es和kibana中帮我们预定义生成索引和可视化数据

./metricbeat setup -e

 

然后执行如下命令,如果当前用户没有sudo权限参考:https://blog.csdn.net/qqnbsp/article/details/82220735

sudo chown root metricbeat.yml #如果需要启用别的模块,也需要对应的执行下该命令如sudo chown root modules.d/elasticsearch.yml sudo chown root modules.d/system.yml sudo ./metricbeat -e​#可以用root用户执行如下命令来后台执行nohup ./metricbeat -e &

 

然后在侧边导航栏中,单击Discover。选中metricbeat-8.5.3索引创建视图,

然后在侧边导航栏中,单击仪表板,然后选择 想要打开的仪表板就可以了,这些仪表板就是./metricbeat setup -e 命令生成的。

例如这里我选择: Metricbeat System] Overview ECS 就能查看linux系统的cpu,内存信息了。

 

全文结束

 

体验一下,说不定哪天就不可用了,哈哈

http://43.142.111.235:5601/

elastic

Tz0gULctQ2SbQF0b8GxT



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3