rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch设置repo内容
vim /etc/yum.repos.d/elasticsearch.repo在repo中添加如下内容
[elasticsearch-7.x] name=Elasticsearch 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-mdJava环境安装
elasticsearch 需要java环境支持,执行如下命令
安装java 环境yum install java -y版本低直接安装9.0 去镜像网站下载jdkcd /usr/local wget https://repo.huaweicloud.com/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.tar.gz tar -zxvf jdk-9.0.1_linux-x64_bin.tar.gz配置JAVA_HOME
vi /etc/profile
内容如下:
export JAVA_HOME=/usr/local/jdk-9.0.1 export JRE_HOME=/usr/local/jdk-9.0.1/jre export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
使修改生效
source /etc/profile
查看是否安装成功
java -version验证是否安装好
java -versionElasticsearch 安装和配置
安装
yum -y install elasticsearch
报错
解决
##设置为自启动
systemctl enable elasticsearch
配置
配置文件路径:/etc/elasticsearch/elasticsearch.yml
# 配置文件都在 /etc/elasticsearch/ 目录下 vim /etc/elasticsearch/elasticsearch.yml # 集群名称 cluster.name: jhxxb # 节点名称 node.name: node-1 # 数据文件与日志文件存放目录 path.data: /home/esData/es path.logs: /home/esData/log # 网络设置 network.host: 0.0.0.0 http.port: 9200 # 集群设置 cluster.initial_master_nodes: ["node-1"] # 修改配置中目录的用户与用户组,不然无法启动 chown -R elasticsearch:elasticsearch /var/lib/elasticsearch chown -R elasticsearch:elasticsearch /var/log/elasticsearch命令介绍
- 启动
systemctl start elasticsearch.service - 停止
systemctl stop elasticsearch.service
curl -X GET http://localhost:9200
输出结果如下
{ "name" : "node-1", "cluster_name" : "app-log", "cluster_uuid" : "oVk4kUzKTCOsc2zaViOMXA", "version" : { "number" : "6.8.13", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "be13c69", "build_date" : "2020-10-16T09:09:46.555371Z", "build_snapshot" : false, "lucene_version" : "7.7.3", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }Logstash 安装
第一步已经设置repo所以可直接安装,如果没有需自行按照第一步设置
安装yum -y install logstash
手动添加systemd服务
/usr/share/logstash/bin/system-install
完成后会创建脚本/etc/systemd/system/logstash.service
启动:
systemctl start logstash
出现这个错误则需要生成lgstash.service文件
sudo /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd
原因:这是由于jdk版本太低造成的,jdk版本需要在9.0以上,因此需要重新安装jdk。
查看状态
tail -f /var/log/messages查看系统日志
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000083e80000, 1366294528, 0) failed;
原因就是内存无法分配的问题 (这要看遇到的具体是什么了)
现执行命令 free -m 查看内存是不是还有 最主要的是 看有没有交换空间 swap (这很重要)如果没有交换空间 或者交换空间比较小 要先安装交换空间 或者增大空间
(1)、创建swapfile:
root权限下,创建swapfile # dd if=/dev/zero of=swapfile bs=1024 count=500000 (有时会遇到dd命令不识别 可能是你安装过一次了 没事 先把swapfile删除就ok了)
(2)、将swapfile设置为swap空间
mkswap swapfile
(3)、启用交换空间,这个 *** 作有点类似于mount *** 作(个人理解):
swapon swapfile (删除交换空间 swapoff swapfile)
至此增加交换空间的 *** 作结束了,可以使用free命令查看swap空间大小是否发生变化;
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release
解决办法是修改jvm.options文件配置vim /etc/logstash/jvm.options,将
-XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC自启动
systemctl enable logstash
配置放在后面讲,和FileBeat一起讲更容易理解
Kibana 安装和配置 安装第一步 有的话这部省略直接安装
# 下载并安装公共签名密钥 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch # 添加源 vim /etc/yum.repos.d/kibana.repo [kibana-7.x] name=Kibana 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 -y kibana # 配置 vim /etc/kibana/kibana.yml server.host: "0.0.0.0" # 不要用 127.0.0.1,可能会提示 Kibana server is not ready yet elasticsearch.hosts: ["http://192.168.8.41:9200"] i18n.locale: "zh-CN" # 刷新服务配置 systemctl daemon-reload # 开机自启 systemctl enable kibana.service # 启动 systemctl start kibana.service # 查看状态 systemctl status kibana.service
默认端口为 5601 浏览器ip:5601
设置自动启systemctl enable kibana安装redis FileBeat 安装和配置 安装
yum -y install filebeat设置自启动
systemctl enable filebeat
配置
配置路径:/etc/filebeat/filebeat.yml
filebeat.inputs: - type: log enabled: true paths: - /xxxx/dispatch.log fields: log_source: jobs output.redis: hosts: ["xxxxxyyyyyzzzz.redis.rds.aliyuncs.com"] port: 6379 db: 2 timeout: 5 key: "logstash_list" processors: - add_host_metadata: ~ - add_cloud_metadata: ~
注解:FileBeat 是转发日志内容到指定的管道对象(这里使用的是阿里云的redis),其中需要注意的是 log_source 这个是我自定义的日志来源,方便后面Logstash进行日志处理。上面的配置就是讲 日志 放到 redis队列中,队列叫做:logstash_list
启动
systemctl start filebeatLogstash 配置
配置
前面说过,关于Logstash的配置放到FileBeat安装之后,这个没有先后顺序,只是方便大家理解 才专门单独放到后面讲解。FileBeat 将 日志放到了redis中。那么Logstash就要从redis中取出数据。
配置路径:/etc/logstash/conf.d/log.conf
input { redis { data_type => "list" key => "logstash_list" host => "xxxxxyyyyyzzzz.redis.rds.aliyuncs.com" port => 6379 db => 2 } } filter { if "cleared" in [message] or "运行时间未到" in [message] or "DEBUG 运行命令" in [message] { ### 丢弃 drop{} } if "yii queue" in [message] and "start" in [message] { drop{} } if "jobs" == [fields][log_source] { grok { match =>{ "message" => "job_id:%{NUMBER:job_id}" } } } mutate { remove_field => ["@version","[beat][name]","[beat][hostname]","[beat][version]","[host][architecture]","[host][containerized]","[host][id]","[host][os][codename]","[host][os][family]","[host][os][name]","[host][os][platform]","[host][os][version]","[meta][cloud][provider]","[prospector][type]","[log][file][path]","[input][type]","[meta][cloud][region]","http_version"] } } output { if "jobs" == [fields][log_source] { elasticsearch { hosts => ["localhost:9200"] index => "jobs-%{+YYYY.MM.dd}" } } }
注解:
- 上面的input配置的和FileBeat同一个Redis配置,说明从Redis获取数据。
- filter 区域表示过滤处理,上面是根据我自己的业务进行日志丢弃(因为有些日志记录是没有意义的)。根据来源进行 数据匹配 然后单独存储更改值( 如下图,将message字段中的job_id 单独提取作为一个字段 )
- filter 中的 mutate 配置了删除一些字段,有些字段都一样,存在没意义,减少存储日志量
output 配置中 判断来源,然后设置存储在Elasticsearch 中并且索引规则按照定义好的生成(如下图)
启动 systemctl start logstash
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)