项目一期使用了es数据库,二期需要迁移并在一期基础上添加功能。并且依赖的基础核心服务有所升级。服务器搭建环境基于微软服务器。开发基于一期项目代码(此前未了解)。
在开发以及部署中出现的问题予以记录:
1.ELK的安装使用:
ELK:es+logstash+kibana(都为7.5.1版本),安装命令都是用的公司的bash命令一键安装(都是间接使用的docker安装的),如果自行安装,还是得看教程(我这里只是简单记录安装过程中的大致步骤),安装顺序我是es>kibana>logstash。es安装好后,没有设置账号密码使用curl http://ip:port(端口一般是9200),如果显示了安装信息表明安装成功。
设置了账号密码就使用curl http://user:paasword@ip:port。
kibana安装好后,浏览器中输入http://ip:port(端口一般是5601),如果设置了密码,会有登录界面:
没有设置密码会直接进入kibana界面,
我理解kibana就是以界面的形式为用户展示操作数据。如果出现登录不上的问题,例如Kibana server is not ready yet(这是比较常见的问题),cd到kibana下的config目录,有一个kibana.yml文件,不管路径localhost:9200还是elasticsearch(容器名):9200 都替换成IP地址+9200(还不行,ifconfig命令查看服务器内网ip,试试将ip换为内网ip)。
这是我的kibana配置文件信息:
安装logstash,logstash收集、分析日志插件,底层貌似用的是什么ruby语言实现。
下面是我的一些配置文件信息(在logstash下的config目录下):
logstash.conf:
input {
tcp {
port => 4560
codec => json_lines
}
}
filter {
if [request_trace]=="true" {
mutate {
remove_field => "message"
remove_field => "mydate"
remove_field => "@version"
remove_field => "level"
remove_field => "level_value"
}
}
}
output {
if [request_trace]=="true" {
stdout {
codec => json
}
elasticsearch {
hosts => ["http://ip:9200"]
index => "request-trace-%{+YYYY.MM}"
template => "/usr/share/logstash/config/template.request-trace.json"
template_name => "request-trace"
template_overwrite => true
user => "*******_es"
password => "123456"
}
}
else {
elasticsearch {
hosts => ["http://ip:9200"]
index => "logstash-%{+YYYY.MM}"
user => "*******_es"
password => "123456"
}
}
}
由三部分组成,input,output,filter,input负责收集日志,并通过filter过滤,最终output输出。
1)首先,input表示数据源,数据源可以有多种形式,可以具体从某个文件,可以从es、redis等数据库。我的这个项目是表示日志数据是通过tcp形式传输,logstash将自己的4560端口暴露出来,codec嘛,字面理解是数据处理格式吧。
2)其次,filter是个过滤器,应该是个可选项(说白了,你可以不配置)。
mutate 对字段做处理 重命名、删除、替换和修改字段。那remove_field的话应该是删除不想要的字段。
3)最后,output把最终得到的日志文件输出,我这里存储到了es数据库中。index就是通过kibana去查看日志的索引。像下面各个月的日志存储在各个索引中,然后可以去具体某个索引中去查找对应的日志。kibana使用方法,还是得看具体教程。
可以参考这篇博文了解logstash配置文件具体含义:logstash配置文件具体含义
logstash.yml:
xpack.monitoring.elasticsearch.hosts: http://ip:9200
xpack.monitoring.elasticsearch.username: "*******_es"
xpack.monitoring.elasticsearch.password: "123456"
后续持续跟进Kibana页面查询操作。。