ELK+Kafka+FileBeat高可用集群

环境筹备

  • 点击查看ELK对操作系统是否兼容
  • 点击查看ELK对JDK是否兼容信息列表

ELK 是Elasticsearch ,Logstash, Kibana 的简称缩写,次要专一于可视化日志剖析和查问

Elastic Stack 次要包含三大部分:

海量数据存储和检索----- Elasticsearch 分布式存储和查问
可视化界面和图表生成----Kibana 可提供可视化界面和各种图表的生成。
可视化界面和图表生成----Kibana 可提供可视化界面和各种图表的生成。

ELK 不过是Elastic Stack 用法中日志剖析栈的一部分

阐明

  • 不晓得你们有没有留神到,官网仿佛曾经无意在应用FileBeat 替换Logstash 采集日志了。
  • Logstash 是由 Elastic 公司推出的一款开源的服务器端数据处理管道,可能同时从多个起源采集数据,转换数据,而后将数据发送指定的存储库中。Logstash 官网介绍。
  • Filebeat 是 Elastic 公司为解决 Logstash “太重” 的问题推出的一款轻量级日志采集器,在解决数量泛滥的服务器、虚拟机和容器生成的日志时可应用 Logstash + Filebeat 的日志采集形式。Filebeat 官网介绍。
架构图
服务器IP主机名软件列表
10.0.0.11Master-1Kibana,Prometheus+grafana,node_exporter
10.0.0.12Master-2Kibana,kafka,zookeeper,node_exporter
10.0.0.21Node-1Elasticsearch,Logstash,kafka,zookeeper,node_exporter
10.0.0.22Node-2Elasticsearch,Logstash,kafka,zookeeper,node_exporter
10.0.0.23Node-3Elasticsearch,Mysql,Nginx,redis,FileBeat,Logstashnode_exporter

软件应用版本

elasticsearch-7.16.1-linux-x86_64.tar.gz
filebeat-7.16.1-linux-x86_64.tar.gz
logstash-7.16.2-linux-x86_64.tar.gz
kafka_2.13-3.0.0.tgz
kibana-7.16.1-linux-x86_64.tar.gz
prometheus-2.32.1.linux-amd64.tar.gz
grafana-enterprise-8.3.3.linux-amd64.tar.gz

网盘链接

链接:https://pan.baidu.com/s/192mr...
提取码7777

机器的配置都是

批改过程

在Centos7 Linux 操作系统中,默认单个过程能够关上的最多文件数是1024

然而ES 对操作系统有些特殊要求

  • 要求操作系统单个过程能够关上的最大文件数起码要达到65535.
    而且ES 将会应用很多线程,也须要批改下操作系统限度。

如果不配置就会报错如下所示:

