ELK部署#yyds干货盘点#

博观而约取,厚积而薄发。这篇文章主要讲述ELK部署#yyds干货盘点#相关的知识,希望能为你提供帮助。
常规方式快速部署一套日志系统ELK
一、环境
1.操作系统:centos7
2.关闭防火墙、selinux
3. 软件环境:elk 7.7.0 、kafka2.12、filebeat7.7.1
4.三台机器,部署的应用分别如下:
192.168.80.3:logstash
192.168.80.4:es
192.168.80.5:kibana、kafka


二、 设置服务器时间同步
yum install ntpdate -y
ntpdate -u ntp.api.bz
echo "*/20 * * * * /usr/sbin/ntpdate -u ntp.api.bz > /dev/null & " > > /var/spool/cron/root


三、 安装jdk(logstash、es都需要java环境)
yum install *openjdk-devel* -y
java -version

tar  zxvf jdk-8u311-linux-x64.tar.gz -C  /usr/local/
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_311
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin


四、logstash
1. 安装logstash
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vim logstash.repo
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
yum install logstash -y
2. 调试
./logstash -e inputstdinoutputstdout

3. 配置logstash日志流转
日志入口流转配置
vim /etc/logstash/conf.d/input.conf
input
kafka
bootstrap_servers => ["192.168.80.5:9092"]#如果是kafka集群的话,多个地址分别加引号并用逗号隔开
client_id => "testloger"
group_id => "testloger"#logstash本身没有真正的集群这个概念,要实现高可用和高负载的话,堆机器就行,但是注意,多台logstash机器的group_id值要相同
auto_offset_reset => "latest"
consumer_threads => 5
decorate_events => true
topics => ["testloglog"]
type => "testloglog"
codec => json


日志过滤规则配置
vim /etc/logstash/conf.d/filter.conf


日志出口流转配置
vim /etc/logstash/conf.d/output.conf
output
if([type] == "testloglog")
elasticsearch
hosts => ["192.168.80.4:9200"]#如果是es集群的话,多个地址分别加引号并用逗号隔开
index => "testloglog-%+YYYY-MM-dd"
timeout => 300


else
elasticsearch
hosts => ["192.168.80.4:9200"]#如果是es集群的话,多个地址分别加引号并用逗号隔开
index => "test-nginx-error-%+YYYY-MM"
timeout => 300



根据需要配置合适的jvm参数
vim /etc/logstash/jvm.options
此处省略配置过程


关于logstash集群:根据上诉方法编写好logstash配置文件后,用n台logstash服务器运行即可。由于这个集群使用的是同一个group_id ,并不会出现logstash重复消费kafka集群的问题。


五、elasticsearch
1. 安装es
cat /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
yum install elasticsearch -y
2. 修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
另外如下三项配置至少要配置要一项
discovery.seed_hosts,
discovery.seed_providers,
【ELK部署#yyds干货盘点#】cluster.initial_master_nodes
根据需要配置合适的jvm参数
vim /etc/elasticsearch/jvm.options
3. google浏览器安装elasticsearch head插件
head插件提供一个可操作es的图形化界面,安装、使用方法如下:
(1)打开链接
谷歌浏览器访问??http://extb.cqttech.com/search/elasticsearch%2520head??
根据提示下载安装谷歌双核浏览器
  (2)安装下图中插件

(3)点击放大镜图标使用插件

红框中输入es地址和端口

可以通过界面对es做各种操作

六、kibana
1. 安装
cat /etc/yum.repos.d/kibana.repo
[kibana-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
2. 配置
修改配置文件
vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"#ip白名单
server.name: "192.168.80.5"#kibana服务器地址
elasticsearch.hosts: ["http://192.168.80.4:9200"]#如果是es集群的话,多个地址分别加引号并用逗号隔开
elasticsearch.requestTimeout: 30000000
如果是要中文显示界面的话,添加如下配置,默认是英文显示
i18n.locale: "zh-CN"
3. 使用
需要在kibana上创建索引

效果图



七. kafka
官方文档地址:??http://kafka.apache.org/quickstart??
wget ??https://dlcdn.apache.org/kafka/3.0.0/kafka_2.12-3.0.0.tgz??
tar -zxvf ??kafka_2.12-3.0.0.tgz??
mv kafka_2.12-3.0.0 kafka
删除 LICENSE、NOTICE 、site-docs
rm -rf LICENSE NOTICE site-docs
启动kafka单机版的命令(在启动kafka之前先启动zookeeper)
cd /opt/kafka/bin/
nohup    ./zookeeper-server-start.sh ../config/zookeeper.properties &
在启动该命令之后,可以在该虚拟机上查看进程

接下来,在bin目录下启动kafka
nohup ./kafka-server-start.sh ../config/server.properties &
再次查看进程

测试kafka功能是否正常
创建一个测试topic
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
查看topic是否创建成功
./kafka-topics.sh --list --bootstrap-server localhost:9092
启动一个生产者并投递消息
./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test

启动一个消费者,查看消费是否正常,如下表示正常
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning



八. filebeat
1. 安装filebeat
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
2. 配置filebeat日志流转
根据实际的需求,将日志流转到不同的地方,只能是多对一的关系,就是说日志来源地可以是多个,但是日志下一站目的地只能配置一个,否则filebeat会启动失败。我此处配置的日志直接流转到kafka,主要关注如下配置内容,其他默认即可
vim /etc/filebeat/filebeat.yml
#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/*.log
#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["192.168.80.4:9200"]


# Protocol - either `http` (default) or `https`.
#protocol: "https"


# Authentication credentials - either API key or username/password.
#api_key: "id:api_key"
#username: "elastic"
#password: "changeme"


#-------------------------- kafka output ------------------------------
output.kafka:
hosts: ["192.168.80.5:9092"]#如果是kafka集群的话,多个地址分别加引号并用逗号隔开
topic: testloglog
#required_acks: 1


#----------------------------- Logstash output --------------------------------
#output.logstash:
# The Logstash hosts
#hosts: ["localhost:5044"]


# Optional SSL. By default is off.
# List of root certificates for HTTPS server verifications
#ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]


# Certificate for SSL client authentication
#ssl.certificate: "/etc/pki/client/cert.pem"


# Client Certificate Key
#ssl.key: "/etc/pki/client/cert.key"

    推荐阅读