如果系统出问题 研发第一个找的就是运维,问你要各种日志,以前上服务器拉日志,太俗。
今天换个新姿势 走上自动化运维的重要一步日志监控.
ELK 是(Elasticsearch+Logstash+Kibana 外+Filebeat)
工作机制 :F (filebeat)负责日志的收集(input)-->然后把日志吐给L(logstash)(output)-->让后给ES(elasticsearch)-->K(kibana)负责展示
这里多说一点 Logstash 和 Filebeat 两弟兄其实他们两个都可以完成input日志和output日志,但是L运行机制比较大占用内存大,擅长于文件处理所以收集不是他的强项,F架构原因更加轻量化,灵活收集日志是把好手打个比喻:
垃圾车也能直接让你把垃圾扔车上带走,但他动静大,环卫工人动静小,更敏捷。
好的前言结束上干货
自然是离线部署最合适不管你是否有网络通吃O(∩_∩)O哈哈~
下载安装包:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.2.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz
解压安装包:
tar -xzf elasticsearch-7.2.0-linux-x86_64.tar.gz
tar -xzf logstash-7.2.0.tar.gz
tar -xzf kibana-7.2.0-linux-x86_64.tar.gz
tar -xzf filebeat-7.2.0-linux-x86_64.tar.gz
创建用户
启动elasticsearch和kibana 要求以非root用户启动
groupadd elk
useradd elk -g elk
chown -R elk:elk elasticsearch-7.2.0
chown -R elk:elk kibana-7.2.0-linux-x86_64
部署elasticsearch
创建elasticsearch的数据目录和授权
mkdir -pv /data/elk/{data,logs}
chown -R elk:elk /data/elk/
进入elasticsearch.yml所在目录
编辑配置文件
然后保存退出
使用刚才建立的用户登录启动ES
su - elk
cd elasticsearch-7.2.0
nohup bin/elasticsearch &
如果启动失败请查看日志,根据日志提示对应的修改问题(跟着我做下来不会有问题的)
tail -f nohup.out
验证一下:
curl 127.0.0.1:9200
如果你看到这个界面 那么 到此ES已经部署完成
logstash部署
进入root模式
cd logstash-7.2.0/
cp config/logstash-sample.conf ./
nohup bin/logstash -f logstash-sample.conf &
同理查看是否启动如果有问题查看
tail -f nohup.out
根据提示处理问题
ps -ef |grep logstash
看到如图表示启动成功
kibana部署
使用elk账号模式
su - elk
cd kibana-7.2.0-linux-x86_64
vim config/kibana.yml
修改host,这样可以在其他机器上的浏览器,用ip+端口去访问kibana
server.host: "0.0.0.0"
记得使用elk用户启动kibana
nohup bin/kibana &
启动后默认端口使用5601(记得放行端口)
在浏览器里,输入ip:5601 访问成功即代表启动成功
到此kibana安装成功
filebeat部署
进入filebeat所在目录编辑filebeat.yml文件
修改箭头指向的地方下面我是我配置多文件的 不用管
到此完成配置
启动filebeat
nohup ./filebeat -e -c filebeat.yml &
到此所有部署完成
接下里如何查看日志
跟着我的步骤创建索引1
步骤2
步骤3
选择一个索引 我这里是添加了多个 如果第一次你进来会显示一个默认的选择就好了
对应操作
然后
创建完成后 点击 如图
选择对应的索引就可以看到你的日志了
到这里就完成了基本的ELK 监控查询
在我们日常的工作中其实需要查看的日志并不是一个。经常是多日志例如 nginx tomcat,和项目模块应用,那么接下来我们处理多日志检测的问题那我们继续往下走
接下里我们以nginx 和tomcat 为例子监控两个日志
环境准备你安装好nginx 和tomcat
nginx 做个日志format
log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"domain":"$host",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"status":"$status"}';
access_log /opt/tengine/logs/access.log access_json;
然后看到的日志就比较舒服一些了
接下来配置filebeat的日志文件
进入filebeat的配置文件目录
这个地方也就是我们最开始配置需要监控的日志的目录只是这里我们需要监控的日志是两个,如果在需要加只需要多配置一个就可以了 详情如下:
- type: log
enabled: true
backoff: "1s"
tail_files: false
paths:
- /opt/tengine/logs/access.log
fields:
filetype: logjson
fields_under_root: true
- type: log
enabled: true
backoff: "1s"
tail_files: false
paths:
- /opt/apache-tomcat-8.5.56/logs/catalina.2022-03-23.log
fields:
filetype: logsystem
fields_under_root: true
然后 进入logstash安装目录
编辑logstash-sample.cnf文件
配置如下:
到这里 配置就完成了
更改了 配置文件的都需要重启
重启 filebeat logstash 两个模块 重启前记得先kill 掉之前的进程
然后就能看到
安装之前的方法添加了索引后 就能查看日志了
选择其中一个 看看日志效果 或者你刷新下nginx
这里就是最新的nginx 日志了
其实在logstash 中还有很多骚操作,例如切分日志,希望我们一起研究吧。
如果您看到这里 希望你有所搜获,共同分享共同学习
-----彩币运维
2022年3月23日