bootstrap checks failed. You must address the points described in the following [3] lines before starting Elasticsearch.bootstrap check failure [1] of [3]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]bootstrap check failure [2] of [3]: max number of threads [3687] for user [elasticsearch] is too low, increase to at least [4096]bootstrap check failure [3] of [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

查看以后操作系统反对单个过程能够关上的最多文件数,返回值如果没批改会显示1024

ulimit -nvim /etc/security/limits.conf
#在最初增加*               soft    nofile          65535*               hard    nofile          65535*               hard    nproc           4096*               soft    nproc           4096
  • 设置限度数量,第一列示意用户,* 示意所有用户
  • soft nproc :单个用户可用的最大过程数量(超过会正告);
  • hard nproc:单个用户可用的最大过程数量(超过会报错);
  • soft nofile :可关上的文件描述符的最大数(超过会正告);
  • hard nofile :可关上的文件描述符的最大数(超过会报错);
  • 原文链接:https://blog.csdn.net/zxljsbk...
  • 断开session 链接,从新登陆失效
vim /etc/sysctl.conf#增加内容vm.max_map_count=262144#vm.max_map_count 配置确保操作系统领有足够多的虚拟内存#如果应用的是包管理器形式装置,那么不须要这个操作,默认会进行配置。#刷新配置立刻失效,重启一下sysctl -preboot

创立对立目录

mkdir -p /data/softwaremkdir -p /data/modules

各个节点上传所需软件安装包(具体看下面表格)

Elasticsearch

elasticsearch简介

Elasticsearch,江湖人称ES,它是一个实时的分布式存储,搜寻和剖析引擎

为什么用Elasticsearch?

  • 场景一: 当检索“我是中国人”,一般关系型数据库只能查找%我是中国人%的记录,无奈搜寻“我是 中国人”
  • 场景二: 找到与查问最匹配的 10 个文档并不艰难。但如果面对的是十亿行日志,又该如何解读呢?

    ES 因为领有分布式存储,分词,高效海量数据查问的性能,因而是查问畛域的王者!

类型默认值形容
homeElasticsearch 主文件夹门路或者$ES_HOME
bin二进制脚本,蕴含开启一个node 的elasticsearch 和装置插件的elasticsearch-plugin 可执行二进制脚本
confES_PATH_CONF配置文件包含elasticsearch.yml
datapath.data节点上调配的每个索引/分片的数据文件的地位。 能够包容多个地位。
logspath.logs日志文件门路
plugins插件文件配置,每个插件会蕴含在子文件夹下
repopath.repo共享的文件系统存储库地位。 能够包容多个地位。 能够将文件系统存储库搁置在此处指定的任何目录的任何子目录中。
jdkElasticsearch是应用Java构建的,所以ES 版本中都自带捆绑了一个Open JDK,位于$ES_HOME/jdk文件夹下

$ES_HOME/config 文件夹下有这么几个配置文件

配置文件名称配置文件含意
elasticsearch.yml配置ES
jvm.options配置ES的JVM参数
log4j2.properties配置ES的日志
elasticsearch装置

范畴Node-1,Node-2,Node-3

创立用户
#创立es用户(ELK都用自建用户启动)useradd es_user#批改es用户明码passwd es_user
解压装置
#进入装置目录cd /data/software/解压elasticsearch安装包tar -zxvf elasticsearch-7.16.1-linux-x86_64.tar.gz -C /data/module/
批改JDK配置
#进入配置目录cd /data/module/elasticsearch-7.16.1/bin#编辑配置文件vim elasticsearch#增加环境变量#配置为elasticsearch自带jdkexport JAVA_HOME=/data/module/elasticsearch-7.16.1/jdkexport PATH=$JAVA_HOME/bin:$PATH#增加jdk判断if [ -x "$JAVA_HOME/bin/java" ]; then        JAVA="/data/module/elasticsearch-7.16.1/bin/java"else        JAVA=`which java`fi
批改启动配置
#进入elasticsearch的config配置目录cd /data/module/elasticsearch-7.16.1/config#批改配置文件vim elasticsearch.yml

Node-1

#node-1配置文件# 集群名称cluster.name: my-application# 集群节点名称node.name: node-1# ES默认 只容许本地 127.0.0.1 和[::1] 拜访# 也能够设置成0.0.0.0 容许所有IP主机拜访# 如果不配置就默认认为是开发者模式,如果配置不正确会写入正告然而能正确运行# 如果配置了就会认为进入了生产环境, 如果配置不正确就会降级为异样,ES无奈正确启动。network.host: 0.0.0.0# 默认ES节点端口9200,如果是伪集群(在一台服务器上搭建集群),须要批改。http.port: 9200# 设置数据寄存门路,倡议批改这个门路到ES的装置文件夹里面,防止ES降级误删掉这个文件夹path.data: /data/module/elasticsearch-7.16.1/es/data/es-node-1/# 设置日志寄存门路,倡议批改这个门路到ES的装置文件夹里面,防止ES降级误删掉这个文件夹path.logs: /data/module/elasticsearch-7.16.1/es/log/es-node-1/# 发现其余节点主机配置 这里配置的是ES所在服务器的公网IP地址discovery.seed_hosts: ["10.0.0.21:9300","10.0.0.22:9300","10.0.0.23:9300"]# 哪些节点能够被选举为主节点配置cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

Node-2

#node-2配置文件# 集群名称cluster.name: my-application# 集群节点名称node.name: node-2# ES默认 只容许本地 127.0.0.1 和[::1] 拜访# 也能够设置成0.0.0.0 容许所有IP主机拜访# 如果不配置就默认认为是开发者模式,如果配置不正确会写入正告然而能正确运行# 如果配置了就会认为进入了生产环境, 如果配置不正确就会降级为异样,ES无奈正确启动。network.host: 0.0.0.0# 默认ES节点端口9200,如果是伪集群(在一台服务器上搭建集群),须要批改。http.port: 9200# 设置数据寄存门路,倡议批改这个门路到ES的装置文件夹里面,防止ES降级误删掉这个文件夹path.data: /data/module/elasticsearch-7.16.1/es/data/es-node-2/# 设置日志寄存门路,倡议批改这个门路到ES的装置文件夹里面,防止ES降级误删掉这个文件夹path.logs: /data/module/elasticsearch-7.16.1/es/log/es-node-2/# 发现其余节点主机配置 这里配置的是ES所在服务器的公网IP地址discovery.seed_hosts: ["10.0.0.21:9300","10.0.0.22:9300","10.0.0.23:9300"]# 哪些节点能够被选举为主节点配置cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

Node-3

#node-3配置文件# 集群名称cluster.name: my-application# 集群节点名称node.name: node-3# ES默认 只容许本地 127.0.0.1 和[::1] 拜访# 也能够设置成0.0.0.0 容许所有IP主机拜访# 如果不配置就默认认为是开发者模式,如果配置不正确会写入正告然而能正确运行# 如果配置了就会认为进入了生产环境, 如果配置不正确就会降级为异样,ES无奈正确启动。network.host: 0.0.0.0# 默认ES节点端口9200,如果是伪集群(在一台服务器上搭建集群),须要批改。http.port: 9200# 设置数据寄存门路,倡议批改这个门路到ES的装置文件夹里面,防止ES降级误删掉这个文件夹path.data: /data/module/elasticsearch-7.16.1/es/data/es-node-3/# 设置日志寄存门路,倡议批改这个门路到ES的装置文件夹里面,防止ES降级误删掉这个文件夹path.logs: /data/module/elasticsearch-7.16.1/es/log/es-node-3/# 发现其余节点主机配置 这里配置的是ES所在服务器的公网IP地址discovery.seed_hosts: ["10.0.0.21:9300","10.0.0.22:9300","10.0.0.23:9300"]# 哪些节点能够被选举为主节点配置cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

须知:如果须要设置近程拜访明码,那么须要持续增加配置如下

http.cors.enabled: truehttp.cors.allow-origin: "*" http.cors.allow-headers: Authorizationxpack.security.enabled: true xpack.security.transport.ssl.enabled: true 
给用户赋予权限

Node-1

# 授予执行权限,Module文件夹权限受权给es_user 用户chmod u+x  /data/module/elasticsearch-7.16.1/binchown -R es_user:es_user /data/module/elasticsearch-7.16.1# 将ES数据存储文件夹权限受权给es_user用户mkdir -p /data/module/elasticsearch-7.16.1/es/data/es-node-1/chown -R es_user /data/module/elasticsearch-7.16.1/es/data/es-node-1/# 将ES 日志存储文件夹权限受权给es_user用户mkdir -p /data/module/elasticsearch-7.16.1/es/log/es-node-1/chown -R es_user /data/module/elasticsearch-7.16.1/es/log/es-node-1/

Node-2

# 授予执行权限,Module文件夹权限受权给es_user 用户chmod u+x  /data/module/elasticsearch-7.16.1/binchown -R es_user:es_user /data/module/elasticsearch-7.16.1# 将ES数据存储文件夹权限受权给es_user用户mkdir -p /data/module/elasticsearch-7.16.1/es/data/es-node-2/chown -R es_user /data/module/elasticsearch-7.16.1/es/data/es-node-2/# 将ES 日志存储文件夹权限受权给es_user用户mkdir -p /data/module/elasticsearch-7.16.1/es/log/es-node-2/chown -R es_user /data/module/elasticsearch-7.16.1/es/log/es-node-2/

Node-3

# 授予执行权限,Module文件夹权限受权给es_user 用户chmod u+x  /data/module/elasticsearch-7.16.1/binchown -R es_user:es_user /data/module/elasticsearch-7.16.1# 将ES数据存储文件夹权限受权给es_user用户mkdir -p /data/module/elasticsearch-7.16.1/es/data/es-node-3/chown -R es_user /data/module/elasticsearch-7.16.1/es/data/es-node-3/# 将ES 日志存储文件夹权限受权给es_user用户mkdir -p /data/module/elasticsearch-7.16.1/es/log/es-node-3/chown -R es_user /data/module/elasticsearch-7.16.1/es/log/es-node-3/
elasticsearch启动

凋谢9200,9300端口

firewall-cmd --zone=public --add-port=9200/tcp --permanent;firewall-cmd --zone=public --add-port=9300/tcp --permanent;firewall-cmd --zone=public --add-service=http --permanent;firewall-cmd --zone=public --add-service=https --permanent;firewall-cmd --reload;firewall-cmd --list-all;

切换用户登录

# 切换用户cd /data/module/elasticsearch-7.16.1su es_user# 启动ES./bin/elasticsearch
  • 第一次启动倡议前台启动,观测没有谬误后再应用后盾守护线程启动
  • 前台启动后,如果想退出,能够按键盘Ctrl+C 进行退出
  • 如果须要后盾运行的话,那么减少下启动参数即可:./bin/elasticsearch -d -p pid
  • 其中-d 示意后盾守护过程启动, -p 示意将生成的过程Id存储到文件中。
  • ES 默认启动会加载 $ES_HOME/config/ 文件夹下elasticsearch.yml 中的配置

一般来说咱们不间接对外不间接凋谢端口,而是应用Nginx做反向代理来提供服务。

  • 首先须要在域名解析DNS 那里配置 es.xxx.com 指向咱们的服务器
  • 配置Nginx 反向代理

nginx 反向代理ES 配置

server {  listen 80;  server_name es.xxx.com;  return 301 https://$host$request_uri;}server {  listen 443 ssl;  server_name es.xxx.com;  ssl_certificate   cert/server.pem;  ssl_certificate_key  cert/server.key;  location / {    proxy_set_header        Host $host:$server_port;    proxy_set_header        X-Real-IP $remote_addr;    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_set_header        X-Forwarded-Proto $scheme;    proxy_redirect http:// https://;    proxy_pass              http://0.0.0.0:9200;    # Required for new HTTP-based CLI    proxy_http_version 1.1;    proxy_request_buffering off;    proxy_buffering off; # Required for HTTP-based CLI to work over SSL    # workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651    add_header 'X-SSH-Endpoint' 'es.xxxx.com' always;  }}

Kibana

Kibana简介

Kibana 是一个旨在与Elasticsearch一起应用的开源剖析和可视化平台

Kibana 是一个收费且凋谢的用户界面,可能让您对 Elasticsearch 数据进行可视化,并让咱们在 Elastic Stack中进行导航。咱们能够进行各种操作,从跟踪查问负载,到了解申请如何流经您的整个利用,都能轻松实现

倡议Kibana 和Elasticsearch 装置在同一个服务器上

Kibana装置

范畴Master-1,Master-2

创立用户

#创立es用户(ELK都用自建用户启动)useradd es_user#批改es用户明码passwd es_user# 授予执行权限,Module文件夹权限受权给es_user 用户chmod u+x  /data/module/kibana-7.16.1-linux-x86_64/binchown -R es_user:es_user /data/module/kibana-7.16.1-linux-x86_64

解压装置

cd /data/software/tar -zxvf kibana-7.16.1-linux-x86_64.tar.gz -C /data/module/

批改配置

cd /data/module/kibana-7.16.1-linux-x86_64/configvim kibana.yml

Master-1

# Kibana 默认监听端口5601,如果须要扭转就批改这个配置server.port: 5601# Kibana 部署服务器IP,如果是单网卡配置0.0.0.0即可,如果是多网卡须要配置IPserver.host: 10.0.0.11# 配置服务器的名称server.name: my-kibana# 配置ES的集群节点地址elasticsearch.hosts: ["http://10.0.0.21:9200","http://10.0.0.22:9200","http://10.0.0.23:9200"]# 创立一个kibana索引kibana.index: ".kibana"#设置中文i18n.locale: "zh-CN"

Master-2

# Kibana 默认监听端口5601,如果须要扭转就批改这个配置server.port: 5601# Kibana 部署服务器IP,如果是单网卡配置0.0.0.0即可,如果是多网卡须要配置IPserver.host: 10.0.0.12# 配置服务器的名称server.name: my-kibana# 配置ES的集群节点地址elasticsearch.hosts: ["http://10.0.0.21:9200","http://10.0.0.22:9200","http://10.0.0.23:9200"]# 创立一个kibana索引kibana.index: ".kibana"#设置中文i18n.locale: "zh-CN"
Kibana启动
#开启端口firewall-cmd --zone=public --add-port=5601/tcp --permanent;firewall-cmd --zone=public --add-port=9200/tcp --permanent;firewall-cmd --zone=public --add-service=http --permanent;firewall-cmd --zone=public --add-service=https --permanent;firewall-cmd --reload;firewall-cmd --list-all;#进入执行目录cd /data/module/kibana-7.16.1-linux-x86_64/su es_user./bin/kibana#如果用root 用户执行,那么须要带上参数:./bin/kibana --allow-root#如果想后盾运行kibana 那么须要带上参数:nohup ./bin/kibana --alow-root &
拜访Kibana

启动胜利后,关上网址

http://10.0.0.11:5601
http://10.0.0.12:5601

Logstash

Logstash简介

Logstash 是一个日志采集框架

其实 Logstash 的作用就是一个数据收集器,将各种格局各种渠道的数据通过它收集解析之后格式化输入到 Elasticsearch ,最初再由
Kibana 提供的比拟敌对的 Web 界面进行汇总、剖析、搜寻。

Logstash装置

范畴Node-1,Node-2Node-3

解压装置
cd /data/software/tar -zxvf logstash-7.16.2-linux-x86_64.tar.gz -C /data/module/
批改配置
cd /data/module/logstash-7.16.2/config/vim logstash-sample.conf

Node-1

input {  beats {    port => 5044  }  file {    path => "/data/module/elasticsearch-7.16.1/logs/gc.log"    start_position => "beginning"  }}filter {  if [path] =~ "access" {    mutate { replace => { "type" => "apache_access" } }    grok {      match => { "message" => "%{COMBINEDAPACHELOG}" }    }  }  date {    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]  }}output {  elasticsearch {    hosts => ["10.0.0.21:9200","10.0.0.22:9200"]  }  stdout { codec => rubydebug }}

Node-2

input {  beats {    port => 5044  }  file {    path => "/data/module/elasticsearch-7.16.1/logs/gc.log"    start_position => "beginning"  }}filter {  if [path] =~ "access" {    mutate { replace => { "type" => "apache_access" } }    grok {      match => { "message" => "%{COMBINEDAPACHELOG}" }    }  }  date {    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]  }}output {  elasticsearch {    hosts => ["10.0.0.21:9200","10.0.0.22:9200"]  }  stdout { codec => rubydebug }}

