赞
踩
ELK可视化系统包含elasticsearch(7.6.2)、elasticsearch-head(5)、logstash(7.6.2)、kibana(7.6.2)等模块。
logstash用于收集日志,传给elasticsearch,elasticsearch-head是elasticsearch的可视化工具,kibana可以显示日志数据。
本文中实现远程监控指定设备的nginx日志(系统日志以及ipsec日志)
需要两台虚拟机器。
192.168.1.169:被监听的一方,安装logstash。
192.168.1.168:监听的一方,安装elasticsearch,elasticsearch-head,kibana。
使用docker进行安装
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
yum list docker-ce --showduplicates | sort -r
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/
docker 修改镜像源
编辑/etc/docker/daemon.json中写入如下内容(如果文件不存在就新建)
{"registry-mirrors":["http://docker.mirrors.ustc.edu.cn/"]}
sudo service docker restart
中科大:"http://docker.mirrors.ustc.edu.cn/"
阿里:"http://ip1rqq6e.mirror.aliyuncs.com"
网易:"http://hub-mirror.c.163.com/"
(1)下载ealastic search和kibana
docker pull elasticsearch:7.6.2
docker pull kibana:7.6.2
elasticsearch会开启9100端口
kibana会开启9601端口
(2)配置
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/
(3)启动Elastic search
设置开机启动elasticsearch
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.6.2
设置开机启动elasticsearch
docker update elasticsearch --restart=always
(4)启动kibana:
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.1.168:9200 -p 5601:5601 -d kibana:7.6.2
设置开机启动kibana
docker update kibana --restart=always
(5)测试
查看elasticsearch版本信息: http://192.168.1.168:9200/
{ "name" : "99ca67f3cf65", "cluster_name" : "elasticsearch", "cluster_uuid" : "T3r6dBWqTEaXESOLtQV2Nw", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
显示elasticsearch 节点信息http://192.168.1.168:9200/_cat/nodes ,
127.0.0.1 17 93 40 0.85 1.40 1.10 dilm * 99ca67f3cf65
访问Kibana: http://192.168.1.168:5601/app/kibana
安装elasticsearch head插件监控管理
docker pull mobz/elasticsearch-head:5
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
docker update elasticsearch-head的id --restart=always #设置开机自启
在浏览器中打开elasticsearch-head页面,填入ElasticSearch地址
elasticsearch-head会开启9200端口
集群未连接:解决办法
vi /mydata/elasticsearch/config/elasticsearch.yml(可能是跨域问题)
http.cors.enabled: true
http.cors.allow-origin: "*"
尝试再依次启动elasticsearch和elasticsearch-head
docker restart elasticsearch
docker restart elasticsearch-head的ID(使用docker ps查看)
再次进入9100端口输入9200的地址进行连接查看
解决elasticsearch-head数据浏览无数据问题:
docker ps查看elasticsearch-head的id为b25d095f3d33
docker exec -it b25d095f3d33 /bin/bash进入head容器
cd _site
vi vendor.js报错说bash: vi: command not found即容器中不支持vi
可以安装vim,修改此文件
apt-get update
apt-get install vim
也可以把配置文件从容器里面拷贝到主机目录,( elasticsearch-head是容器名,也可以用容器ID,先exit退出容器)使用命令:
docker cp elasticsearch-head的id:/usr/src/app/_site/vendor.js ./
vi vendor.js(切记不能屏蔽原句,只能在原句基础上修改成新的)
6886行 contentType: “application/x-www-form-urlencoded”,
(这行代码是有逗号的)
改成contentType: “application/json;charset=UTF-8”,
7573行 var inspectData = s.contentType ===“application/x-www-form-urlencoded” &&
改成var inspectData =s.contentType === “application/json;charset=UTF-8” &&
将改完后的文件拷贝回容器: docker cp vendor.js elasticsearch-head:/usr/src/app/_site
不用重启,刷新网页即可。
jdk11版本的安装包、logstash7.6.2的rpm包
Jdk包放到/usr/local目录下解压
vi /etc/profile末尾添加:
export JAVA_HOME=/usr/local/jdk-11.0.16.1 #jdk的绝对路径
export JRE_HOME=${
JAVA_HOME}/jre
export CLASSPATH=.:${
JAVA_HOME}/lib:${
JRE_HOME}/lib
export PATH=${
JAVA_HOME}/bin:$PATH
使之生效
source /etc/profile
ln -s /usr/local/jdk-11.0.16.1/bin/java /usr/bin/java
安装
rpm -ivh logstash-7.6.2.rpm
配置监听数据
cd /etc/logstash/
vi logstash.yml
logstash.yml修改http.host为当前ip,比如192.168.1.169
vi logstash-sample.conf
内容为(复制粘贴容易造成缩进错误,请注意):
hosts的ip为要把日志传给对方的对方ip
配置文件通过监听多个日志文件收集自己169的nginx日志
input标准输入,file指监听的路径,可以赋予type类型
output标准输出
filter过滤掉不用的数据
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
file {
path => "/var/log/messages"
type => "system-log"
}
file {
path => "/ipsec/logs/sys_*.log"
type =>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。