从0开始使用Docker搭建ELK日志分析系统(公司内网)

本文详细介绍了如何在CentOS7服务器上使用Docker部署ELK堆栈,包括ElasticSearch、Logstash和Kibana的安装、配置及验证过程。通过下载特定版本的RPM包安装Docker,再从Docker Hub拉取镜像,最终实现日志数据的收集、存储和可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建OS环境

CentOS 7 的服务器(本次ES服务为单节点)

系统构成

使用Logstash进行日志数据收集,将收集的数据转发到ElasticSearch,最后在Kibana进行BI展现

前期准备

下载CentOS用Docker安装相关RPM包
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

本文下载了以下三个RPM文件
docker-ce-19.03.7-3.el7.x86_64.rpm
docker-ce-cli-19.03.7-3.el7.x86_64.rpm
containerd.io-1.2.6-3.3.el7.x86_64.rpm

安装命令:

yum install *.rpm

安装中可能还需要container-selinux
你可以去Centos官网下载并安装

下载相关Docker Image
你可以在外网环境直接Pull Docker Image

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
docker pull docker.elastic.co/logstash/logstash:7.6.2
docker pull docker.elastic.co/kibana/kibana:7.6.2

启动Docker

sudo systemctl start docker

也可以在内网环境加载代理后再运行Pull命令
需要下载其他版本的话,可以把7.6.2替换成其他版本

安装及配置

启动ES镜像

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2

多节点的话,可以参考官网的说明
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/docker.html

启动Kibana镜像

docker run --link 你的ES镜像名称或者ID:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:7.6.2

启动Logstash镜像

配置数据收集Pipline

input {
  tcp {
    port => 5044
    codec => json
  }
}
output {
   elasticsearch {
      hosts => ["IP:9200"]
      index => "log_collection_%{+YYYY.MM}"
      document_type => "logs"
   }
}

启动镜像

docker run --rm -it -v 你的本地Pipline目录:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:7.6.2

验证环境

浏览器访问http://IP:5601能够正确访问Kibana及ES
往5044端口发送一条JSON数据能够再Kibana中正确显示即可

如果有幸帮到你,请帮我点个【赞】