Node-3

input {  beats {    port => 5044  }  file {    path => "/usr/local/nginx/logs/access.log"    start_position => "beginning"  }}filter {  if [path] =~ "access" {    mutate { replace => { "type" => "apache_access" } }    grok {      match => { "message" => "%{COMBINEDAPACHELOG}" }    }  }  date {    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]  }}output {  elasticsearch {    hosts => ["10.0.0.21:9200","10.0.0.22:9200"]  }  stdout { codec => rubydebug }}
  • 以上配置收集 /usr/local/nginx/logs/access.log下的日志
  • Logstash 默认监听5044端口
  • 点击查看更多配置用法
赋予权限
Logstash启动
# 授予执行权限,Module文件夹权限受权给es_user 用户chmod u+x  /data/module/logstash-7.16.2/binchown -R es_user:es_user /data/module/logstash-7.16.2/#切换用户cd /data/module/logstash-7.16.2/su es_user#通过-f 参数能够指定加载哪个配置文件./bin/logstash -f ./config/logstash-simple.conf#如果想后盾启动则执行如下命令即可:nohup ./bin/logstash -f ./config/logstash-simple.conf &

FileBeat

FileBeat介绍

Filebeat 是 Elastic 公司为解决 Logstash “太重” 的问题推出的一款轻量级日志采集器。

