ElasticSearch
Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
Logstash
Logstash 是一个具有实时渠道能力的数据收集引擎,主要用于日志的收集与解析,并将其存入 ElasticSearch中。
Kibana
Kibana 是一款基于 Apache 开源协议,使用 Javascript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。
Filebeat
引入Filebeat作为日志搜集器,主要是为了解决Logstash开销大的问题。相比Logstash,Filebeat 所占系统的 CPU 和内存几乎可以忽略不计。
简单来说,Elasticsearch作为数据存储数据;Logstash收集并过滤日志;Kibana实现日志数据的分析、过滤与展示。ELK这三个组件都是使用Java编程实现的,而用于在节点上收集日志的Filebeat是使用Go语言编程实现的。
ELK可视化演示,收集的日志数据中主要包含访问时间、访问站点、访问最高频次IP地址和URL等信息。
1.2 ELK日志收集分类ELK几乎可以收集所有层级的日志数据:
代理层:nginx haproxyweb层:nginx tomcat数据库层:mysql redis mongo es操作系统层:source.message 02 ELK 安装与使用
下载filebeat、kibana和logstash的安装包,值得注意的是在安装ELK时其前提都是该节点具备jdk。
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.13.2-amd64.deb wget https://artifacts.elastic.co/downloads/logstash/logstash-7.13.2-amd64.deb wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.13.2-amd64.deb sudo dpkg -i kibana-7.13.2-amd64.deb # 安装deb包 sudo dpkg -i logstash-7.13.2-amd64.deb # 安装deb包 sudo dpkg -i filebeat-7.13.2-amd64.deb # 安装deb包
ELK安装的官方文档:官方文档
安装步骤:
安装配置java更新同步服务器时间:在所有服务器上执行
apt-get install ntpdate -y ntpdate time1.aliyun.com
安装ES安装Kibana安装Logstash安装Filebeats 2.1 安装ES
已经安装好了Elasticsearch之后,在后续实验中为了简化操作,仅仅使用一台服务器提供ES服务,该服务器的ES配置如下
vim /etc/elasticsearch/elasticsearch.yml # 配置内容 node.name: master path.data: /data/elasticsearch path.logs: /var/log/elasticsearch network.host: 172.16.255.131,127.0.0.1 http.port: 9200 cluster.initial_master_nodes: ["master"] http.cors.enabled: true http.cors.allow-origin: "*"2.2 安装Kibana
Kibana只需要安装在一台服务器上,且最好和Elasticsearch在同一台服务器上,安装Kibana时注意服务器内存是否足够。
直接在Kibana安装包目录下执行命令安装
sudo dpkg -i kibana-7.13.2-amd64.deb # 安装deb包
配置Kibana:在/etc/kibana/kibana.yml配置文件中对kibana进行配置
server.port: 5601 server.host: "172.16.255.131" server.name: "master" elasticsearch.hosts: ["http://172.16.255.131:9200"] kibana.index: ".kibana"
配置完成后,启动kibana,值得注意的是Kibana启动较为耗费内存,如果将ES和Kibana部署在同一台服务器上,建议分配2G-4G内存
systemctl start kibana.service
查看是否启动成功
systemctl status kibana.service # 查看服务启动状态 netstat -lntup|grep 5601 # 查看端口
或者直接使用浏览器查看是否能够成功访问Kibana
2.3 安装Filebeat直接在filebeat安装包目录下执行命令安装
sudo dpkg -i filebeat-7.13.2-amd64.deb # 安装deb包
配置filebeat:在/etc/filebeat/filebeat.yml配置文件中对filebeat进行配置,最为主要的配置选项是filebeat的输入输出配置
cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak # 备份filebeat配置文件
# 配置filebeat
root@master:/etc/filebeat# egrep -v "#|^$" filebeat.yml
filebeat.inputs: # 采集日志数据配置
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
- type: filestream
enabled: false
paths:
- /var/log/*.log
filebeat.config.modules: # 模块配置
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings: # 分片配置
index.number_of_shards: 1
setup.kibana: # kibana配置
output.elasticsearch: # 输出到ES配置
hosts: ["172.16.255.131:9200"]
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
配置完成后,启动filebeat
systemctl start filebeat.service
查看filebeat日志查看是否启动成功,或者在ES-head插件中查看filebeat是否存在
tail -f /var/log/filebeat/filebeat
为了方便进行debug和查看Filebeat状态,还需要在配置文件中配置filebeat的日志目录
# 打开配置文件 vim /etc/filebeat/filebeat.yml # 配置内容如下 #================================ Logging ============== logging.level: debug #logging.level: info logging.to_files: true logging.files: path: /var/log/filebeat name: filebeat keepfiles: 7 permissions: 0644
filebeat采集日志的原理:类似于tail命令,通过获取日志文件中被追加的日志记录,采集新增日志数据。filebeat采用断点续传的方式保证稳定性,如果filebeat在采集过程中被中断,那么就会设置断点,在重新启动后从断点处开始采集数据。
2.4 安装Logstash直接在Logstash安装包目录下执行命令安装
cd /opt/es/ sudo dpkg -i logstash-7.13.2-amd64.deb # 安装deb包
配置Logstash:Logstash的配置文件都放在/etc/logstash/conf.d/目录下
创建Logstash的Redis输入配置文件vim /etc/logstash/conf.d/redis.conf,并输入配置内容如下
# 输入源配置
input {
redis {
host => "172.16.255.131"
port => 6379
# password => "my_password" # 不需要配置密码时直接删除该行
db => "0"
key => "filebeat"
data_type => "list"
type => "redis"
codec => plain{
charset=>"UTF-8"
}
}
}
filter {
mutate{
convert => ["upstream_time","float"] # 解析时间
convert => ["request_time","float"] # 请求时间
}
# 解析为json格式
json {
source => "message"
}
}
# 输出配置
output{
stdout {}
elasticsearch {
hosts => "http://172.16.255.131:9200"
manage_template => false
index => "nginx_redis-%{+yyyy.MM}"
}
}
配置完成后,使用如下启动命令启动Logstash,值得注意的是Logstash启动过程很缓慢,需要耐心等待
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf
启动成功后Logstash从指定输入源中读取数据,并输出到ES中结果如下
03 Kibana 自定义运维大屏 3.1 创建Kibana图表Kibnana-7版本中创建图表在Dashboard中创建,如下图所示
创建图表分为四步:
选择数据对象选择分析数据的目标字段选择数据分析采用的图表样式编辑图表图例与图示
3.2 创建Kibana运维大屏创建完指定数据字段的数据分析图表之后,可以对齐进行进一步地调整,然后选择保存到library中组成大图
如下图所示是多个图表组成的Nginx运维大屏