<think>好的,我现在需要帮用户解决在10台欧拉系统的内网工控机上快速部署应用并监控的问题。首先,我得理清楚用户的需求和环境情况。用户提到的是欧拉系统,可能指的是华为的openEuler,对吧?内网环境意味着这些工控机可能无法直接访问互联网,所以在部署工具的选择上需要考虑离线方案。 接下来,用户想要快速部署应用。手动逐台操作显然效率太低,所以自动化部署工具是必须的。常见的工具有Ansible、SaltStack、Chef、Puppet等。不过,考虑到内网环境,可能需要先在内网搭建一个仓库或者镜像源,用来存放安装包和依赖项。例如,Ansible基于SSH,不需要在目标机器上安装客户端,可能比较适合这个场景。但需要确保所有工控机已经配置了SSH免密登录,否则每次执行命令都需要输入密码,会影响自动化。 然后是应用打包的问题。用户的应用可能需要依赖特定的库或环境,使用Docker容器化是一个好办法,但工控机是否支持容器运行时?如果欧拉系统已经安装了Docker或者Podman,那就可以用容器部署。否则,可能需要用二进制包或者源码编译。不过,内网环境下,可能需要提前下载好所有依赖,或者搭建一个本地软件仓库。 版本管理方面,用户可能希望有回滚机制,所以部署工具应该支持版本控制,或者使用Git来管理配置文件和脚本,这样每次更改都有记录,方便回退。 关于监控部分,用户需要实时监控应用运行状态和系统指标。Prometheus加Grafana是常用的组合,但同样需要在内网部署。Node Exporter可以收集主机指标,可能需要每个工控机都安装并配置好。此外,日志收集可以用Elasticsearch、Logstash、Kibana(ELK)或者Loki+Promtail+Grafana的方案。但内网环境下,这些组件都需要离线安装,可能需要提前下载好所有安装包。 安全性也是一个考虑因素,内网虽然相对安全,但部署和监控系统的通信是否需要加密?例如,Prometheus拉取数据是否需要TLS,或者SSH的密钥管理是否足够安全。 步骤方面,可能需要分阶段:准备阶段、部署阶段、监控阶段、维护阶段。每个阶段需要具体步骤,比如准备阶段配置SSH免密登录、搭建本地仓库;部署阶段编写Ansible Playbook或者脚本;监控阶段安装配置Prometheus exporters和Grafana等。 另外,用户提到工控机,可能对稳定性要求较高,所以部署和监控工具不能占用太多资源,或者需要优化配置,避免影响原有应用运行。 可能遇到的问题包括:工控机的欧拉系统版本是否一致,是否需要统一系统更新;内网防火墙规则是否允许必要的端口通信;如何确保所有机器的时钟同步,以便日志时间戳一致;监控数据的存储周期和容量规划等。 最后,需要验证部署和监控是否成功,比如通过Ansible执行命令检查应用状态,查看Grafana仪表盘是否有数据,测试日志收集是否正常等。</think>以下是在内网环境下快速部署应用并监控的步骤指南: --- ### 一、部署准备阶段 1. **配置SSH免密登录** ```bash # 生成密钥对(在控制机执行) ssh-keygen -t rsa # 批量分发公钥到10台工控机 for ip in {192.168.1.1..192.168.1.10}; do ssh-copy-id -i ~/.ssh/id_rsa.pub user@$ip done ``` 2. **搭建内网仓库** - 使用Nginx或Minio搭建本地YUM/DNF仓库(存放openEuler RPM包) - 创建Docker镜像仓库(如Harbor)存放应用容器镜像 --- ### 二、自动化部署实施 1. **选择工具** 推荐使用Ansible(无需客户端): ```bash # 安装Ansible(控制机) dnf install ansible -y ``` 2. **编写Ansible Playbook** ```yaml # deploy_app.yml - hosts: all tasks: - name: 安装Docker运行时 dnf: name: docker state: present - name: 从内网仓库拉取应用镜像 shell: docker pull harbor.local/myapp:latest - name: 启动容器 docker_container: name: myapp image: harbor.local/myapp:latest ports: 8080:80 state: started ``` 3. **执行部署** ```bash ansible-playbook -i hosts.ini deploy_app.yml ``` --- ### 三、监控系统搭建 1. **主机监控** - **部署Node Exporter**(每台工控机): ```bash # 通过Ansible批量安装 ansible all -m shell -a "wget http://repo.local/node_exporter.tar.gz && tar -zxvf node_exporter.tar.gz" ``` - **配置Prometheus**(控制机): ```yaml # prometheus.yml scrape_configs: - job_name: 'node' static_configs: - targets: ['192.168.1.1:9100', '192.168.1.2:9100', ..., '192.168.1.10:9100'] ``` 2. **应用日志收集** - 使用Loki+Promtail: ```bash # 每台工控机部署Promtail ansible all -m copy -a "src=promtail.yml dest=/etc/promtail/config.yml" ``` 3. **可视化仪表盘** - 部署Grafana并导入模板(ID:8919 for Node Exporter) --- ### 四、维护优化 1. **版本回滚** ```bash # 通过Ansible回滚容器镜像版本 ansible all -m docker_container -a "image=harbor.local/myapp:v1.0 name=myapp state=started force=yes" ``` 2. **监控告警** 在Prometheus中配置Alertmanager规则: ```yaml # alert.rules groups: - name: host-alert rules: - alert: 高CPU使用率 expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m ``` --- ### 五、验证流程 1. **部署验证** ```bash ansible all -m shell -a "docker ps | grep myapp" ``` 2. **监控验证** - 访问 `http://grafana.local:3000` 检查仪表盘数据 - 执行 `curl http://192.168.1.1:9100/metrics` 验证Node Exporter --- ### 关键注意事项 1. **网络隔离** 确保防火墙开放以下端口: $$ \begin{aligned} &\text{SSH: 22} \\ &\text{Prometheus: 9090} \\ &\text{Grafana: 3000} \\ &\text{Node Exporter: 9100} \end{aligned} $$ 2. **资源限制** 为监控组件分配独立资源(建议配置): $$ \text{Grafana: 2核CPU/2GB内存} \\ \text{Prometheus: 4核CPU/8GB内存(根据数据量调整)} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值