FileBeat 能够监督指定的日志文件或地位,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

小提示

  • 因为logstash是jvm跑的,资源耗费比拟大,所以起初作者又用golang写了一个性能较少然而资源耗费也小的轻量级的logstash-forwarder。
  • 不过作者只是一个人,退出http://elastic.co公司当前,因为es公司自身还收买了另一个开源我的项目packetbeat,而这个我的项目专门就是用golang的,有整个团队,所以es公司罗唆把logstash-forwarder的开发工作也合并到同一个golang团队来搞,于是新的我的项目就叫filebeat了。
    作者:饶琛琳
    链接:https://www.zhihu.com/questio...
    起源:知乎 著作权归作者所有。商业转载请分割作者取得受权,非商业转载请注明出处。

FileBeat工作形式

在解决数量泛滥的服务器、虚拟机和容器生成的日志时可应用 Logstash + Filebeat 的日志采集形式。

如何应用FileBeat 监控并采集日志,大抵分为如下步骤:

  • 在要监督的每个零碎上装置Filebeat
  • 指定日志文件的地位
  • 将日志数据解析为字段并将其发送到Elasticsearch
  • 可视化Kibana中的日志数据
文件名称形容
data长久化数据文件
fields.yml配置文件字段类型定义束缚文件
filebeatfilebeat执行命令二进制文件
filebeat.reference.yml和filebeat.yml 文件内容一样, 只是FileBeat 默认配置参考文件,永远不要批改这个文件
filebeat.yml配置文件
kibanakibana 可视化UI
LICENSE.txt开源协定证书,不须要批改
logsFilebeat 产生的日志文件
module模块文件夹
modules.d模块配置文件, 性能开启的模块都是.yml命名, 所有的禁用模块都是yml.disabled命名
NOTICE.txt版本发布公告文件
README.md应用阐明文件,不须要批改
FileBeat装置

范畴Node-1,Node-2Node-3

解压装置FileBeat
cd /data/software/tar -zxvf filebeat-7.16.1-linux-x86_64.tar.gz -C /data/module/
批改FileBeat配置
cd /data/module/filebeat-7.16.1-linux-x86_64vim filebeat.yml
#增加kibana的数据上传地址host: ["http://10.0.0.11:5601"]

FileBeat 配置次要分为两局部:

  • inputs: 从哪里的数据采集数据
  • output: 数据转发到哪里

  • 默认FileBeat会将日志数据放入到名称为:filebeat-%filebeat版本号%-yyyy.MM.dd 的索引中。
  • 更多FileBeat 配置选项见:https://www.elastic.co/guide/...
配置日志收集实现形式
  • 形式一:通过启用模块,批改模块中的配置文件形式实现

比方想监控nginx模块,开启nginx模块,而后在模块的模板配置nginx.yml 文件中配置日志门路就行了

强烈建议应用这种形式,这种间接提供日志配置模板,简略改下门路即可

启用和配置数据收集模块

Filebeat模块为常见的开源框架提供了日志收集配置模版。

filebeat 默认反对大多数开源框架的日志收集,比方ActiveMQ 日志Apache 日志ES 日志IBM MQ 日志IIS日志Kafka 日志MySQL 日志RabbitMQ 日志Redis 日志Tomcat 日志…
  • 如果想查看filebeat 反对的模块配置列表,能够输出如下命令
./filebeat modules list

点击查看反对的全副模块列表配置介绍

在装置目录中,启用一个或多个模块。

启用 system,nginx和mysql模块配置

./filebeat modules enable system nginx mysql

这样能够收集sytem:(操作系统日志),nginx(nginx日志),mysql(mysql 日志)

执行胜利后显示如下所示

禁用某个模块,则输出反向的命令即可

./filebeat modules disable system nginx mysql 

执行下面的命令后就会发现./modules.d 文件夹下的nginx.yml.disabled 文件重命名成了ningx.yml

  • 进入modules.d,咱们须要批改下模块的配置文件来收集咱们指定地位的日志文件。
cd modules.d

比方咱们心愿采集nginx 的/usr/local/nginx/logs/access.log 日志和 /usr/local/nginx/logs/error.log 日志

那么输出关上 nginx.yml 文件命令如下:

vi nginx.yml
- module: nginx  # Access logs  access:    enabled: true    var.paths: ["/usr/local/nginx/logs/access.log"]  error:    enabled: true    var.paths: ["/usr/local/nginx/logs/error.log"]      ingress_controller:    enabled: false              

