IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Mac 使用Docker-compose搭建Log4js+ELK日志收集系统 -> 正文阅读

[系统运维]Mac 使用Docker-compose搭建Log4js+ELK日志收集系统

架构服务

服务功能
log4js日志输出
logstash日志过滤
elasticsearch日志存储
kibana日志可视化

文件夹结构

在这里插入图片描述

docker-compose.yml

version: '3.7'
services:
  elasticsearch:
    image: elasticsearch:7.6.2
    container_name: elasticsearch
    privileged: true
    user: root
    environment:
      #设置集群名称为elasticsearch
      - cluster.name=elasticsearch 
      #以单一节点模式启动
      - discovery.type=single-node 
      #设置使用jvm内存大小
      - ES_JAVA_OPTS=-Xms512m -Xmx512m 
    volumes:
      - /Users/brook/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /Users/brook/elk/elasticsearch/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300

  logstash:
    image: logstash:7.6.2
    container_name: logstash
    ports:
       - 4560:4560
    privileged: true
    environment:
      - TZ=Asia/Shanghai
    volumes:
      #挂载logstash的配置文件
      - /Users/brook/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf 
    depends_on:
      - elasticsearch 
    links:
      #可以用es这个域名访问elasticsearch服务
      - elasticsearch:es 
    

  kibana:
    image: kibana:7.6.2
    container_name: kibana
    ports:
        - 5601:5601
    privileged: true
    links:
      #可以用es这个域名访问elasticsearch服务
      - elasticsearch:es 
    depends_on:
      - elasticsearch 
    environment:
      #设置访问elasticsearch的地址
      - elasticsearch.hosts=http://es:9200 

Docker 安装ELK

  1. 进入文件夹
    cd /Users/brook/elk/docker
  2. 执行
    docker-compose up -d
  3. 赋权限
    chmod 777 /Users/brook/elk/elasticsearch/data

设置密码

elasticsearch

  1. 进入容器
    docker exec -it elasticsearch bash
  2. 修改elasticsearch.yml文件
    vi config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# 开启安全控制
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
  1. 重启elasticsearch
    exit
    docker restart elasticsearch
  2. 创建密码
    4.1 进入容器
    docker exec -it elasticsearch /bin/bash
    4.2 设置密码-随机生成密码
    elasticsearch-setup-passwords auto
    4.3 设置密码-手动设置密码
    elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana]: 
Reenter password for [kibana]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

4.4 访问
curl 127.0.0.1:9200 -u elastic:123456

{
  "name" : "a11d93b7881d",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "w1OsXWaPREWO7V_CZAE5mA",
  "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"
}

kibana

  1. 进入容器
    docker exec -it kibana bash
  2. 修改 kibana.yml 文件
    vi config/kibana.yml
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "elastic"  # es账号
elasticsearch.password: "123456"   # es密码
i18n.locale: zh-CN # 中文
  1. 重启kibana
    docker restart kibana

账号密码

  1. elasticsearch
    http://localhost:9200/
    账号:elastic
    密码:123456
  2. kibana
    http://localhost:5601/
    账号:elastic
    密码:123456

logstash.conf

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json
  }
}
output {
  
    elasticsearch {
          hosts => "es:9200"
          index => "%{indexname}-logs-%{+YYYY.MM.dd}"
          user => "elastic"
          password => "123456"
    }
  
}

indexname:获取log4js定义的名称

  1. 重启logstash
    docker restart logstash

log4js配置使用

  1. 项目中安装log4js
    npm insetll log4js
  2. 新建logger.ts文件
var log4js = require('log4js');
import { logstashServer } from '@/config';
// logstashServer.host: 127.0.0.1
// logstashServer.port: 4560
if (!logstashServer.host || !logstashServer.port) {
  console.log('ERROR not config logstash_host or logstash_port');
}

const appendersConfig = {
  appenders: {
    console: { type: 'console' },
    logstash: {
      type: 'log4js-logstash-tcp',
      host: logstashServer.host,
      port: parseInt(logstashServer.port),
      fields: {
        appName: 'node-log-stash',
        indexname: 'default',  // 对应logstash中的%{indexname}
      },
    },
  },
  categories: {
    default: { appenders: ['logstash'], level: 'info' },
  },
};

export class Logger {
  // 错误
  static errorLog(code, message) {
    const level = 'error';
    appendersConfig.appenders.logstash.fields.indexname = `yl-app-${level}`; // 替换
    appendersConfig.categories.default.level = level; // 替换
    log4js.configure(appendersConfig);
    const logger = log4js.getLogger('default');
    logger.level = level;
    logger.error({ errorCode: code, message: message });
  }
}
  1. 收集log
import express from 'express';
const router: express.Router = express.Router();
import { failRes, resSuccess } from '@/utils/utils';
import _ from 'lodash';
import { Logger } from '@/utils/logger';

router.get('/app/error', async function (req: any, res: express.Response) {
  try {
    Logger.errorLog(23003, '账户密码错误');
    res.send(resSuccess('Error', ''));
  } catch (err) {
    res.send(failRes(err.code, err.message));
  }
});

export default router;

安装elasticsearch-head

  1. 打开chrome网上应用商店

  2. 搜索elasticsearch-head
    在这里插入图片描述

  3. 打开后连接es: http://localhost:9200/
    在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章           查看所有文章
加:2022-03-12 18:00:11  更:2022-03-12 18:04:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:16:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码