如果nginx.yml 配置文件出错就会报错如下:

range can't iterate over /usr/local/nginx/logs/access.log

2021-04-25T16:42:59.347+0800    ERROR    [reload]    cfgfile/list.go:99    Errorcreating runner from config: could not create module registry for  filesets: error getting config for fileset nginx/access: Error interpreting the template of the input: template: text:3:22: executing  "text" at <.paths>: range can't iterate over  /usr/local/nginx/logs/access.log
  • 形式二: 通过自定义监控文件门路事项

手动配置Filebeat监控日志文件地位

手动配置指定日志收集起源

要手动配置Filebeat(而不是应用 模块),请在的filebeat.inputs局部中指定输出列表 filebeat.yml。

  • 输出指定Filebeat如何查找和解决输出数据
  • 该列表是一个YAML数组,因而每个输出都以破折号(-)结尾。您能够指定多个输出,并且能够屡次指定雷同的输出类型。

filebeat.yml文件增加配置示例如下:

filebeat.inputs:- type: log  enabled: true  paths:    - /usr/local/nginx/logs/*.log
  • 本示例中的输出/var/log/.log将播种门路中的所有文件,这意味着Filebeat将收集/var/log/ 目录中以.log结尾的所有文件
  • 要从预约义级别的子目录中提取所有文件,请应用以下模式: /var/log//.log。这.log将从的子文件夹中提取所有文件 /var/log。
  • 它不会从/var/log文件夹自身获取日志文件。以后,不可能以递归形式获取目录所有子目录中的所有文件。
Filebeat配置检测
./filebeat test config -e -c ./filebeat.yml

阐明

  • 如果配置文件不在默认门路下,也能够通过-c 命令指定加载配置文件的门路

  • 执行胜利后能够看到 Config OK
FileBeat启动

首次启动

./filebeat setup -e -c ./filebeat.yml 

往后启动

./filebeat -e -c ./filebeat.yml 

-e 是可选的,并将输入发送到规范谬误,而不是配置的日志输入。

后盾启动

nohup ./filebeat -e -c ./filebeat.yml -d "Publish" & > nohup.out

root启动

如果以root用户身份运行Filebeat,就须要更改配置文件的所有权以及modules.d目录中启用的所有配置,或者应用--strict.perms=false指定的名称运行Filebeat

sudo chown root filebeat.ymlsudo chown root modules.d/system.yml 

配置文件所有权和权限

进行filebeat

#查看过程号PIDps aux | grep filebeat#完结过程kill -9 20976

Zookeeper

范畴Node-1,Node-2Node-3

装置筹备

集群解析
IP主机名
10.0.0.21node-1
10.0.0.22node-2
10.0.0.23node-3
#集群解析:有多少台解析多少vim /etc/hosts10.0.0.21 node-110.0.0.22 node-210.0.0.23 node-3

操作流程

上传Zookeeper
解压Zookeeper
cd /elk/tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
配置Zookeeper
cd apache-zookeeper-3.7.0-bin/cd conf/#zoo.cfg是ZK默认读取的配置文件,所以先复制一份示例文件做批改cp zoo_sample.cfg zoo.cfgvim zoo.cfg

node-1

#集群节点间心跳查看距离,单位是毫秒,后续所有和工夫相干的配置都是该值的倍数,进行整数倍的配置,如4等于8000tickTime=2000#集群其余节点与Master通信实现的初始通信工夫限度,这里代表10*2000initLimit=10#若Master节点在超过syncLimit*tickTime的工夫还未收到响应,认为该节点宕机syncLimit=5#数据寄存目录dataDir=/elk/apache-zookeeper-3.7.0-bin/zkData#ZK日志文件寄存门路dataLogDir=/data/zkdata/logs  #ZK服务端口clientPort=2181#单个客户端最大连接数限度,0代表不限度maxClientCnxns=60#快照文件保留的数量autopurge.snapRetainCount=3 #清理快照文件和事务日志文件的频率,默认为0代表不开启,单位是小时autopurge.purgeInterval=1 #server.A=B:C:D 集群设置,#A示意第几号服务器;#B是IP;#C是该服务器与leader通信端口;#D是leader挂掉后从新选举所用通信端口;两个端口号能够随便server.1=node-1:2888:3888server.2=node-2:2888:3888server.3=node-3:2888:3888

node-2

#集群节点间心跳查看距离,单位是毫秒,后续所有和工夫相干的配置都是该值的倍数,进行整数倍的配置,如4等于8000tickTime=2000#集群其余节点与Master通信实现的初始通信工夫限度,这里代表10*2000initLimit=10#若Master节点在超过syncLimit*tickTime的工夫还未收到响应,认为该节点宕机syncLimit=5#数据寄存目录dataDir=/elk/apache-zookeeper-3.7.0-bin/zkData#ZK日志文件寄存门路dataLogDir=/data/zkdata/logs  #ZK服务端口clientPort=2181#单个客户端最大连接数限度,0代表不限度maxClientCnxns=60#快照文件保留的数量autopurge.snapRetainCount=3 #清理快照文件和事务日志文件的频率,默认为0代表不开启,单位是小时autopurge.purgeInterval=1 #server.A=B:C:D 集群设置,#A示意第几号服务器;#B是IP;#C是该服务器与leader通信端口;#D是leader挂掉后从新选举所用通信端口;两个端口号能够随便server.1=node-1:2888:3888server.2=node-2:2888:3888server.3=node-3:2888:3888

node-3

#集群节点间心跳查看距离,单位是毫秒,后续所有和工夫相干的配置都是该值的倍数,进行整数倍的配置,如4等于8000tickTime=2000#集群其余节点与Master通信实现的初始通信工夫限度,这里代表10*2000initLimit=10# 若Master节点在超过syncLimit*tickTime的工夫还未收到响应,认为该节点宕机syncLimit=5#数据寄存目录dataDir=/elk/apache-zookeeper-3.7.0-bin/zkData#ZK日志文件寄存门路dataLogDir=/data/zkdata/logs  #ZK服务端口clientPort=2181#单个客户端最大连接数限度,0代表不限度maxClientCnxns=60#快照文件保留的数量autopurge.snapRetainCount=3 #清理快照文件和事务日志文件的频率,默认为0代表不开启,单位是小时autopurge.purgeInterval=1 #server.A=B:C:D 集群设置,#A示意第几号服务器;#B是IP;#C是该服务器与leader通信端口;#D是leader挂掉后从新选举所用通信端口;两个端口号能够随便server.1=node-1:2888:3888server.2=node-2:2888:3888server.3=node-3:2888:3888
配置数据日志目录myid

Zookeeper节点都须要执行,创立数据目录、日志目录以及myid

#创立数据目录mkdir -p /elk/apache-zookeeper-3.7.0-bin/zkData#创立日志目录mkdir -p /elk/apache-zookeeper-3.7.0-bin/zKData/logs#创立PID(node-1输出的myid为1,node-2的myid为2以此类推)vim /elk/apache-zookeeper-3.7.0-bin/zKData/myid
启动Zookeeper
#进入bin目录cd /elk/apache-zookeeper-3.7.0-bin/bin#启动与监测,查看选举状况./zkServer.sh start./zkServer.sh status

Kafka

Kafka介绍

Kafka是Apache开发的一款分布式消息中间件。消息中间件的呈现让生产者和消费者不间接进行通信,升高了传统音讯传输模式下的耦合性。通过N个生产者进行生产并将数据放在音讯队列中,再由后端N个消费者进行解决,解决了生产速度和生产速度不匹配的问题,还能够防止生产者或者消费者任意一方呈现问题时产生数据失落的状况。

如果音讯队列满了能够思考对音讯队列服务进行扩容。为了防止Kafka数据失落或者数据反复带来的数据不一致性问题,须要服务端、客户端都做好相应配置以及采取一些弥补计划:

  • 生产端:要求不能少生产音讯。比方应用带回调办法的API来确认音讯发 送是否胜利、生产音讯有重试机制等
  • 服务端:要求不能失落音讯。比方对正本做好相干配置
  • 生产端:要求不能少生产音讯

音讯零碎

点对点音讯零碎

生产者发送一条音讯到queue,一个queue能够有很多消费者,然而一个音讯只能被一个消费者承受,当没有消费者可用时,这个音讯会被保留直到有 一个可用的消费者,所以Queue实现了一个牢靠的负载平衡。

公布订阅音讯零碎

发布者发送到topic的音讯,只有订阅了topic的订阅者才会收到音讯。topic实现了公布和订阅,当你公布一个音讯,所有订阅这个topic的服务都能失去这个音讯,所以从1到N个订阅者都能失去这个音讯的拷贝。

Kafka术语

音讯由producer产生,音讯依照topic归类,并发送到broker中,broker中保留了一个或多个topic的音讯,consumer通过订阅一组topic的音讯,通过继续的poll操作从broker获取音讯,并进行后续的音讯解决。

  • Producer :音讯生产者,就是向broker发指定topic音讯的客户端。
  • Consumer :音讯消费者,通过订阅一组topic的音讯,从broker读取音讯的客户端。
  • Broker :一个kafka集群蕴含一个或多个服务器,一台kafka服务器就是一个broker,用于保留producer发送的音讯。一个broker能够包容多个topic。
  • Topic :每条发送到broker的音讯都有一个类别,能够了解为一个队列或者数据库的一张表。
  • Partition:一个topic的音讯由多个partition队列存储的,一个partition队列在kafka上称为一个分区。每个partition是一个有序的队列,多个partition间则是无序的。partition中的每条音讯都会被调配一个有序的id(offset)。
  • Offset:偏移量。kafka为每条在分区的音讯保留一个偏移量offset,这也是消费者在分区的地位。kafka的存储文件都是依照offset.kafka来命名,位于2049地位的即为2048.kafka的文件。比方一个偏移量是5的消费者,示意曾经生产了从0-4偏移量的音讯,下一个要生产的音讯的偏移量是5。
  • Consumer Group (CG):若干个Consumer组成的汇合。这是kafka用来实现一个topic音讯的播送(发给所有的consumer)和单播(发给任意一个consumer)的伎俩。一个topic能够有多个CG。topic的音讯会复制(不是真的复制,是概念上的)到所有的CG,但每个CG只会把音讯发给该CG中的一个consumer。如果须要实现播送,只有每个consumer有一个独立的CG就能够了。要实现单播只有所有的consumer在同一个CG。用CG还能够将consumer进行自在的分组而不须要屡次发送音讯到不同的topic。

如果一个消费者组有两个消费者,订阅了一个具备4个分区的topic的音讯,那么这个消费者组的每一个消费者都会生产两个分区的音讯。消费者组的成员是动静保护的,如果新增或者缩小了消费者组中的消费者,那么每个消费者生产的分区的音讯也会动态变化。比方原来一个消费者组有两个消费者,其中一个消费者因为故障而不能持续生产音讯了,那么剩下一个消费者将会生产全副4个分区的音讯。

kafka装置

范畴Master-2,Node-1,Node-2

运行图解

一次写入,反对多个利用读取,读取信息是雷同的

上传Kafka
解压Kafka
cd /elk/tar -zxvf kafka-3.0.0-src.tgz
配置Kafka
cd /elk/kafka-3.0.0-src/config/vim server.properties

node-1

#集群中每个节点ID不能雷同broker.id=1#Kafka音讯寄存门路,并不是日志,kafka的日志会主动生成到其它目录中log.dirs=/data/kafka/log#zk服务地址与端口zookeeper.connect=10.0.0.11:2181,10.0.0.12:2181,10.0.0.13:2181#kafka监听端口listeners=PLAINTEST://10.0.0.11:9092#优化配置#日志从内存刷到磁盘的阈值,达到这个数量就落盘,通常要缩小落盘的频率log.flush.interval.message=10000#日志落盘后保留多少小时,超时则删除,即使没有生产,防止磁盘写满log.retention.hours=168#单个日志的大小,超出则创立新的日志,删掉旧的日志log.segment.bytes=1073741824#检测日志是否达到删除条件的周期#通常只须要批改server.properties这个文件,尽管还>有生产者、消费者的属性文件,然而个别都>是由程序去管制log.retention.check.interval.ms=300000

node-2

#集群中每个节点ID不能雷同broker.id=2#Kafka音讯寄存门路,并不是日志,kafka的日志会主动生成到其它目录中log.dirs=/data/kafka/log#zk服务地址与端口zookeeper.connect=10.0.0.11:2181,10.0.0.12:2181,10.0.0.13:2181#kafka监听端口listeners=PLAINTEST://10.0.0.12:9092#优化配置#日志从内存刷到磁盘的阈值,达到这个数量就落盘,通常要缩小落盘的频率log.flush.interval.message=10000#日志落盘后保留多少小时,超时则删除,即使没有生产,防止磁盘写满log.retention.hours=168#单个日志的大小,超出则创立新的日志,删掉旧的日志log.segment.bytes=1073741824#检测日志是否达到删除条件的周期#通常只须要批改server.properties这个文件,尽管还>有生产者、消费者的属性文件,然而个别都>是由程序去管制log.retention.check.interval.ms=300000

node-3

#集群中每个节点ID不能雷同broker.id=3#Kafka音讯寄存门路,并不是日志,kafka的日志会主动生成到其它目录中log.dirs=/data/kafka/log#zk服务地址与端口zookeeper.connect=10.0.0.11:2181,10.0.0.12:2181,10.0.0.13:2181#kafka监听端口listeners=PLAINTEST://10.0.0.13:9092#优化配置#日志从内存刷到磁盘的阈值,达到这个数量就落盘,通常要缩小落盘的频率log.flush.interval.message=10000#日志落盘后保留多少小时,超时则删除,即使没有生产,防止磁盘写满log.retention.hours=168#单个日志的大小,超出则创立新的日志,删掉旧的日志log.segment.bytes=1073741824#检测日志是否达到删除条件的周期#通常只须要批改server.properties这个文件,尽管还>有生产者、消费者的属性文件,然而个别都>是由程序去管制log.retention.check.interval.ms=300000

启动Kafka

#应用kafka-server-start.sh脚本挂后盾启动nohup /elk/kafka-3.0.0-src/bin/kafka-server-start.sh /elk/kafka-3.0.0-src/config/server.properties &#另一种后盾启动形式bin/kafka-server-start.sh -daemon config/server.properties
kafka发送音讯与生产信息
应用Kafka

应用kafka-topics.sh脚本实现topic的创立、查看与删除,因为topic名称抵触限度,topic名称不能同时蕴含.下划线_

#创立topic,如果ZK是集群的话,轻易写一个地址都能够/elk/kafka-3.0.0-src/bin/kafka-topics.sh --create --bootstrap-server 10.0.0.11:9092 --replication-factor 1 --partitions 1 --topic test_topic#--zookeeper;#--replication-factor:topic的总正本数,1代表主备节点总共只有一个正本,相当于没有备份,所以通常3节点的话设置为2#--partitions:topic分区的数量,通常和节点数保持一致#--topic:队列名字#查看topic/elk/kafka-3.0.0-src/bin/kafka-topics.sh --list --bootstrap-server 10.0.0.11:9092#查看topic详细信息,蕴含分区、正本与Leader状况kafka-topics.sh --describe --topic test --zookeeper 10.0.0.11:2181 #删除topickafka-topics.sh --zookeeper 10.0.0.11:2181,10.0.0.12:2181,10.0.0.13:2181 --delete --topic test_topic

在2个终端下别离应用上面的脚本模仿数据生产与生产过程

#在hello这个队列中开始生产数据kafka-console-producer.sh --broker-list localhost:9092 --topic hello#从队列头部开始生产数据kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic hello --from-beginning

登录Zookeeper验证,任意一台ZK节点应该都能够看到topic的信息。不过这里看到的只是信息而已,数据其实还是在Kfaka中。先看看ZK中的数据是怎么样的:

在Kfaka配置文件中log.dirs所指定的目录中,寄存了topic数据目录,在创立topic时配置了几个分区就会生成几份目录(如果创立topic时--partitions设定的是1,而Kfaka又有5个集群的话,那数据只会在一个节点上看到,ZK这个时候就施展出作用了,它能告知用户数据在哪台上)。每个目录中的.log文件保留有队列中的音讯,生产者生产的音讯都会追加到log文件的尾部。而.index文件则记录了数据偏移量,依据这个疾速查问到log中的数据。

扩容kafka

首先要明确扩容的话意味着须要减少Kafka节点,所以第一件事就是在新节点上部署好Kafka,配置要和之前节点统一

登录ZK节点而后查看ids信息,如果发现新节点代表Kafka扩容是胜利的

Prometheus

基于docker 搭建Prometheus+Grafana

Prometheus简介

起源背景

Prometheus(普罗米修斯)是一套开源的监控&报警&工夫序列数据库的组合,由SoundCloud公司开发的。

技术原理

通过HTTP协定周期性抓取被监控组件的状态,益处是只需HTTP即可监控,非常适合虚拟化环境,比方VM或者Docker 。

Prometheus应该是为数不多的适宜Docker、Mesos、Kubernetes环境的监控零碎之一。

输入被监控组件信息的HTTP接口被叫做exporter 。

目前互联网公司罕用的组件大部分都有exporter能够间接应用,比方Varnish、Haproxy、Nginx、MySQL、Linux 零碎信息 (包含磁盘、内存、CPU、网络等等),具体反对的源看:https://github.com/prometheus

次要特点

Prometheus的次要特点

一个多维数据模型(工夫序列由指标名称定义和设置键/值尺寸)
高效存储,均匀一个采样数据占~3.5bytes左右,320万的工夫序列,每30秒采样,放弃60天,耗费磁盘大略228G
一种灵便的查询语言
不依赖分布式存储,单个服务器节点
工夫汇合通过HTTP上的PULL模型进行
通过两头网关反对推送工夫
通过服务发现或动态配置发现指标
多种模式的图形和仪表板反对
整体架构

Prometheus及其生态系统组件的整体架构

生态组件
Prometheus daemon责定时去指标上抓取metrics(指标) 数据,每个抓取指标须要裸露一个http服务的接口给它定时抓取
Prometheus反对通过配置文件、文本文件
Alertmanager独立于Prometheus的一个组件,能够反对Prometheus的查问语句,提供非常灵便的报警形式。
PushGateway反对Client被动推送
数据模型

Prometheus所有的存储由按工夫序列实现

雷同的metrics(指标名称) +label(一个或多个标签) =一条工夫序列

不同的label示意不同的工夫序列。

metrics(指标名称):自定义命名的监测对像

label(一个或多个标签:对一条工夫序列不同维度的辨认

数据类型
  • Counter:用于累计值

如:记录申请次数、工作实现数、谬误产生次数。始终减少,不会缩小。重启过程后,会被重置。

例如:

http_response_total{method=”GET”,endpoint=”/api/tracks”} 100,10秒后抓取 http_response_total{method=”GET”,endpoint=”/api/tracks”} 100

  • Gauge:惯例数值

如:温度变动、内存应用变动。可变大,可变小。重启过程后,会被重置

例如:

memory_usage_bytes{host=”master-01″} 100 < 抓取值、

memory_usage_bytes{host=”master-01″} 30、

memory_usage_bytes{host=”master-01″} 50、

memory_usage_bytes{host=”master-01″} 80 < 抓取值。

  • Histogram:柱状图,用于跟踪事件产生的规模

如:申请耗时、响应大小。它特别之处是能够对记录的内容进行分组,提供count和sum全副值的性能。

例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值。

  • Summary:用于跟踪事件产生的规模

如:申请耗时、响应大小。同样提供 count 和 sum 全副值的性能。

例如:count=7次,sum=7次的值求值。

它提供一个quantiles的性能,能够按%比划分跟踪的后果。例如:quantile取值0.95,示意取采样值外面的95%数据。

Prometheus装置

范畴Master-1

服务器IP主机名软件列表
10.0.0.11Master-1Prometheus+grafana,node_exporter
10.0.0.12Master-2node_exporter
10.0.0.21Node-1node_exporter
10.0.0.22Node-2node_exporter
10.0.0.23Node-3node_exporter

装置Prometheus(docker版)

  • node_exporter – 用于机器零碎数据收集
  • Prometheus - 用于监控机器
装置docker
#yum 包更新到最新sudo yum update -y#装置须要的软件包, yum-util 提供yum-config-manager性能,另外两个是devicemapper驱动依赖的sudo yum install -y yum-utils device-mapper-persistent-data lvm2#设置yum源为阿里云sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#装置docker后查看sudo yum install docker-ce -y;docker -v;#配置镜像减速mkdir -p /etc/docker;cd /etc/docker;vi daemon.json;

Docker 官网和国内很多云服务商都提供了国内加速器服务,例如:

  • 网易:https://hub-mirror.c.163.com
  • 七牛云加速器(举荐):https://reg-mirror.qiniu.com
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
#重新启动服务systemctl daemon-reload;systemctl restart docker;#查看减速是否失效docker info;#启动dockersystemctl start docker#查看docker状态systemctl status docker#开机启动systemctl enable docker#重启检测开机自启reboot
拉取镜像
docker pull prom/node-exporterdocker pull prom/prometheusdocker pull grafana/grafanadocker pull google/cadvisor
启动node-exporter

(须要被监测的机器都须要装置)

docker run -d -p 9100:9100 \-v "/proc:/host/proc" \-v "/sys:/host/sys" \-v "/:/rootfs" \-v "/etc/localtime:/etc/localtime" \--net=host \prom/node-exporter \--path.procfs /host/proc \--path.sysfs /host/sys \--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

开启端口

firewall-cmd --zone=public --add-port=9100/tcp --permanent;firewall-cmd --zone=public --add-service=http --permanent;firewall-cmd --zone=public --add-service=https --permanent;firewall-cmd --reload;firewall-cmd --list-all;#看到9100端口的服务即可netstat -anpt;#开机自启动docker update --restart=always 容器IDdocker update --restart=always cadvisor

查看node-exporter

#浏览器查看http://10.0.0.11:9100/metrics
装置cAdvisor

监控Docker容器

docker run                                    \--volume=/:/rootfs:ro                         \--volume=/var/run:/var/run:rw                 \--volume=/sys:/sys:ro                         \--volume=/var/lib/docker/:/var/lib/docker:ro  \--publish=9200:8080                           \--detach=true                                 \--name=cadvisor                               \google/cadvisor:latest

开启端口

firewall-cmd --zone=public --add-port=9200/tcp --permanent;firewall-cmd --zone=public --add-service=http --permanent;firewall-cmd --zone=public --add-service=https --permanent;firewall-cmd --reload;firewall-cmd --list-all;#看到9200端口的服务即可netstat -anpt;#开机自启动docker update --restart=always 容器IDdocker update --restart=always eager_nobel
#浏览器拜访http://10.0.0.11:9200
启动prometheus

(仅监测主机-Master-1)

mkdir -p /data/module/prometheuscd /data/module/prometheus/vim prometheus.yml
# my global configglobal:  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.  # scrape_timeout is set to the global default (10s).# Alertmanager configurationalerting:  alertmanagers:    - static_configs:        - targets:          # - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.rule_files:  # - "first_rules.yml"  # - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself.scrape_configs:  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.  - job_name: "prometheus"    # metrics_path defaults to '/metrics'    # scheme defaults to 'http'.    static_configs:      - targets: ["localhost:9000"]

Prometheus启动

创立容器
docker run  -d -p 9000:9090 -v /data/module/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
开启端口
firewall-cmd --zone=public --add-port=9000/tcp --permanent;firewall-cmd --zone=public --add-service=http --permanent;firewall-cmd --zone=public --add-service=https --permanent;firewall-cmd --reload;firewall-cmd --list-all;#看到9000端口的服务即可netstat -anpt;#开机自启动docker update --restart=always 容器IDdocker update --restart=always dcdf7614cb00
查看Prometheus
#浏览器查看http://10.0.0.11:9000/graph

Grafana

Grafana简介
Grafana装置

范畴Master-1

#创立数据目录mkdir -p /data/module/grafana-storage#赋予权限,因为grafana用户会在这个目录写入文件,777比较简单粗犷!chmod 777 -R /data//module/grafana-storage/
Grafana启动
docker run -d \  -p 9300:3000 \  --name=grafana \  -v /data/module/grafana-storage:/var/lib/grafana \  grafana/grafana

开启端口

firewall-cmd --zone=public --add-port=9300/tcp --permanent;firewall-cmd --zone=public --add-service=http --permanent;firewall-cmd --zone=public --add-service=https --permanent;firewall-cmd --reload;firewall-cmd --list-all;#看到9300端口的服务即可netstat -anpt;

拜访 Grafana

#浏览器查看http://10.0.0.11:9300/

默认账号密码都是admin

登陆后会强制批改明码